3 ms·
scala? #!/usr/bin/env amm import $ivy.`io.circe::circe-core:0.5.1` import $ivy.`io.circe::circe-generic:0.5.1` import $ivy.`io.circe::circe-parser:0
by asa400 10y ago
scala?
#!/usr/bin/env amm
import $ivy.`io.circe::circe-core:0.5.1`
import $ivy.`io.circe::circe-generic:0.5.1`
import $ivy.`io.circe::circe-parser:0.5.1`
import io.circe._, io.circe.generic.auto._, io.circe.parser._, io.circe.syntax._
val bookOrder = Array("Genesis", "Exodus", /* and so forth */).zipWithIndex.toMap
type Bible = Map[String, Map[Int, Map[Int, String]]]
val bible = /* load the json file */
decode[Bible](bible).map { parse =>
(
for {
(bookName, book) <- parse
(chapterNo, chapter) <- book
(verseNo, verse) <- chapter
} yield (bookName, chapterNo, verseNo, verse)
)
.toList
.sortBy { b =>
(bookOrder.get(b._1), b._2, b._3, b._4)
}
}.foreach(_.foreach(println))