From 91b01d0f4ccbc9ef917e64597618abce6fd8457e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Pelech?= Date: Tue, 21 Jun 2022 01:07:34 +0200 Subject: [PATCH] Make the SnakeYAML Yaml instance configurable --- .../io/circe/yaml/{parser/package.scala => Parser.scala} | 6 +++--- src/main/scala/io/circe/yaml/parser.scala | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) rename src/main/scala/io/circe/yaml/{parser/package.scala => Parser.scala} (95%) create mode 100644 src/main/scala/io/circe/yaml/parser.scala diff --git a/src/main/scala/io/circe/yaml/parser/package.scala b/src/main/scala/io/circe/yaml/Parser.scala similarity index 95% rename from src/main/scala/io/circe/yaml/parser/package.scala rename to src/main/scala/io/circe/yaml/Parser.scala index 8cc6520f..935bdf90 100644 --- a/src/main/scala/io/circe/yaml/parser/package.scala +++ b/src/main/scala/io/circe/yaml/Parser.scala @@ -8,7 +8,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor import org.yaml.snakeyaml.nodes._ import scala.collection.JavaConverters._ -package object parser { +class Parser(snakeYaml: Yaml) { /** * Parse YAML from the given [[Reader]], returning either [[ParsingFailure]] or [[Json]] @@ -26,10 +26,10 @@ package object parser { def parseDocuments(yaml: String): Stream[Either[ParsingFailure, Json]] = parseDocuments(new StringReader(yaml)) private[this] def parseSingle(reader: Reader) = - Either.catchNonFatal(new Yaml().compose(reader)).leftMap(err => ParsingFailure(err.getMessage, err)) + Either.catchNonFatal(snakeYaml.compose(reader)).leftMap(err => ParsingFailure(err.getMessage, err)) private[this] def parseStream(reader: Reader) = - new Yaml().composeAll(reader).asScala.toStream + snakeYaml.composeAll(reader).asScala.toStream private[this] object CustomTag { def unapply(tag: Tag): Option[String] = if (!tag.startsWith(Tag.PREFIX)) diff --git a/src/main/scala/io/circe/yaml/parser.scala b/src/main/scala/io/circe/yaml/parser.scala new file mode 100644 index 00000000..32cf6684 --- /dev/null +++ b/src/main/scala/io/circe/yaml/parser.scala @@ -0,0 +1,6 @@ +package io.circe.yaml + +import org.yaml.snakeyaml.Yaml +import org.yaml.snakeyaml.introspector.BeanAccess + +object parser extends Parser(new Yaml())