Skip to content

Instantly share code, notes, and snippets.

@hyukhur
Last active April 14, 2017 04:44
Show Gist options
  • Save hyukhur/958a8d57f1cac742735785e2438c8588 to your computer and use it in GitHub Desktop.
Save hyukhur/958a8d57f1cac742735785e2438c8588 to your computer and use it in GitHub Desktop.
Removing string parameters with enum chains
public enum Events {
case home(category: Category)
case card(category: Category)
case briefing(category: Category)
case setting(category: Category)
var string: String {
return ""
}
var category: Category {
switch self {
case .home(category: let category):
return category
case .card(category: let category):
return category
case .briefing(category: let category):
return category
case .setting(category: let category):
return category
}
}
}
public enum Category {
case none(action: Action)
case menu(action: Action)
case canvas(action: Action)
var string: String {
return ""
}
var action: Action{
switch self {
case .none(action: let action):
return action
case .menu(action: let action):
return action
case .canvas(action: let action):
return action
}
}
}
public enum Action {
case breifing(value: Value)
case setting(value: Value)
case timer(value: Value)
var string: String {
return ""
}
var value: Value{
switch self {
case .breifing(value: let value):
return value
case .setting(value: let value):
return value
case .timer(value: let value):
return value
}
}
}
public enum Value {
case none
case open
case close
var string: String {
return ""
}
}
func sendEvent(events: Events) {
let eventString = events.string
let categoryString = events.category.string
let actionString = events.category.action.string
let valueString = events.category.action.value.string
EventManager.sendEvent(event: eventString, category: categoryString, action: actionString, value: valueString)
}
func call() {
sendEvent(events: .briefing(category: .canvas(action: .setting(value: .close))))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment