in src/main/scala/com/twitter/scaffold/Document.scala [27:48]
private def parse(text: Array[Char]): Option[Document] = {
import collection.JavaConverters.asScalaBufferConverter
import collection.mutable.Buffer
val root = new PegDownProcessor(Extensions.ALL).parseMarkdown(text)
val sections = Buffer.empty[(HeaderNode, Buffer[Node])]
root.getChildren.asScala foreach {
case node: HeaderNode if node.getLevel == 1 =>
sections += node -> Buffer.empty[Node]
case node =>
sections.lastOption match {
case Some((_, buf)) => buf += node
case None =>
}
}
sections match {
case (title, lead) +: tail => Some(Document(title, lead, tail))
case _ => None
}
}