Module: Rouge::Lexers
- Defined in:
- lib/rouge/lexers/c.rb,
lib/rouge/lexers/r.rb,
lib/rouge/lexers/go.rb,
lib/rouge/lexers/io.rb,
lib/rouge/lexers/cpp.rb,
lib/rouge/lexers/css.rb,
lib/rouge/lexers/erb.rb,
lib/rouge/lexers/ini.rb,
lib/rouge/lexers/lua.rb,
lib/rouge/lexers/php.rb,
lib/rouge/lexers/sed.rb,
lib/rouge/lexers/sql.rb,
lib/rouge/lexers/tcl.rb,
lib/rouge/lexers/tex.rb,
lib/rouge/lexers/xml.rb,
lib/rouge/lexers/conf.rb,
lib/rouge/lexers/diff.rb,
lib/rouge/lexers/haml.rb,
lib/rouge/lexers/html.rb,
lib/rouge/lexers/http.rb,
lib/rouge/lexers/java.rb,
lib/rouge/lexers/llvm.rb,
lib/rouge/lexers/make.rb,
lib/rouge/lexers/perl.rb,
lib/rouge/lexers/ruby.rb,
lib/rouge/lexers/rust.rb,
lib/rouge/lexers/sass.rb,
lib/rouge/lexers/scss.rb,
lib/rouge/lexers/text.rb,
lib/rouge/lexers/toml.rb,
lib/rouge/lexers/viml.rb,
lib/rouge/lexers/yaml.rb,
lib/rouge/lexers/nginx.rb,
lib/rouge/lexers/shell.rb,
lib/rouge/lexers/csharp.rb,
lib/rouge/lexers/elixir.rb,
lib/rouge/lexers/erlang.rb,
lib/rouge/lexers/factor.rb,
lib/rouge/lexers/groovy.rb,
lib/rouge/lexers/prolog.rb,
lib/rouge/lexers/puppet.rb,
lib/rouge/lexers/python.rb,
lib/rouge/lexers/racket.rb,
lib/rouge/lexers/scheme.rb,
lib/rouge/lexers/clojure.rb,
lib/rouge/lexers/gherkin.rb,
lib/rouge/lexers/haskell.rb,
lib/rouge/lexers/markdown.rb,
lib/rouge/lexers/smalltalk.rb,
lib/rouge/lexers/handlebars.rb,
lib/rouge/lexers/javascript.rb,
lib/rouge/lexers/common_lisp.rb,
lib/rouge/lexers/sass/common.rb,
lib/rouge/lexers/coffeescript.rb,
lib/rouge/lexers/lua/builtins.rb,
lib/rouge/lexers/php/builtins.rb,
lib/rouge/lexers/viml/keywords.rb,
lib/rouge/lexers/gherkin/keywords.rb,
lib/rouge/lexers/literate_haskell.rb,
lib/rouge/lexers/literate_coffeescript.rb
Defined Under Namespace
Classes: C, CSS, CSharp, Clojure, Coffeescript, CommonLisp, Conf, Cpp, Diff, ERB, Elixir, Erlang, Factor, Gherkin, Go, Groovy, HTML, HTTP, Haml, Handlebars, Haskell, INI, IO, JSON, Java, Javascript, LLVM, LiterateCoffeescript, LiterateHaskell, Lua, Make, Markdown, Nginx, PHP, Perl, Prolog, Puppet, Python, R, Racket, Ruby, Rust, SQL, Sass, Scheme, Scss, Sed, Shell, Smalltalk, TCL, TOML, TeX, Text, VimL, XML, YAML
Constant Summary collapse
- SASS_COMMON =
shared states with SCSS TODO: make this less nasty to do
proc do id = /[\w-]+/ state :content_common do rule /@for\b/, 'Keyword', :for rule /@(debug|warn|if|while)/, 'Keyword', :value rule /(@mixin)(\s+)(#{id})/ do group 'Keyword'; group 'Text'; group 'Name.Function' push :value end rule /@extend\b/, 'Keyword', :selector rule /(@include)(\s+)(#{id})/ do group 'Keyword'; group 'Text'; group 'Name.Decorator' push :value end rule /@#{id}/, 'Keyword', :selector # $variable: assignment rule /([$]#{id})([ \t]*)(:)/ do group 'Name.Variable'; group 'Text'; group 'Punctuation' push :value end end state :value do mixin :end_section rule /[ \t]+/, 'Text' rule /[$]#{id}/, 'Name.Variable' rule /url[(]/, 'Literal.String.Other', :string_url rule /#{id}(?=\s*[(])/, 'Name.Function' rule /%#{id}/, 'Name.Decorator' # named literals rule /(true|false)\b/, 'Name.Pseudo' rule /(and|or|not)\b/, 'Operator.Word' # colors and numbers rule /#[a-z0-9]{1,6}/i, 'Literal.Number.Hex' rule /-?\d+(%|[a-z]+)?/, 'Literal.Number' rule /-?\d*\.\d+(%|[a-z]+)?/, 'Literal.Number.Integer' mixin :has_strings mixin :has_interp rule /[~^*!&%<>\|+=@:,.\/?-]+/, 'Operator' rule /[\[\]()]+/, 'Punctuation' rule %r(/[*]), 'Comment.Multiline', :inline_comment rule %r(//[^\n]*), 'Comment.Single' # identifiers rule(id) do |m| if CSS.builtins.include? m[0] token 'Name.Builtin' elsif CSS.constants.include? m[0] token 'Name.Constant' else token 'Name' end end end state :has_interp do rule /[#][{]/, 'Literal.String.Interpol', :interpolation end state :has_strings do rule /"/, 'Literal.String.Double', :dq rule /'/, 'Literal.String.Single', :sq end state :interpolation do rule /}/, 'Literal.String.Interpol', :pop! mixin :value end state :selector do mixin :end_section mixin :has_strings mixin :has_interp rule /[ \t]+/, 'Text' rule /:/, 'Name.Decorator', :pseudo_class rule /[.]/, 'Name.Class', :class rule /#/, 'Name.Namespace', :id rule /%/, 'Name.Variable', :placeholder rule id, 'Name.Tag' rule /&/, 'Keyword' rule /[~^*!&\[\]()<>\|+=@:;,.\/?-]/, 'Operator' end state :dq do rule /"/, 'Literal.String.Double', :pop! mixin :has_interp rule /(\\.|#(?![{])|[^\n"#])+/, 'Literal.String.Double' end state :sq do rule /'/, 'Literal.String.Single', :pop! mixin :has_interp rule /(\\.|#(?![{])|[^\n'#])+/, 'Literal.String.Single' end state :string_url do rule /[)]/, 'Literal.String.Other', :pop! rule /(\\.|#(?![{])|[^\n)#])+/, 'Literal.String.Other' mixin :has_interp end state :selector_piece do mixin :has_interp rule(//) { pop! } end state :pseudo_class do rule id, 'Name.Decorator' mixin :selector_piece end state :class do rule id, 'Name.Class' mixin :selector_piece end state :id do rule id, 'Name.Namespace' mixin :selector_piece end state :placeholder do rule id, 'Name.Variable' mixin :selector_piece end state :for do rule /(from|to|through)/, 'Operator.Word' mixin :value end state :attr_common do mixin :has_interp rule id do |m| if CSS.attributes.include? m[0] token 'Name.Label' else token 'Name.Attribute' end end end state :attribute do mixin :attr_common rule /([ \t]*)(:)/ do group 'Text'; group 'Punctuation' push :value end end state :inline_comment do rule /(\\#|#(?=[^\n{])|\*(?=[^\n\/])|[^\n#*])+/, 'Comment.Multiline' mixin :has_interp rule %r([*]/), 'Comment.Multiline', :pop! end end