I added the following additional commits from 3.0.3.pre1:
    * https://github.com/ruby/psych/pull/356
    * https://github.com/ruby/psych/pull/357
    * https://github.com/ruby/psych/pull/359

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
hsbt 2018-04-28 01:47:58 +00:00
Родитель 13dc8e4ef0
Коммит f114089585
14 изменённых файлов: 100 добавлений и 11 удалений

Просмотреть файл

@ -418,6 +418,24 @@ module Psych
# to control the output format. If an IO object is passed in, the YAML will
# be dumped to that IO object.
#
# Currently supported options are:
#
# [<tt>:indentation</tt>] Number of space characters used to indent.
# Acceptable value should be in <tt>0..9</tt> range,
# otherwise option is ignored.
#
# Default: <tt>2</tt>.
# [<tt>:line_width</tt>] Max character to wrap line at.
#
# Default: <tt>0</tt> (meaning "wrap at 81").
# [<tt>:canonical</tt>] Write "canonical" YAML form (very verbose, yet
# strictly formal).
#
# Default: <tt>false</tt>.
# [<tt>:header</tt>] Write <tt>%YAML [version]</tt> at the beginning of document.
#
# Default: <tt>false</tt>.
#
# Example:
#
# # Dump an array, get back a YAML string
@ -427,10 +445,10 @@ module Psych
# Psych.dump(['a', 'b'], StringIO.new) # => #<StringIO:0x000001009d0890>
#
# # Dump an array with indentation set
# Psych.dump(['a', ['b']], :indentation => 3) # => "---\n- a\n- - b\n"
# Psych.dump(['a', ['b']], indentation: 3) # => "---\n- a\n- - b\n"
#
# # Dump an array to an IO with indentation set
# Psych.dump(['a', ['b']], StringIO.new, :indentation => 3)
# Psych.dump(['a', ['b']], StringIO.new, indentation: 3)
def self.dump o, io = nil, options = {}
if Hash === io
options = io
@ -492,7 +510,7 @@ 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
# the specified +fallback+ return value, which defaults to +false+.
def self.load_file filename, fallback: false
File.open(filename, 'r:bom|utf-8') { |f|
self.load f, filename, fallback: FALLBACK.new(fallback)

Просмотреть файл

@ -105,7 +105,7 @@ module Psych
# - first element
# - *ponies
#
# &ponies is the achor, *ponies is the alias. In this case, alias is
# &ponies is the anchor, *ponies is the alias. In this case, alias is
# called with "ponies".
def alias anchor
end

Просмотреть файл

@ -14,6 +14,8 @@ module Psych
def initialize anchor
@anchor = anchor
end
def alias?; true; end
end
end
end

Просмотреть файл

@ -56,6 +56,8 @@ module Psych
def root
children.first
end
def document?; true; end
end
end
end

Просмотреть файл

@ -52,6 +52,8 @@ module Psych
@implicit = implicit
@style = style
end
def mapping?; true; end
end
end
end

Просмотреть файл

@ -63,6 +63,13 @@ module Psych
io
end
alias :to_yaml :yaml
def alias?; false; end
def document?; false; end
def mapping?; false; end
def scalar?; false; end
def sequence?; false; end
def stream?; false; end
end
end
end

Просмотреть файл

@ -63,6 +63,8 @@ module Psych
@quoted = quoted
@style = style
end
def scalar?; true; end
end
end
end

Просмотреть файл

@ -77,6 +77,8 @@ module Psych
@implicit = implicit
@style = style
end
def sequence?; true; end
end
end
end

Просмотреть файл

@ -33,6 +33,8 @@ module Psych
super()
@encoding = encoding
end
def stream?; true; end
end
end
end

Просмотреть файл

@ -1,9 +1,9 @@
# frozen_string_literal: true
module Psych
# The version is Psych you're using
VERSION = '3.0.2'
VERSION = '3.0.3.pre1'
if RUBY_ENGINE == 'jruby'
DEFAULT_SNAKEYAML_VERSION = '1.18'.freeze
DEFAULT_SNAKEYAML_VERSION = '1.21'.freeze
end
end

Просмотреть файл

@ -3,10 +3,9 @@
Gem::Specification.new do |s|
s.name = "psych"
s.version = "3.0.2"
s.version = "3.0.3.pre1"
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-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]
@ -20,7 +19,7 @@ DESCRIPTION
# for ruby core repository. It was generated by `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
s.files = [
".gitignore", ".travis.yml", "CHANGELOG.rdoc", "Gemfile", "Mavenfile", "README.md", "Rakefile", "bin/console",
"bin/setup", "ext/psych/.gitignore", "ext/psych/depend", "ext/psych/extconf.rb", "ext/psych/psych.c", "ext/psych/psych.h",
"bin/setup", "ext/psych/depend", "ext/psych/extconf.rb", "ext/psych/psych.c", "ext/psych/psych.h",
"ext/psych/psych_emitter.c", "ext/psych/psych_emitter.h", "ext/psych/psych_parser.c", "ext/psych/psych_parser.h",
"ext/psych/psych_to_ruby.c", "ext/psych/psych_to_ruby.h", "ext/psych/psych_yaml_tree.c", "ext/psych/psych_yaml_tree.h",
"ext/psych/yaml/LICENSE", "ext/psych/yaml/api.c", "ext/psych/yaml/config.h", "ext/psych/yaml/dumper.c",
@ -54,7 +53,7 @@ DESCRIPTION
"ext/java/PsychEmitter.java", "ext/java/PsychLibrary.java", "ext/java/PsychParser.java", "ext/java/PsychToRuby.java",
"ext/java/PsychYamlTree.java", "lib/psych_jars.rb", "lib/psych.jar"
]
s.requirements = "jar org.yaml:snakeyaml, 1.18"
s.requirements = "jar org.yaml:snakeyaml, 1.21"
s.add_dependency 'jar-dependencies', '>= 0.1.7'
s.add_development_dependency 'ruby-maven'
else

Просмотреть файл

@ -1234,7 +1234,7 @@ yaml_emitter_select_scalar_style(yaml_emitter_t *emitter, yaml_event_t *event)
}
/*
* Write an achor.
* Write an anchor.
*/
static int

Просмотреть файл

@ -144,12 +144,49 @@ class TestPsych < Psych::TestCase
}
end
def test_load_file_default_return_value
Tempfile.create(['empty', 'yml']) {|t|
assert_equal false, Psych.load_file(t.path)
}
end
def test_load_file_with_fallback
Tempfile.create(['empty', 'yml']) {|t|
assert_equal 42, Psych.load_file(t.path, fallback: 42)
}
end
def test_load_file_with_fallback_nil_or_false
Tempfile.create(['empty', 'yml']) {|t|
assert_nil Psych.load_file(t.path, fallback: nil)
assert_equal false, Psych.load_file(t.path, fallback: false)
}
end
def test_load_file_with_fallback_hash
Tempfile.create(['empty', 'yml']) {|t|
assert_equal Hash.new, Psych.load_file(t.path, fallback: Hash.new)
}
end
def test_load_file_with_fallback_for_nil
Tempfile.create(['nil', 'yml']) {|t|
t.binmode
t.write('--- null')
t.close
assert_nil Psych.load_file(t.path, fallback: 42)
}
end
def test_load_file_with_fallback_for_false
Tempfile.create(['false', 'yml']) {|t|
t.binmode
t.write('--- false')
t.close
assert_equal false, Psych.load_file(t.path, fallback: 42)
}
end
def test_parse_file
Tempfile.create(['yikes', 'yml']) {|t|
t.binmode

Просмотреть файл

@ -3,6 +3,22 @@ require_relative 'helper'
module Psych
class TestStream < TestCase
[
[Psych::Nodes::Alias, :alias?],
[Psych::Nodes::Document, :document?],
[Psych::Nodes::Mapping, :mapping?],
[Psych::Nodes::Scalar, :scalar?],
[Psych::Nodes::Sequence, :sequence?],
[Psych::Nodes::Stream, :stream?],
].each do |klass, block|
define_method :"test_predicate_#{block}" do
rb = Psych.parse_stream("---\n- foo: bar\n- &a !!str Anchored\n- *a")
nodes = rb.grep(klass)
assert_operator nodes.length, :>, 0
assert_equal nodes, rb.find_all(&block)
end
end
def test_parse_partial
rb = Psych.parse("--- foo\n...\n--- `").to_ruby
assert_equal 'foo', rb