summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSHIBATA Hiroshi <hsbt@ruby-lang.org>2016-02-09 21:06:39 +0900
committerSHIBATA Hiroshi <hsbt@ruby-lang.org>2016-02-09 21:06:39 +0900
commitb737f0811a9687cf86f44f0a35f61cbde9eac673 (patch)
treeffc1ae6d2be36385cae5f1f469aa231be1bb9586
parent8d3a63e7e8480d987a916d1ca46ece0d5e071c9d (diff)
downloadpsych-issue-11988.tar.gz
Support YAML 1.2 Core Schema. Addressed https://bugs.ruby-lang.org/issues/11988issue-11988
-rw-r--r--lib/psych/visitors/yaml_tree.rb2
-rw-r--r--test/psych/visitors/test_yaml_tree.rb6
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/psych/visitors/yaml_tree.rb b/lib/psych/visitors/yaml_tree.rb
index 6ad30d2..cf2d06f 100644
--- a/lib/psych/visitors/yaml_tree.rb
+++ b/lib/psych/visitors/yaml_tree.rb
@@ -330,7 +330,7 @@ module Psych
style = Nodes::Scalar::FOLDED
elsif o =~ /^[^[:word:]][^"]*$/
style = Nodes::Scalar::DOUBLE_QUOTED
- elsif not String === @ss.tokenize(o)
+ elsif not String === @ss.tokenize(o) or /\A0[0-7]*[89]/ =~ o
style = Nodes::Scalar::SINGLE_QUOTED
end
diff --git a/test/psych/visitors/test_yaml_tree.rb b/test/psych/visitors/test_yaml_tree.rb
index 40702bc..b7116a5 100644
--- a/test/psych/visitors/test_yaml_tree.rb
+++ b/test/psych/visitors/test_yaml_tree.rb
@@ -155,6 +155,12 @@ module Psych
assert_equal(-1, Psych.load(Psych.dump(-1 / 0.0)).infinite?)
end
+ def test_string
+ assert_match(/'017'/, Psych.dump({'a' => '017'}))
+ assert_match(/'019'/, Psych.dump({'a' => '019'}))
+ assert_match(/'01818'/, Psych.dump({'a' => '01818'}))
+ end
+
# http://yaml.org/type/null.html
def test_nil
assert_cycle nil