mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
e921ea2d78
* ext/syck/implicit.c (syck_match_implicit): added !merge and !default. * lib/yaml/constants.rb: remove '\z' escape. * lib/yaml/emitter.rb: ensure reset of @seq_map shortcut flag. * lib/yaml/encoding.rb: remove Unicode translation methods. * lib/yaml/rubytypes.rb: improved round-tripping of Strings. [ruby-core:1134] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
29 lines
527 B
Ruby
29 lines
527 B
Ruby
#
|
|
# Handle Unicode-to-Internal conversion
|
|
#
|
|
|
|
module YAML
|
|
|
|
#
|
|
# Escape the string, condensing common escapes
|
|
#
|
|
def YAML.escape( value )
|
|
value.gsub( /\\/, "\\\\\\" ).gsub( /"/, "\\\"" ).gsub( /([\x00-\x1f])/ ) { |x| ESCAPES[ x.unpack("C")[0] ] }
|
|
end
|
|
|
|
#
|
|
# Unescape the condenses escapes
|
|
#
|
|
def YAML.unescape( value )
|
|
value.gsub( /\\(?:([nevfbart\\])|0?x([0-9a-fA-F]{2})|u([0-9a-fA-F]{4}))/ ) { |x|
|
|
if $3
|
|
["#$3".hex ].pack('U*')
|
|
elsif $2
|
|
[$2].pack( "H2" )
|
|
else
|
|
UNESCAPES[$1]
|
|
end
|
|
}
|
|
end
|
|
|
|
end
|