Sha256: 457ea539beecdd60cb96002754c6d1d1aef04913016d44235cda737e49a67397

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

module MiniSyntax
  module Highlighter
    module HTML
      def self.highlight(code)
        code = "#{code}"
        code.gsub! %r((<script( [a-z\-]+(=("|'|\w).*?\4)?)*>)(.*?)(</script>))m do
          %Q(#{$1}#{MiniSyntax.highlight($5, :javascript)}#{$6})
        end
        code.gsub! %r(<([a-z\-]+[1-6]?)(( [a-z\-]+(=("|").*?("|"))?)*)( /)?>)m do
          tag = $1
          xml_close_tag = $7
          attributes = $2.gsub %r( ([a-z\-]+)(=("|")(.*?)("|"))?)m do
            if %(onload onclick onmouseover onmousemove onmouseout onfocus onblur onkeyup onkeydown onkeypress).include?($1)
              %Q( <b>#{$1}</b>=#{$3}#{MiniSyntax.highlight($4, :javascript)}#{$3})
            else
              %Q( <b>#{$1}</b>#{$2})
            end
          end if $2
          %Q(<b>&lt;<em>#{tag}</em></b>#{attributes}<b>#{xml_close_tag}&gt;</b>)
        end
        code.gsub! %r(&lt;/([a-z\-]+[1-6]?)&gt;) do
          tag = $1
          %Q(<b>&lt;/<em>#{tag}</em>&gt;</b>)
        end
        code
      end
    end
  end
end

MiniSyntax.register(:html, MiniSyntax::Highlighter::HTML)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
minisyntax-0.2.5 lib/minisyntax/highlighter/html.rb