mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Merge Pysch 3.0.3.pre1.
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:
parent
13dc8e4ef0
commit
f114089585
14 changed files with 100 additions and 11 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue