Next 3.7 Enhancing built-in classes Prev

Enhancing built-in classes

class String
   def unescapeHTML!()
      gsub!(/&(.*?);/) {
         case $1
         when /\Aamp\z/i           then '&'
         when /\Aquot\z/i          then '"'
         when /\Agt\z/i            then '>'
         when /\Alt\z/i            then '<'
         when /\A#(\d+)\z/         then Integer($1).chr
         when /\A#x([0-9a-f]+)\z/i then $1.hex.chr
         end
      }
      self
   end

   def unescapeHTML()
      dup().unescapeHTML!
   end
end

p "1&lt;2 &amp;&amp; 4&gt;3".unescapeHTML  # 1<2 && 4>3

Next Ruby for Perl programmers Prev