33 lines
798 B
Kotlin
33 lines
798 B
Kotlin
package moe.kageru.spektacles
|
|
|
|
import kotlin.system.measureTimeMillis
|
|
|
|
|
|
fun main() {
|
|
val res = measureTimeMillis {
|
|
IoHandler.readFile("test.log")
|
|
.map { ParsedLine.parse(it) }
|
|
.filterNotNull()
|
|
.filter { line -> line.user.exists { it == "kageru_" } }
|
|
.flatMap { it.message.split(' ').asSequence() }
|
|
//.flatMap { it.message.split(' ').k() }
|
|
//.toCounter()
|
|
//.counts["selphyDango"]
|
|
}
|
|
println(res)
|
|
}
|
|
|
|
class Counter<T>(source: Iterable<T>) : Iterable<T> {
|
|
val counts = mutableMapOf<T, Int>().apply {
|
|
for (element in source) {
|
|
this[element] = this.getOrDefault(element, 0) + 1
|
|
}
|
|
}
|
|
|
|
override fun iterator(): Iterator<T> {
|
|
return counts.keys.iterator()
|
|
}
|
|
}
|
|
|
|
fun <T> Iterable<T>.toCounter(): Counter<T> = Counter(this)
|