1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/lib/yaml/encoding.rb
knu 6fb3ce9804 * lib/yaml/baseemitter.rb, lib/yaml/encoding.rb: performance
tuning around String#gsub.

* lib/yaml/tag.rb: Replace nodoc with stopdoc so Module methods get
  documented.

* lib/yaml/store.rb (YAML::load): modified to support empty
  database.

* lib/yaml/store.rb (YAML::Store::marshal_dump_supports_canonical_option?):
  add a method to support faster PStore.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-19 11:38:35 +00:00

33 lines
605 B
Ruby

#
# Handle Unicode-to-Internal conversion
#
module YAML
#
# Escape the string, condensing common escapes
#
def YAML.escape( value, skip = "" )
value.gsub( /\\/, "\\\\\\" ).
gsub( /"/, "\\\"" ).
gsub( /([\x00-\x1f])/ ) do
skip[$&] || ESCAPES[ $&.unpack("C")[0] ]
end
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}))/ ) {
if $3
["#$3".hex ].pack('U*')
elsif $2
[$2].pack( "H2" )
else
UNESCAPES[$1]
end
}
end
end