# File lib/facets/more/bbcode.rb, line 206
  def BBCode.html_to_bbcode(string)
      return "" if string.nil? || string.to_s.strip.empty?
      result = ""

      ## Iterate over lines
      string.split(/<br *\/?>/i).each do |line|
          styles = { "strong" => "b", "b" => "b",
                      "em"     => "i", "i" => "i",
                      "u"      => "u" }

          ## preserve B, I, U
          styles.each do |html,code|
              line.gsub!(/<#{html}>/i, "[#{code.upcase}]")
              line.gsub!(/<\/#{html}>/i, "[/#{code.upcase}]")
          end

          ## TODO: COLORs
          ## TODO: SIZEs
          ## TODO: FONTs

          ## EMAIL
          line.gsub!(/<a +href *= *\"mailto:(.*?)\".*?>.*?<\/a>/i, "[EMAIL]\\1[/EMAIL]")

          ## URL
          line.gsub!(/<a +href *= *\"((?:https?|ftp):\/\/.*?)\".*?>(.*?)<\/a>/i, "[URL=\\1]\\2[/URL]")

          ## Other refs + closing tags => throw away
          line.gsub!(/<a +href *= *\".*?\".*?>/i, "")
          line.gsub!(/<\/a>/i,            "")

          ## IMG
          line.gsub!(/<img +src *= *\"(.*?)\".*?\/?>/i, "[IMG=\\1]")

          ## CENTER (right/left??)
          line.gsub!(/<center>/i,   "[ALIGN=center]")
          line.gsub!(/<\/center>/i, "[/ALIGN]")

          ## QUOTE
          line.gsub!(/<(?:xmp|pre)>/i,   "[QUOTE]")
          line.gsub!(/<\/(?:xmp|pre)>/i, "[/QUOTE]")

          ## LIST
          line.gsub!(/<ul>/i,      "\n[LIST]\n")
          line.gsub!(/<\/ul>/i,    "\n[/LIST]\n")
          line.gsub!(/<li *\/?> */i, "\n[*] ")

          ## Unkown tags => throw away
          line.gsub!(/<.*? *\/?>/, "")

          result << sprintf("%s<br />\n", line)
      end

      return result.gsub!(/<br *\/?>/i, "\n")
  end