]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
Utils: fix ircify_html (the final stripsvn diff lib/rbot/core/utils/extends.rb could...
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sun, 25 Mar 2007 18:04:12 +0000 (18:04 +0000)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sun, 25 Mar 2007 18:04:12 +0000 (18:04 +0000)
lib/rbot/core/utils/extends.rb

index c43f3f3bf1b55ab292ac92b45a00165336f09eba..7022fb9123ac17b2d3df543e0d0f66002bbea342 100644 (file)
@@ -51,22 +51,32 @@ class ::String
     ## Maybe make it configurable?
     # txt.gsub!(/<\/?a( [^>]*)?>/, "#{Reverse}")
 
-    # Paragraph and br tags are converted to whitespace.
+    # Paragraph and br tags are converted to whitespace
     txt.gsub!(/<\/?(p|br)\s*\/?\s*>/, ' ')
     txt.gsub!("\n", ' ')
+    txt.gsub!("\r", ' ')
 
     # All other tags are just removed
     txt.gsub!(/<[^>]+>/, '')
 
+    # Convert HTML entities. We do it now to be able to handle stuff
+    # such as &nbsp;
+    txt = Utils.decode_html_entities(txt)
+
     # Remove double formatting options, since they only waste bytes
     txt.gsub!(/#{Bold}(\s*)#{Bold}/, '\1')
     txt.gsub!(/#{Underline}(\s*)#{Underline}/, '\1')
 
+    # Simplify whitespace that appears on both sides of a formatting option
+    txt.gsub!(/\s+(#{Bold}|#{Underline})\s+/, ' \1')
+    txt.sub!(/\s+(#{Bold}|#{Underline})\z/, '\1')
+    txt.sub!(/\A(#{Bold}|#{Underline})\s+/, '\1')
+
     # And finally whitespace is squeezed
     txt.gsub!(/\s+/, ' ')
 
     # Decode entities and strip whitespace
-    return Utils.decode_html_entities(txt).strip!
+    return txt.strip
   end
 
   # This method will strip all HTML crud from the receiver