nicojensen.de/vendor/bundle/gems/rouge-3.3.0/lib/rouge/lexers/mxml.rb
Nico Jensen b59a203dbb Init
Init commit
2019-03-12 13:49:49 +01:00

69 lines
1.6 KiB
Ruby

# -*- coding: utf-8 -*- #
# frozen_string_literal: true
module Rouge
module Lexers
class MXML < RegexLexer
title "MXML"
desc "MXML"
tag 'mxml'
filenames '*.mxml'
mimetypes 'application/xv+xml'
state :root do
rule /[^<&]+/, Text
rule /&\S*?;/, Name::Entity
rule /<!\[CDATA\[/m do
token Comment::Preproc
push :actionscript_content
end
rule /<!--/, Comment, :comment
rule /<\?.*?\?>/, Comment::Preproc
rule /<![^>]*>/, Comment::Preproc
rule %r(<\s*[\w:.-]+)m, Name::Tag, :tag # opening tags
rule %r(<\s*/\s*[\w:.-]+\s*>)m, Name::Tag # closing tags
end
state :comment do
rule /[^-]+/m, Comment
rule /-->/, Comment, :pop!
rule /-/, Comment
end
state :tag do
rule /\s+/m, Text
rule /[\w.:-]+\s*=/m, Name::Attribute, :attribute
rule %r(/?\s*>), Name::Tag, :root
end
state :attribute do
rule /\s+/m, Text
rule /(")({|@{)/m do
groups Str, Punctuation
push :actionscript_attribute
end
rule /".*?"|'.*?'|[^\s>]+/, Str, :tag
end
state :actionscript_content do
rule /\]\]\>/m, Comment::Preproc, :pop!
rule /.*?(?=\]\]\>)/m do
delegate Actionscript
end
end
state :actionscript_attribute do
rule /(})(")/m do
groups Punctuation, Str
push :tag
end
rule /.*?(?=}")/m do
delegate Actionscript
end
end
end
end
end