Module: Eskimo::HTML::Util
- Defined in:
- lib/eskimo/html/util.rb
Constant Summary collapse
- TAG_NAME_START_CODEPOINTS =
"@:A-Z_a-z\u{C0}-\u{D6}\u{D8}-\u{F6}\u{F8}-\u{2FF}\u{370}-\u{37D}\u{37F}-\u{1FFF}" \ "\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}" \ "\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}"
- TAG_NAME_REPLACEMENT_CHAR =
"_"- TAG_NAME_FOLLOWING_CODEPOINTS =
"#{TAG_NAME_START_CODEPOINTS}\\-.0-9\u{B7}\u{0300}-\u{036F}\u{203F}-\u{2040}"- INVALID_TAG_NAME_FOLLOWING_REGEXP =
/[^#{TAG_NAME_FOLLOWING_CODEPOINTS}]/- INVALID_TAG_NAME_START_REGEXP =
/[^#{TAG_NAME_START_CODEPOINTS}]/- SAFE_XML_TAG_NAME_REGEXP =
/\A[#{TAG_NAME_START_CODEPOINTS}][#{TAG_NAME_FOLLOWING_CODEPOINTS}]*\z/
Class Method Summary collapse
Class Method Details
.xml_name_escape(name) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/eskimo/html/util.rb', line 14 def self.xml_name_escape(name) name = name.to_s return "" if name.nil? || name == '' return name if name.match?(SAFE_XML_TAG_NAME_REGEXP) starting_char = name[0] starting_char.gsub!(INVALID_TAG_NAME_START_REGEXP, TAG_NAME_REPLACEMENT_CHAR) return starting_char if name.size == 1 following_chars = name[1..-1] following_chars.gsub!(INVALID_TAG_NAME_FOLLOWING_REGEXP, TAG_NAME_REPLACEMENT_CHAR) starting_char << following_chars end |