Sha256: 805bab13ae4da4231002e51ba3d31de77a06b27c56f068aaee18e711b7dbf086
Contents?: true
Size: 1.56 KB
Versions: 1
Compression:
Stored size: 1.56 KB
Contents
module Rouge module Lexers class TOML < RegexLexer desc 'the TOML configuration format' tag 'toml' filenames '*.toml' mimetypes 'text/x-toml' def self.analyze_text(text) return 0.1 if text =~ /\A\[[\w.]+\]\s*\w+\s*=\s*("\w+")+/ end identifier = /[\w.\S]+/ state :basic do rule /\s+/, 'Text' rule /#.*?$/, 'Comment' rule /(true|false)/, 'Keyword.Constant' rule /(?<!=)\s*\[[\w\d\S]+\]/, 'Name.Namespace' rule /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/, 'Literal.Date' rule /(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?/, 'Literal.Number.Float' rule /\d+[eE][+-]?[0-9]+j?/, 'Literal.Number.Float' rule /\-?\d+/, 'Literal.Number.Integer' end state :root do mixin :basic rule /(#{identifier})(\s*)(=)/ do group 'Name.Property'; group 'Text' group 'Punctuation' push :value end end state :value do rule /\n/, 'Text', :pop! mixin :content end state :content do mixin :basic rule /"/, 'Literal.String', :dq mixin :esc_str rule /\,/, 'Punctuation' rule /\[/, 'Punctuation', :array end state :dq do rule /"/, 'Literal.String', :pop! mixin :esc_str rule /[^\\"]+/, 'Literal.String' end state :esc_str do rule /\\[0t\tn\n "\\ r]/, 'Literal.String.Escape' end state :array do mixin :content rule /\]/, 'Punctuation', :pop! end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rouge-0.2.14 | lib/rouge/lexers/toml.rb |