QuantumGhost
1/18/2012 - 12:46 PM

Scala Snake YAML

Scala Snake YAML

import scalaj.collection.Imports._
import org.yaml.snakeyaml.Yaml

def parse(str: String) = {
  new Yaml().load(str) match {
    case obj: ArrayList[_] =>
      val seqOfMaps = obj.asScala.collect {
        case hashMap: HashMap[_, _] =>
          hashMap.asScala.toMap.asInstanceOf[Map[String, Any]]
      }.toSeq
      if (seqOfMaps.isEmpty) None else Some(seqOfMaps)
    case obj: HashMap[_, _] =>
      Some(Seq(obj.asScala.toMap.asInstanceOf[Map[String, Any]]))
    case obj: Any =>
      None
  }
}