module Chef::Mixin::XMLEscape::PureRuby

Constants

CP1252
PREDEFINED

www.w3.org/TR/REC-xml/#dt-chardata

VALID

www.w3.org/TR/REC-xml/#charsets

Public Instance Methods

xml_escape(unescaped_str) click to toggle source
# File lib/chef/mixin/xml_escape.rb, line 105
def xml_escape(unescaped_str)
  unescaped_str.unpack("U*").map { |char| xml_escape_char!(char) }.join
rescue
  unescaped_str.unpack("C*").map { |char| xml_escape_char!(char) }.join
end

Private Instance Methods

xml_escape_char!(char) click to toggle source
# File lib/chef/mixin/xml_escape.rb, line 113
def xml_escape_char!(char)
  char = CP1252[char] || char
  char = 42 unless VALID.detect { |range| range.include? char }
  char = PREDEFINED[char] || (char < 128 ? char.chr : "&##{char};")
end