Last active
April 14, 2017 04:44
-
-
Save hyukhur/958a8d57f1cac742735785e2438c8588 to your computer and use it in GitHub Desktop.
Removing string parameters with enum chains
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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