From 44320c5b8d780a1572206735a88212faf9428f11 Mon Sep 17 00:00:00 2001 From: hsbt Date: Fri, 1 Dec 2017 01:52:26 +0000 Subject: Merge psych-3.0.0. See NEWS file for this update details. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/psych/lib/psych.rb | 13 +++++++++++-- ext/psych/lib/psych/versions.rb | 2 +- ext/psych/lib/psych/visitors/yaml_tree.rb | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) (limited to 'ext/psych/lib') diff --git a/ext/psych/lib/psych.rb b/ext/psych/lib/psych.rb index dfb6c1b00e..0f14fe445c 100644 --- a/ext/psych/lib/psych.rb +++ b/ext/psych/lib/psych.rb @@ -252,6 +252,13 @@ module Psych # ex.file # => 'file.txt' # ex.message # => "(file.txt): found character that cannot start any token" # end + # + # When the optional +symbolize_names+ keyword argument is set to a + # true value, returns symbols for keys in Hash objects (default: strings). + # + # Psych.load("---\n foo: bar") # => {"foo"=>"bar"} + # Psych.load("---\n foo: bar", symbolize_names: true) # => {:foo=>"bar"} + # def self.load yaml, filename = nil, fallback = false, symbolize_names: false result = parse(yaml, filename, fallback) result = result.to_ruby if result @@ -293,7 +300,7 @@ module Psych # # A Psych::BadAlias exception will be raised if the yaml contains aliases # but the +aliases+ parameter is set to false. - def self.safe_load yaml, whitelist_classes = [], whitelist_symbols = [], aliases = false, filename = nil + def self.safe_load yaml, whitelist_classes = [], whitelist_symbols = [], aliases = false, filename = nil, symbolize_names: false result = parse(yaml, filename) return unless result @@ -305,7 +312,9 @@ module Psych else visitor = Visitors::NoAliasRuby.new scanner, class_loader end - visitor.accept result + result = visitor.accept result + symbolize_names!(result) if symbolize_names + result end ### diff --git a/ext/psych/lib/psych/versions.rb b/ext/psych/lib/psych/versions.rb index cf5fc4116e..79dbe2523c 100644 --- a/ext/psych/lib/psych/versions.rb +++ b/ext/psych/lib/psych/versions.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module Psych # The version is Psych you're using - VERSION = '3.0.0.beta4' + VERSION = '3.0.0' if RUBY_ENGINE == 'jruby' DEFAULT_SNAKEYAML_VERSION = '1.18'.freeze diff --git a/ext/psych/lib/psych/visitors/yaml_tree.rb b/ext/psych/lib/psych/visitors/yaml_tree.rb index f44e973c52..cfed8f1814 100644 --- a/ext/psych/lib/psych/visitors/yaml_tree.rb +++ b/ext/psych/lib/psych/visitors/yaml_tree.rb @@ -304,7 +304,7 @@ module Psych quote = false elsif @line_width && o.length > @line_width style = Nodes::Scalar::FOLDED - elsif o =~ /^[^[:word:]][^"]*$/ or o =~ /^([^"]*'+[^"]*)+$/ + elsif o =~ /^[^[:word:]][^"]*$/ style = Nodes::Scalar::DOUBLE_QUOTED elsif not String === @ss.tokenize(o) or /\A0[0-7]*[89]/ =~ o style = Nodes::Scalar::SINGLE_QUOTED -- cgit v1.2.3