From ca5c8853674e86b3f655cf28f01855c383aa67df Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Fri, 18 Aug 2023 17:24:43 -0700 Subject: [PATCH 01/12] actually bump tag to 0.4.6 --- build.sc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sc b/build.sc index 73613bb0d..43136e4b8 100644 --- a/build.sc +++ b/build.sc @@ -1,5 +1,5 @@ import mill._, scalalib._, publish._, scalajslib._, scalanativelib._, scalanativelib.api._ -val sjsonnetVersion = "0.4.5" +val sjsonnetVersion = "0.4.6" object sjsonnet extends Cross[SjsonnetModule]("2.12.13", "2.13.4") class SjsonnetModule(val crossScalaVersion: String) extends Module { From a2f22279e82963dbb6fc066eed9d72dd9a21394d Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 17:49:22 +0200 Subject: [PATCH 02/12] . --- sjsonnet/src-jvm-native/sjsonnet/Config.scala | 5 +++++ sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala | 3 ++- sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala | 5 +++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/sjsonnet/src-jvm-native/sjsonnet/Config.scala b/sjsonnet/src-jvm-native/sjsonnet/Config.scala index ff077f96b..b4aaebf2c 100644 --- a/sjsonnet/src-jvm-native/sjsonnet/Config.scala +++ b/sjsonnet/src-jvm-native/sjsonnet/Config.scala @@ -138,4 +138,9 @@ case class Config( doc = """Properly handle assertions defined in a Jsonnet dictionary that is extended more than once""" ) strictInheritedAssertions: Flag = Flag(), + @arg( + name = "no-unquoted-string-literals", + doc = """Forces all YAML string literals to be quoted, to avoid issues with non-compliant YAML parsers interpreting them in different ways""" + ) + noUnquotedStringLiterals: Flag = Flag(), ) diff --git a/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala b/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala index 018d34d73..a3b5a0fdb 100644 --- a/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala +++ b/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala @@ -99,7 +99,8 @@ object SjsonnetMain { if (config.yamlOut.value) new PrettyYamlRenderer( wr, indent = config.indent, - getCurrentPosition = getCurrentPosition + getCurrentPosition = getCurrentPosition, + noUnquotedStringLiterals = config.noUnquotedStringLiterals.value ) else new Renderer(wr, indent = config.indent) diff --git a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala index 9631424fd..51dab7d6b 100644 --- a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala +++ b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala @@ -16,7 +16,8 @@ class PrettyYamlRenderer(out: Writer = new java.io.StringWriter(), indentArrayInObject: Boolean = false, indent: Int, idealWidth: Int = 80, - getCurrentPosition: () => Position) extends BaseRenderer[Writer](out, indent){ + getCurrentPosition: () => Position, + noUnquotedStringLiterals: Boolean = true) extends BaseRenderer[Writer](out, indent){ var newlineBuffered = false var dashBuffered = false var afterColon = false @@ -66,7 +67,7 @@ class PrettyYamlRenderer(out: Writer = new java.io.StringWriter(), } // Strings which look like booleans/nulls/numbers/dates/etc., // or have leading/trailing spaces, are rendered single-quoted - else if (PrettyYamlRenderer.stringNeedsToBeQuoted(str)) { + else if (!noUnquotedStringLiterals || PrettyYamlRenderer.stringNeedsToBeQuoted(str)) { val strWriter = new StringWriter BaseRenderer.escape(strWriter, s, unicode = true) val quotedStr = "'" + str.replace("'", "''") + "'" From 36293753bf4281268adf34c7686be19e5652b883 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 17:50:07 +0200 Subject: [PATCH 03/12] . --- sjsonnet/src-jvm-native/sjsonnet/Config.scala | 4 ++-- sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sjsonnet/src-jvm-native/sjsonnet/Config.scala b/sjsonnet/src-jvm-native/sjsonnet/Config.scala index b4aaebf2c..71f0da67b 100644 --- a/sjsonnet/src-jvm-native/sjsonnet/Config.scala +++ b/sjsonnet/src-jvm-native/sjsonnet/Config.scala @@ -139,8 +139,8 @@ case class Config( ) strictInheritedAssertions: Flag = Flag(), @arg( - name = "no-unquoted-string-literals", + name = "yaml-no-unquoted-string-literals", doc = """Forces all YAML string literals to be quoted, to avoid issues with non-compliant YAML parsers interpreting them in different ways""" ) - noUnquotedStringLiterals: Flag = Flag(), + yamlNoUnquotedStringLiterals: Flag = Flag(), ) diff --git a/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala b/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala index a3b5a0fdb..54e72bee8 100644 --- a/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala +++ b/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala @@ -100,7 +100,7 @@ object SjsonnetMain { wr, indent = config.indent, getCurrentPosition = getCurrentPosition, - noUnquotedStringLiterals = config.noUnquotedStringLiterals.value + noUnquotedStringLiterals = config.yamlNoUnquotedStringLiterals.value ) else new Renderer(wr, indent = config.indent) From ed6c05daea89444d5691f482dba02ce82c73c9a2 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 17:53:19 +0200 Subject: [PATCH 04/12] . --- sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala index 51dab7d6b..e94701fe2 100644 --- a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala +++ b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala @@ -67,7 +67,7 @@ class PrettyYamlRenderer(out: Writer = new java.io.StringWriter(), } // Strings which look like booleans/nulls/numbers/dates/etc., // or have leading/trailing spaces, are rendered single-quoted - else if (!noUnquotedStringLiterals || PrettyYamlRenderer.stringNeedsToBeQuoted(str)) { + else if (noUnquotedStringLiterals || PrettyYamlRenderer.stringNeedsToBeQuoted(str)) { val strWriter = new StringWriter BaseRenderer.escape(strWriter, s, unicode = true) val quotedStr = "'" + str.replace("'", "''") + "'" From 0e1fc13b65427424b9f00984cb7383ba71a31311 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 17:59:32 +0200 Subject: [PATCH 05/12] . --- .../src/sjsonnet/PrettyYamlRenderer.scala | 2 +- .../nontrivial/mixins.golden.nounquoted.yaml | 35 +++++++++++++++++++ .../sjsonnet/PrettyYamlRendererTests.scala | 9 +++-- 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 sjsonnet/test/resources/nontrivial/mixins.golden.nounquoted.yaml diff --git a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala index e94701fe2..af2d25454 100644 --- a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala +++ b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala @@ -17,7 +17,7 @@ class PrettyYamlRenderer(out: Writer = new java.io.StringWriter(), indent: Int, idealWidth: Int = 80, getCurrentPosition: () => Position, - noUnquotedStringLiterals: Boolean = true) extends BaseRenderer[Writer](out, indent){ + noUnquotedStringLiterals: Boolean) extends BaseRenderer[Writer](out, indent){ var newlineBuffered = false var dashBuffered = false var afterColon = false diff --git a/sjsonnet/test/resources/nontrivial/mixins.golden.nounquoted.yaml b/sjsonnet/test/resources/nontrivial/mixins.golden.nounquoted.yaml new file mode 100644 index 000000000..c45b56415 --- /dev/null +++ b/sjsonnet/test/resources/nontrivial/mixins.golden.nounquoted.yaml @@ -0,0 +1,35 @@ +'Virgin Daiquiri': + 'garnish': 'Lime wedge' + 'ingredients': + - 'kind': 'Water' + 'qty': 2 + - 'kind': 'Vanilla Essence' + 'qty': 'dash' + - 'kind': 'Angustura Bitters' + 'qty': 'dash' + - 'kind': 'Lime' + 'qty': 1 + - 'kind': 'Simple Syrup' + 'qty': 0.5 + 'served': 'Straight Up' +'Virgin Whiskey Sour': + 'garnish': 'Lemon Juice twist' + 'ingredients': + - 'kind': 'Water' + 'qty': 2 + - 'kind': 'Angustura Bitters' + 'qty': 'tsp' + - 'kind': 'Lemon Juice' + 'qty': 1 + - 'kind': 'Simple Syrup' + 'qty': 0.5 + 'served': 'Straight Up' +'Whiskey Sour': + 'ingredients': + - 'kind': 'Whiskey' + 'qty': 2 + - 'kind': 'Lemon Juice' + 'qty': 1 + - 'kind': 'Simple Syrup' + 'qty': 0.5 + 'served': 'In a plastic cup' \ No newline at end of file diff --git a/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala b/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala index 1ee0a9e4e..8034fa0e3 100644 --- a/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala +++ b/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala @@ -4,7 +4,7 @@ import utest._ object PrettyYamlRendererTests extends TestSuite{ val testSuiteRoot = os.pwd / "sjsonnet" / "test" / "resources" / "test_suite" - def eval(path: os.Path, comments: Boolean) = { + def eval(path: os.Path, comments: Boolean, noUnquotedStringLiterals: Boolean = false) = { var currentPos: Position = null val interp = new Interpreter( Map(), @@ -19,7 +19,8 @@ object PrettyYamlRendererTests extends TestSuite{ OsPath(path), new PrettyYamlRenderer( indent = 2, - getCurrentPosition = () => currentPos + getCurrentPosition = () => currentPos, + noUnquotedStringLiterals = noUnquotedStringLiterals ) ) res.right.get.toString @@ -34,6 +35,10 @@ object PrettyYamlRendererTests extends TestSuite{ eval(nontrivial / "mixins.jsonnet", comments = true) ==> os.read(nontrivial / "mixins.golden.comments.yaml") } + test("nounquoted"){ + eval(nontrivial / "mixins.jsonnet", comments = false, noUnquotedStringLiterals = true) ==> + os.read(nontrivial / "mixins.golden.nounquoted.yaml") + } } } From bcfa6892e2d41f13ed1065ff36f4508c704747d7 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 18:24:57 +0200 Subject: [PATCH 06/12] . --- .../src/main/scala/sjsonnet/MaterializerBenchmark.scala | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala b/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala index 9152f6f0a..000d0809e 100644 --- a/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala +++ b/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala @@ -58,7 +58,14 @@ class MaterializerBenchmark { private def oldRenderPython() = renderWith(new OldPythonRenderer(_, indent=3)) private def oldRenderYaml() = renderWith(new OldYamlRenderer(_, indent=3)) - private def renderPrettyYaml() = renderWith(new PrettyYamlRenderer(_, indent=3, getCurrentPosition = () => null)) + private def renderPrettyYaml() = renderWith( + new PrettyYamlRenderer( + _, + indent=3, + getCurrentPosition = () => null, + noUnquotedStringLiterals = false + ) + ) private def renderWith[T <: Writer](r: StringWriter => JsVisitor[T, T]): String = { val writer = new StringWriter From 99e2a85bd7020b40a03dca4c018d3063d6350b42 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 18:46:13 +0200 Subject: [PATCH 07/12] . --- .../sjsonnet/MaterializerBenchmark.scala | 3 +- .../sjsonnet/SjsonnetMain.scala | 3 +- .../src/sjsonnet/PrettyYamlRenderer.scala | 9 +++-- .../nontrivial/mixins.golden.nounquoted.yaml | 35 ------------------- .../quotingNumberLikeStrings.jsonnet | 15 ++++++++ .../nontrivial/quotingNumberLikeStrings.yaml | 12 +++++++ .../sjsonnet/PrettyYamlRendererTests.scala | 9 +++-- 7 files changed, 37 insertions(+), 49 deletions(-) delete mode 100644 sjsonnet/test/resources/nontrivial/mixins.golden.nounquoted.yaml create mode 100644 sjsonnet/test/resources/nontrivial/quotingNumberLikeStrings.jsonnet create mode 100644 sjsonnet/test/resources/nontrivial/quotingNumberLikeStrings.yaml diff --git a/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala b/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala index 000d0809e..00a449530 100644 --- a/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala +++ b/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala @@ -62,8 +62,7 @@ class MaterializerBenchmark { new PrettyYamlRenderer( _, indent=3, - getCurrentPosition = () => null, - noUnquotedStringLiterals = false + getCurrentPosition = () => null ) ) diff --git a/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala b/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala index 54e72bee8..018d34d73 100644 --- a/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala +++ b/sjsonnet/src-jvm-native/sjsonnet/SjsonnetMain.scala @@ -99,8 +99,7 @@ object SjsonnetMain { if (config.yamlOut.value) new PrettyYamlRenderer( wr, indent = config.indent, - getCurrentPosition = getCurrentPosition, - noUnquotedStringLiterals = config.yamlNoUnquotedStringLiterals.value + getCurrentPosition = getCurrentPosition ) else new Renderer(wr, indent = config.indent) diff --git a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala index af2d25454..716be574c 100644 --- a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala +++ b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala @@ -16,8 +16,7 @@ class PrettyYamlRenderer(out: Writer = new java.io.StringWriter(), indentArrayInObject: Boolean = false, indent: Int, idealWidth: Int = 80, - getCurrentPosition: () => Position, - noUnquotedStringLiterals: Boolean) extends BaseRenderer[Writer](out, indent){ + getCurrentPosition: () => Position) extends BaseRenderer[Writer](out, indent){ var newlineBuffered = false var dashBuffered = false var afterColon = false @@ -67,7 +66,7 @@ class PrettyYamlRenderer(out: Writer = new java.io.StringWriter(), } // Strings which look like booleans/nulls/numbers/dates/etc., // or have leading/trailing spaces, are rendered single-quoted - else if (noUnquotedStringLiterals || PrettyYamlRenderer.stringNeedsToBeQuoted(str)) { + else if (PrettyYamlRenderer.stringNeedsToBeQuoted(str)) { val strWriter = new StringWriter BaseRenderer.escape(strWriter, s, unicode = true) val quotedStr = "'" + str.replace("'", "''") + "'" @@ -443,9 +442,9 @@ object PrettyYamlRenderer{ (digits.? ~ "." ~ digits | digits ~ ".") ~ (("e" | "E") ~ ("+" | "-").? ~ digits).? ) def yamlOctalSuffix[_: P] = P( "x" ~ CharIn("1-9a-fA-F") ~ CharsWhileIn("0-9a-fA-F").? ) - def yamlHexSuffix[_: P] = P( "o".? ~ CharIn("1-7") ~ CharsWhileIn("0-7").? ) + def yamlHexSuffix[_: P] = P( "o" ~ CharIn("1-7") ~ CharsWhileIn("0-7").? ) def yamlOctalHex[_: P] = P( "0" ~ (yamlOctalSuffix | yamlHexSuffix) ) - def yamlNumber0[_: P] = P( ".inf" | yamlFloat | yamlOctalHex | CharIn("1-9") ~ digits.? | "0" ) + def yamlNumber0[_: P] = P( ".inf" | yamlFloat | yamlOctalHex | CharIn("0-9") ~ digits.? | "0" ) // Add a `CharIn` lookahead to bail out quickly if something cannot possibly be a number def yamlNumber[_: P] = P( "-".? ~ yamlNumber0 ) diff --git a/sjsonnet/test/resources/nontrivial/mixins.golden.nounquoted.yaml b/sjsonnet/test/resources/nontrivial/mixins.golden.nounquoted.yaml deleted file mode 100644 index c45b56415..000000000 --- a/sjsonnet/test/resources/nontrivial/mixins.golden.nounquoted.yaml +++ /dev/null @@ -1,35 +0,0 @@ -'Virgin Daiquiri': - 'garnish': 'Lime wedge' - 'ingredients': - - 'kind': 'Water' - 'qty': 2 - - 'kind': 'Vanilla Essence' - 'qty': 'dash' - - 'kind': 'Angustura Bitters' - 'qty': 'dash' - - 'kind': 'Lime' - 'qty': 1 - - 'kind': 'Simple Syrup' - 'qty': 0.5 - 'served': 'Straight Up' -'Virgin Whiskey Sour': - 'garnish': 'Lemon Juice twist' - 'ingredients': - - 'kind': 'Water' - 'qty': 2 - - 'kind': 'Angustura Bitters' - 'qty': 'tsp' - - 'kind': 'Lemon Juice' - 'qty': 1 - - 'kind': 'Simple Syrup' - 'qty': 0.5 - 'served': 'Straight Up' -'Whiskey Sour': - 'ingredients': - - 'kind': 'Whiskey' - 'qty': 2 - - 'kind': 'Lemon Juice' - 'qty': 1 - - 'kind': 'Simple Syrup' - 'qty': 0.5 - 'served': 'In a plastic cup' \ No newline at end of file diff --git a/sjsonnet/test/resources/nontrivial/quotingNumberLikeStrings.jsonnet b/sjsonnet/test/resources/nontrivial/quotingNumberLikeStrings.jsonnet new file mode 100644 index 000000000..15105e3a6 --- /dev/null +++ b/sjsonnet/test/resources/nontrivial/quotingNumberLikeStrings.jsonnet @@ -0,0 +1,15 @@ +{ +accountId1: "088579281390", +accountId2: "788579281397", +accountId3: "022216176144", +accountId4: "111216176140", +accountId5: "01111110", +accountId6: '011111111110', +accountId7: "011111111110", +accountId8: '081111111190', +accountId9: '081111111110', +accountIdA: '081111111111', +accountIdB: '011111111111', +accountIdC: '089999999999' + +} \ No newline at end of file diff --git a/sjsonnet/test/resources/nontrivial/quotingNumberLikeStrings.yaml b/sjsonnet/test/resources/nontrivial/quotingNumberLikeStrings.yaml new file mode 100644 index 000000000..70fc0175f --- /dev/null +++ b/sjsonnet/test/resources/nontrivial/quotingNumberLikeStrings.yaml @@ -0,0 +1,12 @@ +accountId1: '088579281390' +accountId2: '788579281397' +accountId3: '022216176144' +accountId4: '111216176140' +accountId5: '01111110' +accountId6: '011111111110' +accountId7: '011111111110' +accountId8: '081111111190' +accountId9: '081111111110' +accountIdA: '081111111111' +accountIdB: '011111111111' +accountIdC: '089999999999' \ No newline at end of file diff --git a/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala b/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala index 8034fa0e3..1f3b42d81 100644 --- a/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala +++ b/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala @@ -4,7 +4,7 @@ import utest._ object PrettyYamlRendererTests extends TestSuite{ val testSuiteRoot = os.pwd / "sjsonnet" / "test" / "resources" / "test_suite" - def eval(path: os.Path, comments: Boolean, noUnquotedStringLiterals: Boolean = false) = { + def eval(path: os.Path, comments: Boolean) = { var currentPos: Position = null val interp = new Interpreter( Map(), @@ -19,8 +19,7 @@ object PrettyYamlRendererTests extends TestSuite{ OsPath(path), new PrettyYamlRenderer( indent = 2, - getCurrentPosition = () => currentPos, - noUnquotedStringLiterals = noUnquotedStringLiterals + getCurrentPosition = () => currentPos ) ) res.right.get.toString @@ -36,8 +35,8 @@ object PrettyYamlRendererTests extends TestSuite{ os.read(nontrivial / "mixins.golden.comments.yaml") } test("nounquoted"){ - eval(nontrivial / "mixins.jsonnet", comments = false, noUnquotedStringLiterals = true) ==> - os.read(nontrivial / "mixins.golden.nounquoted.yaml") + eval(nontrivial / "quotingNumberLikeStrings.jsonnet", comments = false) ==> + os.read(nontrivial / "quotingNumberLikeStrings.yaml") } } } From 03d55c505b991a6bffff257bc03d4c1f43d15b8c Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 18:48:41 +0200 Subject: [PATCH 08/12] . --- build.sc | 2 +- sjsonnet/src-jvm-native/sjsonnet/Config.scala | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/build.sc b/build.sc index 43136e4b8..b6aaa0427 100644 --- a/build.sc +++ b/build.sc @@ -1,5 +1,5 @@ import mill._, scalalib._, publish._, scalajslib._, scalanativelib._, scalanativelib.api._ -val sjsonnetVersion = "0.4.6" +val sjsonnetVersion = "0.4.7" object sjsonnet extends Cross[SjsonnetModule]("2.12.13", "2.13.4") class SjsonnetModule(val crossScalaVersion: String) extends Module { diff --git a/sjsonnet/src-jvm-native/sjsonnet/Config.scala b/sjsonnet/src-jvm-native/sjsonnet/Config.scala index 71f0da67b..ff077f96b 100644 --- a/sjsonnet/src-jvm-native/sjsonnet/Config.scala +++ b/sjsonnet/src-jvm-native/sjsonnet/Config.scala @@ -138,9 +138,4 @@ case class Config( doc = """Properly handle assertions defined in a Jsonnet dictionary that is extended more than once""" ) strictInheritedAssertions: Flag = Flag(), - @arg( - name = "yaml-no-unquoted-string-literals", - doc = """Forces all YAML string literals to be quoted, to avoid issues with non-compliant YAML parsers interpreting them in different ways""" - ) - yamlNoUnquotedStringLiterals: Flag = Flag(), ) From 961d6578288f7ded004395c487103add2565d1e7 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 18:49:40 +0200 Subject: [PATCH 09/12] . --- sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala index 716be574c..871edfc8b 100644 --- a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala +++ b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala @@ -444,7 +444,7 @@ object PrettyYamlRenderer{ def yamlOctalSuffix[_: P] = P( "x" ~ CharIn("1-9a-fA-F") ~ CharsWhileIn("0-9a-fA-F").? ) def yamlHexSuffix[_: P] = P( "o" ~ CharIn("1-7") ~ CharsWhileIn("0-7").? ) def yamlOctalHex[_: P] = P( "0" ~ (yamlOctalSuffix | yamlHexSuffix) ) - def yamlNumber0[_: P] = P( ".inf" | yamlFloat | yamlOctalHex | CharIn("0-9") ~ digits.? | "0" ) + def yamlNumber0[_: P] = P( ".inf" | yamlFloat | yamlOctalHex | CharIn("0-9") ~ digits.? ) // Add a `CharIn` lookahead to bail out quickly if something cannot possibly be a number def yamlNumber[_: P] = P( "-".? ~ yamlNumber0 ) From 83887b802aaaef57b680ca52c04a2c37f864c101 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 18:51:57 +0200 Subject: [PATCH 10/12] . --- .../test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala b/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala index 1f3b42d81..7d3e9e196 100644 --- a/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala +++ b/sjsonnet/test/src-jvm-native/sjsonnet/PrettyYamlRendererTests.scala @@ -35,6 +35,8 @@ object PrettyYamlRendererTests extends TestSuite{ os.read(nontrivial / "mixins.golden.comments.yaml") } test("nounquoted"){ + // Ensure weird octal-number-like strings are quoted, to avoid + // edge cases that may cause problems for non-compliant parsers eval(nontrivial / "quotingNumberLikeStrings.jsonnet", comments = false) ==> os.read(nontrivial / "quotingNumberLikeStrings.yaml") } From a915f97dc44d74e3467550bb3a6d625d1c2ced53 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 18:55:49 +0200 Subject: [PATCH 11/12] . --- bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala b/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala index 00a449530..9152f6f0a 100644 --- a/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala +++ b/bench/src/main/scala/sjsonnet/MaterializerBenchmark.scala @@ -58,13 +58,7 @@ class MaterializerBenchmark { private def oldRenderPython() = renderWith(new OldPythonRenderer(_, indent=3)) private def oldRenderYaml() = renderWith(new OldYamlRenderer(_, indent=3)) - private def renderPrettyYaml() = renderWith( - new PrettyYamlRenderer( - _, - indent=3, - getCurrentPosition = () => null - ) - ) + private def renderPrettyYaml() = renderWith(new PrettyYamlRenderer(_, indent=3, getCurrentPosition = () => null)) private def renderWith[T <: Writer](r: StringWriter => JsVisitor[T, T]): String = { val writer = new StringWriter From c69488a88d8695c5f12718891e823ebd75c31ae7 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 7 Sep 2023 20:12:36 +0200 Subject: [PATCH 12/12] . --- sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala index 871edfc8b..a2829fa2a 100644 --- a/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala +++ b/sjsonnet/src/sjsonnet/PrettyYamlRenderer.scala @@ -444,7 +444,7 @@ object PrettyYamlRenderer{ def yamlOctalSuffix[_: P] = P( "x" ~ CharIn("1-9a-fA-F") ~ CharsWhileIn("0-9a-fA-F").? ) def yamlHexSuffix[_: P] = P( "o" ~ CharIn("1-7") ~ CharsWhileIn("0-7").? ) def yamlOctalHex[_: P] = P( "0" ~ (yamlOctalSuffix | yamlHexSuffix) ) - def yamlNumber0[_: P] = P( ".inf" | yamlFloat | yamlOctalHex | CharIn("0-9") ~ digits.? ) + def yamlNumber0[_: P] = P( ".inf" | yamlFloat | yamlOctalHex | digits ) // Add a `CharIn` lookahead to bail out quickly if something cannot possibly be a number def yamlNumber[_: P] = P( "-".? ~ yamlNumber0 )