Refactor asCamelCase to use string builder (#6141)
parent
5d5358ae45
commit
cbc449d3b6
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue