Sha256: 2d23e98cf8db22b3a031d5ab1aaa9bfefbd295fe18463c16ab3fe04ac6142ac5
Contents?: true
Size: 800 Bytes
Versions: 3
Compression:
Stored size: 800 Bytes
Contents
class HTMLEntities class Decoder #:nodoc: def initialize(flavor) @flavor = flavor @map = HTMLEntities::MAPPINGS[@flavor] @named_entity_regexp = named_entity_regexp end def decode(source) source.to_s.gsub(@named_entity_regexp) { (codepoint = @map[$1]) ? [codepoint].pack('U') : $& }.gsub(/&#(?:([0-9]{1,7})|x([0-9a-f]{1,6}));/i) { $1 ? [$1.to_i].pack('U') : [$2.to_i(16)].pack('U') } end private def named_entity_regexp key_lengths = @map.keys.map{ |k| k.length } entity_name_pattern = if @flavor == 'expanded' '(?:b\.)?[a-z][a-z0-9]' else '[a-z][a-z0-9]' end /&(#{ entity_name_pattern }{#{ key_lengths.min - 1 },#{ key_lengths.max - 1 }});/i end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
htmlentities-4.2.3 | lib/htmlentities/decoder.rb |
htmlentities-4.2.2 | lib/htmlentities/decoder.rb |
htmlentitties-4.2.1 | lib/htmlentities/decoder.rb |