Sha256: 50e2477e052473104274886ae0b1a2d9874aefd1b39918fa7f98e7df3cd0991a
Contents?: true
Size: 1.4 KB
Versions: 12
Compression:
Stored size: 1.4 KB
Contents
module Rouge module Lexers class XML < RegexLexer desc %q(<desc for="this-lexer">XML</desc>) tag 'xml' filenames *%w(*.xml *.xsl *.rss *.xslt *.xsd *.wsdl) mimetypes *%w( text/xml application/xml image/svg+xml application/rss+xml application/atom+xml ) def self.analyze_text(text) return 0.9 if text.doctype? return 0.8 if text =~ /\A<\?xml\b/ start = text[0..1000] return 0.6 if start =~ %r(<xml\b) return 0.3 if start =~ %r(<.+?>.*?</.+?>)m end state :root do rule /[^<&]+/, 'Text' rule /&\S*?;/, 'Name.Entity' rule /<!\[CDATA\[.*?\]\]\>/, 'Comment.Preproc' rule /<!--/, 'Comment', :comment rule /<\?.*?\?>/, 'Comment.Preproc' rule /<![^>]*>/, 'Comment.Preproc' # open tags rule %r(<\s*[\w:.-]+)m, 'Name.Tag', :tag # self-closing tags rule %r(<\s*/\s*[\w:.-]+\s*>)m, 'Name.Tag' 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', :attr rule %r(/?\s*>), 'Name.Tag', :pop! end state :attr do rule /\s+/m, 'Text' rule /".*?"|'.*?'|[^\s>]+/, 'Literal.String', :pop! end end end end
Version data entries
12 entries across 12 versions & 1 rubygems