# File lib/facet/bbcode.rb, line 287
    def BBCode.bbcode_to_html(string)
        return "" if string.nil? || string.to_s.strip.empty?
        result = ""
        quote = 0

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

            ## preserve B, I, U
            styles.each do |code,html|
                line.gsub!(/\[#{code}\]/i, "<#{html}>")
                line.gsub!(/\[\/#{code}\]/i, "</#{html}>")
            end
            
            ## COLOR => font color=... (TODO: should be numeric!)
            line.gsub!(/\[COLOR=(.*?)\]/i, "<font color=\"\\1\">")
            line.gsub!(/\[\/COLOR\]/i,     "</font>")

            ## SIZE => font size=...
            line.gsub!(/\[SIZE=(.*?)\]/i, "<font size=\"\\1\">")
            line.gsub!(/\[\/SIZE\]/i,     "</font>")

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

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

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

            ## QUOTE
            quote+=1 if line =~ /\[QUOTE\]/i
            quote-=1 if (line =~ /\[\/QUOTE\]/i) && (quote > -1)
            line.gsub!(/\[QUOTE\]/i,   "<pre>\n")
            line.gsub!(/\[\/QUOTE\]/i, "</pre>\n")
            line.gsub!(/^/, "&#62;"*quote) if quote > 0

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

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

            ## FONT => font ??????
            ## ?BLUR?, FADE?

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

        return result
    end