Refactor asCamelCase to use string builder (#6141)
This commit is contained in:
parent
5d5358ae45
commit
cbc449d3b6
|
@ -47,15 +47,31 @@ private class EventWrapper<T : Enum<T>>(
|
|||
private val recorder: ((Map<T, String>?) -> Unit),
|
||||
private val keyMapper: ((String) -> T)? = null
|
||||
) {
|
||||
private val String.asCamelCase: String
|
||||
get() = this.split("_").reduceIndexed { index, acc, s ->
|
||||
if (index == 0) acc + s
|
||||
else acc + s.capitalize()
|
||||
|
||||
/**
|
||||
* Converts snake_case string to camelCase.
|
||||
*/
|
||||
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) {
|
||||
val extras = if (keyMapper != null) {
|
||||
event.extras?.mapKeys { keyMapper.invoke(it.key.toString().asCamelCase) }
|
||||
event.extras?.mapKeys { (key) ->
|
||||
keyMapper.invoke(key.toString().asCamelCase())
|
||||
}
|
||||
} else {
|
||||
null
|
||||
}
|
||||
|
|
|
@ -297,7 +297,7 @@ sealed class Event {
|
|||
}
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue
Block a user