Skip to content

Commit

Permalink
Merge d65edc5 into e4a9f48
Browse files Browse the repository at this point in the history
  • Loading branch information
ssboisen committed Mar 30, 2020
2 parents e4a9f48 + d65edc5 commit a0c7e05
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
2 changes: 1 addition & 1 deletion build.sbt
Expand Up @@ -13,7 +13,7 @@ crossScalaVersions := Seq("2.13.0", "2.12.8", "2.11.12", "2.10.7")
libraryDependencies ++= Seq(
"com.github.nscala-time" %% "nscala-time" % "2.22.0",
"org.scala-lang" % "scala-reflect" % scalaVersion.value,
"org.yaml" % "snakeyaml" % "1.24",
"org.yaml" % "snakeyaml" % "1.26",
"org.scalatest" %% "scalatest" % "3.0.8" % "test")

scalacOptions ++= Seq(
Expand Down
25 changes: 22 additions & 3 deletions src/main/scala/net/jcazevedo/moultingyaml/package.scala
@@ -1,7 +1,8 @@
package net.jcazevedo

import com.github.nscala_time.time.Imports._
import org.yaml.snakeyaml.Yaml
import org.yaml.snakeyaml.{ LoaderOptions, Yaml }

import scala.collection.JavaConverters._

package object moultingyaml {
Expand Down Expand Up @@ -63,9 +64,27 @@ package object moultingyaml {

implicit class PimpedString(val string: String) extends AnyVal {
def parseYaml: YamlValue =
convertToYamlValue(new Yaml().load(string))
parseYaml()

def parseYaml(allowDuplicateKeys: Boolean = true, allowRecursiveKeys: Boolean = false, wrappedToRootException: Boolean = false, maxAliasesForCollections: Int = 50) = {
val loaderOptions = new LoaderOptions()
loaderOptions.setAllowDuplicateKeys(allowDuplicateKeys)
loaderOptions.setAllowRecursiveKeys(allowRecursiveKeys)
loaderOptions.setWrappedToRootException(wrappedToRootException)
loaderOptions.setMaxAliasesForCollections(maxAliasesForCollections)
convertToYamlValue(new Yaml(loaderOptions).load(string))
}

def parseYamls: Seq[YamlValue] =
new Yaml().loadAll(string).asScala.map(convertToYamlValue).toSeq
parseYamls()

def parseYamls(allowDuplicateKeys: Boolean = true, allowRecursiveKeys: Boolean = false, wrappedToRootException: Boolean = false, maxAliasesForCollections: Int = 50) = {
val loaderOptions = new LoaderOptions()
loaderOptions.setAllowDuplicateKeys(allowDuplicateKeys)
loaderOptions.setAllowRecursiveKeys(allowRecursiveKeys)
loaderOptions.setWrappedToRootException(wrappedToRootException)
loaderOptions.setMaxAliasesForCollections(maxAliasesForCollections)
new Yaml(loaderOptions).loadAll(string).asScala.map(convertToYamlValue).toSeq
}
}
}

0 comments on commit a0c7e05

Please sign in to comment.