1
0
Fork 0

Refactor asCamelCase to use string builder (#6141)

master
Tiger Oakes 2019-10-22 14:33:44 -07:00 committed by Sawyer Blatz
parent 5d5358ae45
commit cbc449d3b6
2 changed files with 22 additions and 6 deletions

View File

@ -47,15 +47,31 @@ private class EventWrapper<T : Enum<T>>(
private val recorder: ((Map<T, String>?) -> Unit), private val recorder: ((Map<T, String>?) -> Unit),
private val keyMapper: ((String) -> T)? = null private val keyMapper: ((String) -> T)? = null
) { ) {
private val String.asCamelCase: String
get() = this.split("_").reduceIndexed { index, acc, s -> /**
if (index == 0) acc + s * Converts snake_case string to camelCase.
else acc + s.capitalize() */
private fun String.asCamelCase(): String {
val parts = split("_")
val builder = StringBuilder()
for ((index, part) in parts.withIndex()) {
if (index == 0) {
builder.append(part)
} else {
builder.append(part[0].toUpperCase())
builder.append(part.substring(1))
}
} }
return builder.toString()
}
fun track(event: Event) { fun track(event: Event) {
val extras = if (keyMapper != null) { val extras = if (keyMapper != null) {
event.extras?.mapKeys { keyMapper.invoke(it.key.toString().asCamelCase) } event.extras?.mapKeys { (key) ->
keyMapper.invoke(key.toString().asCamelCase())
}
} else { } else {
null null
} }

View File

@ -297,7 +297,7 @@ sealed class Event {
} }
override val extras: Map<Events.browserMenuActionKeys, String>? override val extras: Map<Events.browserMenuActionKeys, String>?
get() = mapOf(Events.browserMenuActionKeys.item to item.toString().toLowerCase()) get() = mapOf(Events.browserMenuActionKeys.item to item.toString().toLowerCase(Locale.ROOT))
} }
sealed class Search sealed class Search