rouge 1.7.7 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/rouge.rb +1 -0
 - data/lib/rouge/cli.rb +1 -1
 - data/lib/rouge/demos/liquid +11 -0
 - data/lib/rouge/lexer.rb +8 -0
 - data/lib/rouge/lexers/apache.rb +1 -0
 - data/lib/rouge/lexers/apple_script.rb +1 -0
 - data/lib/rouge/lexers/c.rb +1 -0
 - data/lib/rouge/lexers/clojure.rb +1 -0
 - data/lib/rouge/lexers/coffeescript.rb +1 -0
 - data/lib/rouge/lexers/common_lisp.rb +1 -0
 - data/lib/rouge/lexers/conf.rb +1 -0
 - data/lib/rouge/lexers/cpp.rb +1 -0
 - data/lib/rouge/lexers/csharp.rb +1 -0
 - data/lib/rouge/lexers/css.rb +1 -0
 - data/lib/rouge/lexers/dart.rb +1 -0
 - data/lib/rouge/lexers/diff.rb +1 -0
 - data/lib/rouge/lexers/elixir.rb +1 -0
 - data/lib/rouge/lexers/erb.rb +1 -0
 - data/lib/rouge/lexers/erlang.rb +1 -0
 - data/lib/rouge/lexers/factor.rb +1 -0
 - data/lib/rouge/lexers/gherkin.rb +1 -1
 - data/lib/rouge/lexers/go.rb +1 -0
 - data/lib/rouge/lexers/groovy.rb +1 -0
 - data/lib/rouge/lexers/haml.rb +1 -0
 - data/lib/rouge/lexers/handlebars.rb +1 -0
 - data/lib/rouge/lexers/haskell.rb +1 -0
 - data/lib/rouge/lexers/html.rb +1 -0
 - data/lib/rouge/lexers/http.rb +1 -0
 - data/lib/rouge/lexers/ini.rb +1 -0
 - data/lib/rouge/lexers/io.rb +1 -0
 - data/lib/rouge/lexers/java.rb +1 -0
 - data/lib/rouge/lexers/javascript.rb +1 -0
 - data/lib/rouge/lexers/liquid.rb +282 -0
 - data/lib/rouge/lexers/literate_coffeescript.rb +1 -0
 - data/lib/rouge/lexers/literate_haskell.rb +2 -2
 - data/lib/rouge/lexers/llvm.rb +1 -0
 - data/lib/rouge/lexers/lua.rb +1 -0
 - data/lib/rouge/lexers/make.rb +1 -0
 - data/lib/rouge/lexers/markdown.rb +1 -0
 - data/lib/rouge/lexers/matlab.rb +1 -0
 - data/lib/rouge/lexers/moonscript.rb +1 -0
 - data/lib/rouge/lexers/nginx.rb +1 -0
 - data/lib/rouge/lexers/nim.rb +5 -4
 - data/lib/rouge/lexers/objective_c.rb +1 -1
 - data/lib/rouge/lexers/ocaml.rb +1 -1
 - data/lib/rouge/lexers/perl.rb +1 -0
 - data/lib/rouge/lexers/php.rb +1 -0
 - data/lib/rouge/lexers/plain_text.rb +1 -0
 - data/lib/rouge/lexers/prolog.rb +1 -0
 - data/lib/rouge/lexers/properties.rb +1 -0
 - data/lib/rouge/lexers/puppet.rb +1 -0
 - data/lib/rouge/lexers/python.rb +1 -0
 - data/lib/rouge/lexers/qml.rb +1 -1
 - data/lib/rouge/lexers/r.rb +2 -2
 - data/lib/rouge/lexers/racket.rb +1 -0
 - data/lib/rouge/lexers/ruby.rb +3 -2
 - data/lib/rouge/lexers/rust.rb +1 -0
 - data/lib/rouge/lexers/sass.rb +1 -0
 - data/lib/rouge/lexers/scala.rb +1 -0
 - data/lib/rouge/lexers/scheme.rb +1 -0
 - data/lib/rouge/lexers/scss.rb +1 -0
 - data/lib/rouge/lexers/sed.rb +1 -0
 - data/lib/rouge/lexers/shell.rb +1 -0
 - data/lib/rouge/lexers/slim.rb +3 -2
 - data/lib/rouge/lexers/smalltalk.rb +1 -0
 - data/lib/rouge/lexers/sml.rb +1 -1
 - data/lib/rouge/lexers/sql.rb +1 -0
 - data/lib/rouge/lexers/swift.rb +24 -7
 - data/lib/rouge/lexers/tcl.rb +1 -0
 - data/lib/rouge/lexers/tex.rb +1 -0
 - data/lib/rouge/lexers/toml.rb +1 -0
 - data/lib/rouge/lexers/vb.rb +1 -1
 - data/lib/rouge/lexers/viml.rb +1 -0
 - data/lib/rouge/lexers/xml.rb +1 -0
 - data/lib/rouge/lexers/yaml.rb +1 -0
 - data/lib/rouge/themes/molokai.rb +82 -0
 - data/lib/rouge/themes/monokai.rb +4 -2
 - data/lib/rouge/version.rb +1 -1
 - metadata +5 -2
 
| 
         @@ -3,6 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module Rouge
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Lexers
         
     | 
| 
       5 
5 
     | 
    
         
             
                class LiterateHaskell < RegexLexer
         
     | 
| 
      
 6 
     | 
    
         
            +
                  title "Literate Haskell"
         
     | 
| 
       6 
7 
     | 
    
         
             
                  desc 'Literate haskell'
         
     | 
| 
       7 
8 
     | 
    
         
             
                  tag 'literate_haskell'
         
     | 
| 
       8 
9 
     | 
    
         
             
                  aliases 'lithaskell', 'lhaskell', 'lhs'
         
     | 
| 
         @@ -16,7 +17,6 @@ module Rouge 
     | 
|
| 
       16 
17 
     | 
    
         
             
                  start { haskell.reset! }
         
     | 
| 
       17 
18 
     | 
    
         | 
| 
       18 
19 
     | 
    
         
             
                  # TODO: support TeX versions as well.
         
     | 
| 
       19 
     | 
    
         
            -
                  # TODO: enforce a blank line before and after code
         
     | 
| 
       20 
20 
     | 
    
         
             
                  state :root do
         
     | 
| 
       21 
21 
     | 
    
         
             
                    rule /\s*?\n(?=>)/, Text, :code
         
     | 
| 
       22 
22 
     | 
    
         
             
                    rule /.*?\n/, Text
         
     | 
| 
         @@ -24,7 +24,7 @@ module Rouge 
     | 
|
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                  state :code do
         
     | 
| 
       27 
     | 
    
         
            -
                    rule /(>)(  
     | 
| 
      
 27 
     | 
    
         
            +
                    rule /(>)( .*?(\n|\z))/ do |m|
         
     | 
| 
       28 
28 
     | 
    
         
             
                      token Name::Label, m[1]
         
     | 
| 
       29 
29 
     | 
    
         
             
                      delegate haskell, m[2]
         
     | 
| 
       30 
30 
     | 
    
         
             
                    end
         
     | 
    
        data/lib/rouge/lexers/llvm.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/lua.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/make.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/matlab.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/nginx.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/nim.rb
    CHANGED
    
    | 
         @@ -4,6 +4,7 @@ module Rouge 
     | 
|
| 
       4 
4 
     | 
    
         
             
              module Lexers
         
     | 
| 
       5 
5 
     | 
    
         
             
                class Nim < RegexLexer
         
     | 
| 
       6 
6 
     | 
    
         
             
                  # This is pretty much a 1-1 port of the pygments NimrodLexer class
         
     | 
| 
      
 7 
     | 
    
         
            +
                  title "Nim"
         
     | 
| 
       7 
8 
     | 
    
         
             
                  desc "The Nim programming language (http://nim-lang.org/)"
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
                  tag 'nim'
         
     | 
| 
         @@ -13,8 +14,8 @@ module Rouge 
     | 
|
| 
       13 
14 
     | 
    
         
             
                  KEYWORDS = %w(
         
     | 
| 
       14 
15 
     | 
    
         
             
                    addr as asm atomic bind block break case cast const continue
         
     | 
| 
       15 
16 
     | 
    
         
             
                    converter defer discard distinct do elif else end enum except export
         
     | 
| 
       16 
     | 
    
         
            -
                    func finally for from generic if import include interface iterator let 
     | 
| 
       17 
     | 
    
         
            -
                    macro method mixin nil object of out proc ptr raise ref return static 
     | 
| 
      
 17 
     | 
    
         
            +
                    func finally for from generic if import include interface iterator let
         
     | 
| 
      
 18 
     | 
    
         
            +
                    macro method mixin nil object of out proc ptr raise ref return static
         
     | 
| 
       18 
19 
     | 
    
         
             
                    template try tuple type using var when while with without yield
         
     | 
| 
       19 
20 
     | 
    
         
             
                  )
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
         @@ -29,7 +30,7 @@ module Rouge 
     | 
|
| 
       29 
30 
     | 
    
         
             
                  TYPES = %w(
         
     | 
| 
       30 
31 
     | 
    
         
             
                   int int8 int16 int32 int64 float float32 float64 bool char range array
         
     | 
| 
       31 
32 
     | 
    
         
             
                   seq set string
         
     | 
| 
       32 
     | 
    
         
            -
                  ) 
     | 
| 
      
 33 
     | 
    
         
            +
                  )
         
     | 
| 
       33 
34 
     | 
    
         | 
| 
       34 
35 
     | 
    
         
             
                  NAMESPACE = %w(
         
     | 
| 
       35 
36 
     | 
    
         
             
                    from import include
         
     | 
| 
         @@ -133,7 +134,7 @@ module Rouge 
     | 
|
| 
       133 
134 
     | 
    
         
             
                    #       since we can't pass array of states like w/ Pygments.
         
     | 
| 
       134 
135 
     | 
    
         
             
                    rule(/[0-9][0-9_]*(?=([eE.]|'?[fF](32|64)))/) do |number|
         
     | 
| 
       135 
136 
     | 
    
         
             
                     push :floatsuffix
         
     | 
| 
       136 
     | 
    
         
            -
                     push :floatnumber 
     | 
| 
      
 137 
     | 
    
         
            +
                     push :floatnumber
         
     | 
| 
       137 
138 
     | 
    
         
             
                     token Num::Float
         
     | 
| 
       138 
139 
     | 
    
         
             
                    end
         
     | 
| 
       139 
140 
     | 
    
         
             
                    rule(/0[xX][a-fA-F0-9][a-fA-F0-9_]*/, Num::Hex,     :intsuffix)
         
     | 
    
        data/lib/rouge/lexers/ocaml.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/perl.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/php.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/prolog.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/puppet.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/python.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/qml.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/r.rb
    CHANGED
    
    | 
         @@ -3,10 +3,11 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module Rouge
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Lexers
         
     | 
| 
       5 
5 
     | 
    
         
             
                class R < RegexLexer
         
     | 
| 
      
 6 
     | 
    
         
            +
                  title "R"
         
     | 
| 
       6 
7 
     | 
    
         
             
                  desc 'The R statistics language (r-project.org)'
         
     | 
| 
       7 
8 
     | 
    
         
             
                  tag 'r'
         
     | 
| 
       8 
9 
     | 
    
         
             
                  aliases 'r', 'R', 's', 'S'
         
     | 
| 
       9 
     | 
    
         
            -
                  filenames '*.R', ' 
     | 
| 
      
 10 
     | 
    
         
            +
                  filenames '*.R', '.Rhistory', '.Rprofile'
         
     | 
| 
       10 
11 
     | 
    
         
             
                  mimetypes 'text/x-r-source', 'text/x-r', 'text/x-R'
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
                  mimetypes 'text/x-r', 'application/x-r'
         
     | 
| 
         @@ -19,7 +20,6 @@ module Rouge 
     | 
|
| 
       19 
20 
     | 
    
         | 
| 
       20 
21 
     | 
    
         
             
                  def self.analyze_text(text)
         
     | 
| 
       21 
22 
     | 
    
         
             
                    return 1 if text.shebang? 'Rscript'
         
     | 
| 
       22 
     | 
    
         
            -
                    return 0.1 if text.include? '->'
         
     | 
| 
       23 
23 
     | 
    
         
             
                  end
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                  state :root do
         
     | 
    
        data/lib/rouge/lexers/racket.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/ruby.rb
    CHANGED
    
    | 
         @@ -3,6 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module Rouge
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Lexers
         
     | 
| 
       5 
5 
     | 
    
         
             
                class Ruby < RegexLexer
         
     | 
| 
      
 6 
     | 
    
         
            +
                  title "Ruby"
         
     | 
| 
       6 
7 
     | 
    
         
             
                  desc "The Ruby programming language (ruby-lang.org)"
         
     | 
| 
       7 
8 
     | 
    
         
             
                  tag 'ruby'
         
     | 
| 
       8 
9 
     | 
    
         
             
                  aliases 'rb'
         
     | 
| 
         @@ -108,8 +109,8 @@ module Rouge 
     | 
|
| 
       108 
109 
     | 
    
         | 
| 
       109 
110 
     | 
    
         
             
                  keywords_pseudo = %w(
         
     | 
| 
       110 
111 
     | 
    
         
             
                    initialize new loop include extend raise attr_reader attr_writer
         
     | 
| 
       111 
     | 
    
         
            -
                    attr_accessor attr catch throw private module_function 
     | 
| 
       112 
     | 
    
         
            -
                    protected true false nil __FILE__ __LINE__
         
     | 
| 
      
 112 
     | 
    
         
            +
                    attr_accessor alias_method attr catch throw private module_function
         
     | 
| 
      
 113 
     | 
    
         
            +
                    public protected true false nil __FILE__ __LINE__
         
     | 
| 
       113 
114 
     | 
    
         
             
                  )
         
     | 
| 
       114 
115 
     | 
    
         | 
| 
       115 
116 
     | 
    
         
             
                  builtins_g = %w(
         
     | 
    
        data/lib/rouge/lexers/rust.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/sass.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/scala.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/scheme.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/scss.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/sed.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/shell.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/slim.rb
    CHANGED
    
    | 
         @@ -7,6 +7,7 @@ module Rouge 
     | 
|
| 
       7 
7 
     | 
    
         
             
                class Slim < RegexLexer
         
     | 
| 
       8 
8 
     | 
    
         
             
                  include Indentation
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
                  title "Slim"
         
     | 
| 
       10 
11 
     | 
    
         
             
                  desc 'The Slim template language'
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
                  tag 'slim'
         
     | 
| 
         @@ -151,8 +152,8 @@ module Rouge 
     | 
|
| 
       151 
152 
     | 
    
         
             
                  end
         
     | 
| 
       152 
153 
     | 
    
         | 
| 
       153 
154 
     | 
    
         
             
                  state :css do
         
     | 
| 
       154 
     | 
    
         
            -
                    rule( 
     | 
| 
       155 
     | 
    
         
            -
                    rule( 
     | 
| 
      
 155 
     | 
    
         
            +
                    rule(/\.[\w-]*/) { token Name::Class; goto :tag }
         
     | 
| 
      
 156 
     | 
    
         
            +
                    rule(/#[a-zA-Z][\w:-]*/) { token Name::Function; goto :tag }
         
     | 
| 
       156 
157 
     | 
    
         
             
                  end
         
     | 
| 
       157 
158 
     | 
    
         | 
| 
       158 
159 
     | 
    
         
             
                  state :html_attr do
         
     | 
    
        data/lib/rouge/lexers/sml.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/sql.rb
    CHANGED
    
    
    
        data/lib/rouge/lexers/swift.rb
    CHANGED
    
    | 
         @@ -6,12 +6,13 @@ module Rouge 
     | 
|
| 
       6 
6 
     | 
    
         
             
                  tag 'swift'
         
     | 
| 
       7 
7 
     | 
    
         
             
                  filenames '*.swift'
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
                  title "Swift"
         
     | 
| 
       9 
10 
     | 
    
         
             
                  desc 'Multi paradigm, compiled programming language developed by Apple for iOS and OS X development. (developer.apple.com/swift)'
         
     | 
| 
       10 
11 
     | 
    
         | 
| 
       11 
12 
     | 
    
         
             
                  id_head = /_|(?!\p{Mc})\p{Alpha}|[^\u0000-\uFFFF]/
         
     | 
| 
       12 
13 
     | 
    
         
             
                  id_rest = /[\p{Alnum}_]|[^\u0000-\uFFFF]/
         
     | 
| 
       13 
14 
     | 
    
         
             
                  id = /#{id_head}#{id_rest}*/
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       15 
16 
     | 
    
         
             
                  keywords = Set.new %w(
         
     | 
| 
       16 
17 
     | 
    
         
             
                    break case continue default do else fallthrough if in for return switch where while
         
     | 
| 
       17 
18 
     | 
    
         | 
| 
         @@ -25,19 +26,35 @@ module Rouge 
     | 
|
| 
       25 
26 
     | 
    
         
             
                  )
         
     | 
| 
       26 
27 
     | 
    
         | 
| 
       27 
28 
     | 
    
         
             
                  attributes = Set.new %w(
         
     | 
| 
       28 
     | 
    
         
            -
                    autoclosure IBAction IBDesignable IBInspectable IBOutlet noreturn NSCopying NSManaged objc UIApplicationMain NSApplicationMain
         
     | 
| 
      
 29 
     | 
    
         
            +
                    autoclosure IBAction IBDesignable IBInspectable IBOutlet noreturn NSCopying NSManaged objc UIApplicationMain NSApplicationMain objc_block
         
     | 
| 
       29 
30 
     | 
    
         
             
                  )
         
     | 
| 
       30 
31 
     | 
    
         | 
| 
       31 
32 
     | 
    
         
             
                  constants = Set.new %w(
         
     | 
| 
       32 
33 
     | 
    
         
             
                    true false nil
         
     | 
| 
       33 
34 
     | 
    
         
             
                  )
         
     | 
| 
       34 
35 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                   
     | 
| 
      
 36 
     | 
    
         
            +
                  start { push :bol }
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  # beginning of line
         
     | 
| 
      
 39 
     | 
    
         
            +
                  state :bol do
         
     | 
| 
      
 40 
     | 
    
         
            +
                    rule /#.*/, Comment::Preproc
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                    mixin :inline_whitespace
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                    rule(//) { pop! }
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  state :inline_whitespace do
         
     | 
| 
       36 
48 
     | 
    
         
             
                    rule /\s+/m, Text
         
     | 
| 
       37 
     | 
    
         
            -
                    rule %r(\/\/.*?\n), Comment::Single
         
     | 
| 
       38 
49 
     | 
    
         
             
                    rule %r((?<re>\/\*(?:(?>[^\/\*\*\/]+)|\g<re>)*\*\/))m, Comment::Multiline
         
     | 
| 
       39 
50 
     | 
    
         
             
                  end
         
     | 
| 
       40 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
                  state :whitespace do
         
     | 
| 
      
 53 
     | 
    
         
            +
                    rule /\n+/m, Text, :bol
         
     | 
| 
      
 54 
     | 
    
         
            +
                    rule %r(\/\/.*?$), Comment::Single, :bol
         
     | 
| 
      
 55 
     | 
    
         
            +
                    mixin :inline_whitespace
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       41 
58 
     | 
    
         
             
                  state :root do
         
     | 
| 
       42 
59 
     | 
    
         
             
                    mixin :whitespace
         
     | 
| 
       43 
60 
     | 
    
         
             
                    rule /\$(([1-9]\d*)?\d)/, Name::Variable
         
     | 
| 
         @@ -52,7 +69,7 @@ module Rouge 
     | 
|
| 
       52 
69 
     | 
    
         
             
                    rule /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/, Num::Hex
         
     | 
| 
       53 
70 
     | 
    
         
             
                    rule /0b[01]+(?:_[01]+)*/, Num::Bin
         
     | 
| 
       54 
71 
     | 
    
         
             
                    rule %r{[\d]+(?:_\d+)*}, Num::Integer
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
       56 
73 
     | 
    
         
             
                    rule /@availability[(][^)]+[)]/, Keyword::Declaration
         
     | 
| 
       57 
74 
     | 
    
         | 
| 
       58 
75 
     | 
    
         
             
                    rule /(@objc[(])([^)]+)([)])/ do
         
     | 
| 
         @@ -82,11 +99,11 @@ module Rouge 
     | 
|
| 
       82 
99 
     | 
    
         
             
                        groups Keyword::Declaration, Error, Keyword::Declaration
         
     | 
| 
       83 
100 
     | 
    
         
             
                      end
         
     | 
| 
       84 
101 
     | 
    
         
             
                    end
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
       86 
103 
     | 
    
         
             
                    rule /(let|var)\b(\s*)(#{id})/ do
         
     | 
| 
       87 
104 
     | 
    
         
             
                      groups Keyword, Text, Name::Variable
         
     | 
| 
       88 
105 
     | 
    
         
             
                    end
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
       90 
107 
     | 
    
         
             
                    rule /(?!\b(if|while|for|private|internal|unowned|switch|case)\b)\b#{id}(?=(\?|!)?\s*[(])/ do |m|
         
     | 
| 
       91 
108 
     | 
    
         
             
                      if m[0] =~ /^[[:upper:]]/
         
     | 
| 
       92 
109 
     | 
    
         
             
                        token Keyword::Type
         
     |