private def parse
(strings
: Iterator
[String
], list
: List
[String
] = Nil
): Iterator
[List
[String
]] = { def asIterator
(list
: List
[String
]) = Iterator
(list
).
filter(_.
nonEmpty)
if (!strings.
hasNext) asIterator
(list
) else { val blockStart
= "\\d+".
r case number
@ blockStart
(_*) ⇒
asIterator(list) ++ parse(strings, List(number))
parse(strings, list ++ List(string))
}
}
}
val source
= Source.
fromString("1\r\nTakbir\r\nAllahu akbar\r\n2\r\nAllahu akbar") // Source.fromFile("govno.txt") parse(source.getLines()).foreach(println)
}
aW1wb3J0IHNjYWxhLmlvLlNvdXJjZTsKCm9iamVjdCBNYWluIGV4dGVuZHMgQXBwIHsKCXByaXZhdGUgZGVmIHBhcnNlKHN0cmluZ3M6IEl0ZXJhdG9yW1N0cmluZ10sIGxpc3Q6IExpc3RbU3RyaW5nXSA9IE5pbCk6IEl0ZXJhdG9yW0xpc3RbU3RyaW5nXV0gPSB7CgkJZGVmIGFzSXRlcmF0b3IobGlzdDogTGlzdFtTdHJpbmddKSA9IEl0ZXJhdG9yKGxpc3QpLmZpbHRlcihfLm5vbkVtcHR5KQoJCQoJCWlmICghc3RyaW5ncy5oYXNOZXh0KSBhc0l0ZXJhdG9yKGxpc3QpIGVsc2UgewoJCQl2YWwgYmxvY2tTdGFydCA9ICJcXGQrIi5yCgkJCXN0cmluZ3MubmV4dCgpIG1hdGNoIHsKCQkJCWNhc2UgbnVtYmVyIEAgYmxvY2tTdGFydChfKikg4oeSCgkJCQkJYXNJdGVyYXRvcihsaXN0KSArKyBwYXJzZShzdHJpbmdzLCBMaXN0KG51bWJlcikpCgkJCQkJCgkJCQljYXNlIHN0cmluZyDih5IKCQkJCQlwYXJzZShzdHJpbmdzLCBsaXN0ICsrIExpc3Qoc3RyaW5nKSkKCQkJfQoJCX0KCX0KCgl2YWwgc291cmNlID0gU291cmNlLmZyb21TdHJpbmcoIjFcclxuVGFrYmlyXHJcbkFsbGFodSBha2JhclxyXG4yXHJcbkFsbGFodSBha2JhciIpIC8vIFNvdXJjZS5mcm9tRmlsZSgiZ292bm8udHh0IikKCXBhcnNlKHNvdXJjZS5nZXRMaW5lcygpKS5mb3JlYWNoKHByaW50bG4pCn0=