mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
yaml_tree.rb: fix anchor
* ext/psych/lib/psych/visitors/yaml_tree.rb (visit_String): anchors like `\Z` are not valid inside character class. use negative-lookahead instead. Fixes: https://github.com/tenderlove/psych/issues/221 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
748372be97
commit
f59ce53f26
3 changed files with 24 additions and 9 deletions
|
@ -1,3 +1,10 @@
|
|||
Sat Jan 17 23:59:15 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* ext/psych/lib/psych/visitors/yaml_tree.rb (visit_String):
|
||||
anchors like `\Z` are not valid inside character class. use
|
||||
negative-lookahead instead.
|
||||
Fixes: https://github.com/tenderlove/psych/issues/221
|
||||
|
||||
Sat Jan 17 23:42:27 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* configure.in: get rid of pattern substitution, which is not
|
||||
|
|
|
@ -310,7 +310,7 @@ module Psych
|
|||
style = Nodes::Scalar::LITERAL
|
||||
plain = false
|
||||
quote = false
|
||||
elsif o =~ /\n[^\Z]/ # match \n except blank line at the end of string
|
||||
elsif o =~ /\n(?!\Z)/ # match \n except blank line at the end of string
|
||||
style = Nodes::Scalar::LITERAL
|
||||
elsif o == '<<'
|
||||
style = Nodes::Scalar::SINGLE_QUOTED
|
||||
|
|
|
@ -66,18 +66,26 @@ module Psych
|
|||
end
|
||||
|
||||
def test_literal_when_inner_and_final_line_break
|
||||
str = "Lorem ipsum\ndolor\n"
|
||||
yaml = Psych.dump str, line_width: 12
|
||||
assert_match /---\s*|\n(.*\n){2}\Z/, yaml
|
||||
assert_equal str, Psych.load(yaml)
|
||||
[
|
||||
"Lorem ipsum\ndolor\n",
|
||||
"Lorem ipsum\nZolor\n",
|
||||
].each do |str|
|
||||
yaml = Psych.dump str, line_width: 12
|
||||
assert_match /---\s*\|\n(.*\n){2}\Z/, yaml
|
||||
assert_equal str, Psych.load(yaml)
|
||||
end
|
||||
end
|
||||
|
||||
# http://yaml.org/spec/1.2/2009-07-21/spec.html#id2593651
|
||||
def test_literal_strip_when_inner_line_break_and_no_final_line_break
|
||||
str = "Lorem ipsum\ndolor"
|
||||
yaml = Psych.dump str, line_width: 12
|
||||
assert_match /---\s*|-\n(.*\n){2}\Z/, yaml
|
||||
assert_equal str, Psych.load(yaml)
|
||||
[
|
||||
"Lorem ipsum\ndolor",
|
||||
"Lorem ipsum\nZolor",
|
||||
].each do |str|
|
||||
yaml = Psych.dump str, line_width: 12
|
||||
assert_match /---\s*\|-\n(.*\n){2}\Z/, yaml
|
||||
assert_equal str, Psych.load(yaml)
|
||||
end
|
||||
end
|
||||
|
||||
def test_cycle_x
|
||||
|
|
Loading…
Reference in a new issue