Skip to content

Commit

Permalink
Merge 47436b7 into e4a9f48
Browse files Browse the repository at this point in the history
  • Loading branch information
captainju committed Dec 30, 2019
2 parents e4a9f48 + 47436b7 commit 36a948c
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 4 deletions.
Expand Up @@ -48,7 +48,7 @@ trait CollectionFormats {
*/
implicit def mapFormat[K: YF, V: YF]: YF[Map[K, V]] = new YF[Map[K, V]] {
def write(m: Map[K, V]) =
YamlObject(m.map { case (k, v) => k.toYaml -> v.toYaml })
YamlObject(m.map { case (k, v) => k.toYaml -> v.toYaml }.toList: _*)

def read(value: YamlValue) = value match {
case x: YamlObject =>
Expand Down
5 changes: 3 additions & 2 deletions src/main/scala/net/jcazevedo/moultingyaml/YamlValue.scala
Expand Up @@ -2,6 +2,7 @@ package net.jcazevedo.moultingyaml

import com.github.nscala_time.time.Imports._
import scala.collection.JavaConverters._
import scala.collection.immutable.ListMap

/**
* The general type of a YAML AST node.
Expand All @@ -27,7 +28,7 @@ object YamlValue {
/**
* A YAML mapping from scalars to scalars.
*/
case class YamlObject(fields: Map[YamlValue, YamlValue]) extends YamlValue {
case class YamlObject(fields: ListMap[YamlValue, YamlValue]) extends YamlValue {
override def asYamlObject(errorMsg: String) = this

def getFields(fieldKeys: YamlValue*): Seq[YamlValue] =
Expand All @@ -42,7 +43,7 @@ case class YamlObject(fields: Map[YamlValue, YamlValue]) extends YamlValue {
}

object YamlObject {
def apply(fields: (YamlValue, YamlValue)*) = new YamlObject(Map(fields: _*))
def apply(fields: (YamlValue, YamlValue)*) = new YamlObject(ListMap(fields: _*))
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/net/jcazevedo/moultingyaml/package.scala
Expand Up @@ -31,7 +31,7 @@ package object moultingyaml {
case m: java.util.Map[Object @unchecked, Object @unchecked] =>
YamlObject(m.asScala.map {
case (k, v) => convertToYamlValue(k) -> convertToYamlValue(v)
}.toMap)
}.toList: _*)
case l: java.util.List[Object @unchecked] =>
YamlArray(l.asScala.map(convertToYamlValue).toVector)
case s: java.util.Set[Object @unchecked] =>
Expand Down
Expand Up @@ -295,4 +295,29 @@ class YamlPrettyPrinterSpec extends FlatSpec {

yaml.print should ===(yaml.print(new SnakeYamlPrinter(scalarStyle = DoubleQuoted)))
}

it should "print object in order" in {
val yaml = YamlObject(
YamlString("k1") -> YamlString("v1"),
YamlString("k2") -> YamlString("v2"),
YamlString("k3") -> YamlString("v3"),
YamlString("k4") -> YamlString("v4"),
YamlString("k5") -> YamlString("v5"),
YamlString("k6") -> YamlString("v6"),
YamlString("k7") -> YamlString("v7"),
YamlString("k8") -> YamlString("v8"),
YamlString("k9") -> YamlString("v9"))

yaml.print should ===(
"""k1: v1
|k2: v2
|k3: v3
|k4: v4
|k5: v5
|k6: v6
|k7: v7
|k8: v8
|k9: v9
|""".stripMargin)
}
}

0 comments on commit 36a948c

Please sign in to comment.