private def parse()

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
    }
  }