From def7fab8713a61cb1df92249e59439d79ee63e0a Mon Sep 17 00:00:00 2001 From: hsbt Date: Tue, 19 Dec 2017 09:44:33 +0000 Subject: Merge psych-3.0.2 from ruby/psych. It version changed fallback option to keywoad argument on `Yaml.load` method. It break backword compatiblity. see detailed discuttion: https://github.com/ruby/psych/issues/340 From: SHIBATA Hiroshi git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/psych/lib/psych.rb | 20 +++++++++++++++----- ext/psych/lib/psych/versions.rb | 2 +- ext/psych/psych.gemspec | 6 +++--- test/psych/test_psych.rb | 2 +- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/ext/psych/lib/psych.rb b/ext/psych/lib/psych.rb index 0f14fe445c..a4d5a96dce 100644 --- a/ext/psych/lib/psych.rb +++ b/ext/psych/lib/psych.rb @@ -259,8 +259,8 @@ module Psych # 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) + def self.load yaml, filename = nil, fallback: false, symbolize_names: false + result = parse(yaml, filename, fallback: fallback) result = result.to_ruby if result symbolize_names!(result) if symbolize_names result @@ -300,6 +300,16 @@ module Psych # # A Psych::BadAlias exception will be raised if the yaml contains aliases # but the +aliases+ parameter is set to false. + # + # +filename+ will be used in the exception message if any exception is raised + # while parsing. + # + # When the optional +symbolize_names+ keyword argument is set to a + # true value, returns symbols for keys in Hash objects (default: strings). + # + # Psych.safe_load("---\n foo: bar") # => {"foo"=>"bar"} + # Psych.safe_load("---\n foo: bar", symbolize_names: true) # => {:foo=>"bar"} + # def self.safe_load yaml, whitelist_classes = [], whitelist_symbols = [], aliases = false, filename = nil, symbolize_names: false result = parse(yaml, filename) return unless result @@ -336,7 +346,7 @@ module Psych # end # # See Psych::Nodes for more information about YAML AST. - def self.parse yaml, filename = nil, fallback = false + def self.parse yaml, filename = nil, fallback: false parse_stream(yaml, filename) do |node| return node end @@ -483,9 +493,9 @@ module Psych # Load the document contained in +filename+. Returns the yaml contained in # +filename+ as a Ruby object, or if the file is empty, it returns # the specified default return value, which defaults to an empty Hash - def self.load_file filename, fallback = false + def self.load_file filename, fallback: false File.open(filename, 'r:bom|utf-8') { |f| - self.load f, filename, FALLBACK.new(fallback) + self.load f, filename, fallback: FALLBACK.new(fallback) } end diff --git a/ext/psych/lib/psych/versions.rb b/ext/psych/lib/psych/versions.rb index 79dbe2523c..33993ec837 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' + VERSION = '3.0.2' if RUBY_ENGINE == 'jruby' DEFAULT_SNAKEYAML_VERSION = '1.18'.freeze diff --git a/ext/psych/psych.gemspec b/ext/psych/psych.gemspec index 23e02da89b..2254d46829 100644 --- a/ext/psych/psych.gemspec +++ b/ext/psych/psych.gemspec @@ -3,10 +3,10 @@ Gem::Specification.new do |s| s.name = "psych" - s.version = "3.0.0" + s.version = "3.0.2" s.authors = ["Aaron Patterson", "SHIBATA Hiroshi", "Charles Oliver Nutter"] s.email = ["aaron@tenderlovemaking.com", "hsbt@ruby-lang.org", "headius@headius.com"] - s.date = "2017-12-01" + s.date = "2017-12-04" s.summary = "Psych is a YAML parser and emitter" s.description = <<-DESCRIPTION Psych is a YAML parser and emitter. Psych leverages libyaml[http://pyyaml.org/wiki/LibYAML] @@ -41,7 +41,7 @@ DESCRIPTION s.rdoc_options = ["--main", "README.md"] s.extra_rdoc_files = ["CHANGELOG.rdoc", "README.md"] - s.required_ruby_version = Gem::Requirement.new(">= 1.9.2") + s.required_ruby_version = Gem::Requirement.new(">= 2.2.2") s.rubygems_version = "2.5.1" s.required_rubygems_version = Gem::Requirement.new(">= 0") diff --git a/test/psych/test_psych.rb b/test/psych/test_psych.rb index 82906f0af6..2812fd1bd8 100644 --- a/test/psych/test_psych.rb +++ b/test/psych/test_psych.rb @@ -146,7 +146,7 @@ class TestPsych < Psych::TestCase def test_load_file_with_fallback Tempfile.create(['empty', 'yml']) {|t| - assert_equal Hash.new, Psych.load_file(t.path, Hash.new) + assert_equal Hash.new, Psych.load_file(t.path, fallback: Hash.new) } end -- cgit v1.2.3