fork download
  1. import scala.io.Source;
  2.  
  3. object Main extends App {
  4. private def parse(strings: Iterator[String], list: List[String] = Nil): Iterator[List[String]] = {
  5. def asIterator(list: List[String]) = Iterator(list).filter(_.nonEmpty)
  6.  
  7. if (!strings.hasNext) asIterator(list) else {
  8. val blockStart = "\\d+".r
  9. strings.next() match {
  10. case number @ blockStart(_*)
  11. asIterator(list) ++ parse(strings, List(number))
  12.  
  13. case string ⇒
  14. parse(strings, list ++ List(string))
  15. }
  16. }
  17. }
  18.  
  19. val source = Source.fromString("1\r\nTakbir\r\nAllahu akbar\r\n2\r\nAllahu akbar") // Source.fromFile("govno.txt")
  20. parse(source.getLines()).foreach(println)
  21. }
Success #stdin #stdout 0.38s 322240KB
stdin
Standard input is empty
stdout
List(1, Takbir, Allahu akbar)
List(2, Allahu akbar)