rouge 3.2.0 → 3.18.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 +5 -5
- data/Gemfile +17 -3
- data/bin/rougify +1 -0
- data/lib/rouge.rb +67 -43
- data/lib/rouge/cli.rb +84 -17
- data/lib/rouge/demos/ada +26 -0
- data/lib/rouge/demos/apex +9 -0
- data/lib/rouge/demos/armasm +12 -0
- data/lib/rouge/demos/batchfile +3 -0
- data/lib/rouge/demos/bbcbasic +6 -0
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/clean +6 -0
- data/lib/rouge/demos/cmhg +8 -0
- data/lib/rouge/demos/csvs +8 -0
- data/lib/rouge/demos/cuda +11 -0
- data/lib/rouge/demos/cypher +5 -0
- data/lib/rouge/demos/cython +6 -0
- data/lib/rouge/demos/datastudio +21 -0
- data/lib/rouge/demos/ecl +18 -0
- data/lib/rouge/demos/eex +1 -0
- data/lib/rouge/demos/epp +4 -0
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/freefem +16 -0
- data/lib/rouge/demos/gdscript +18 -0
- data/lib/rouge/demos/ghc-cmm +23 -0
- data/lib/rouge/demos/ghc-core +26 -0
- data/lib/rouge/demos/haxe +5 -0
- data/lib/rouge/demos/hocon +8 -0
- data/lib/rouge/demos/hql +5 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/jsl +3 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/liquid +0 -1
- data/lib/rouge/demos/lustre +6 -0
- data/lib/rouge/demos/lutin +18 -0
- data/lib/rouge/demos/m68k +16 -0
- data/lib/rouge/demos/magik +6 -0
- data/lib/rouge/demos/mason +22 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/minizinc +23 -0
- data/lib/rouge/demos/msgtrans +4 -0
- data/lib/rouge/demos/nasm +6 -6
- data/lib/rouge/demos/nesasm +11 -0
- data/lib/rouge/demos/objective_cpp +17 -0
- data/lib/rouge/demos/openedge +4 -0
- data/lib/rouge/demos/opentype_feature_file +6 -0
- data/lib/rouge/demos/plist +1 -132
- data/lib/rouge/demos/powershell +12 -48
- data/lib/rouge/demos/q +6 -0
- data/lib/rouge/demos/reasonml +12 -0
- data/lib/rouge/demos/rego +8 -0
- data/lib/rouge/demos/robot_framework +27 -0
- data/lib/rouge/demos/sas +13 -0
- data/lib/rouge/demos/slice +10 -0
- data/lib/rouge/demos/solidity +13 -0
- data/lib/rouge/demos/sparql +6 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/supercollider +11 -0
- data/lib/rouge/demos/terraform +0 -15
- data/lib/rouge/demos/ttcn3 +6 -0
- data/lib/rouge/demos/vcl +12 -0
- data/lib/rouge/demos/xojo +14 -0
- data/lib/rouge/demos/xpath +2 -0
- data/lib/rouge/demos/xquery +22 -0
- data/lib/rouge/demos/yang +17 -0
- data/lib/rouge/formatter.rb +39 -2
- data/lib/rouge/formatters/html.rb +21 -2
- data/lib/rouge/formatters/html_inline.rb +1 -0
- data/lib/rouge/formatters/html_legacy.rb +1 -0
- data/lib/rouge/formatters/html_line_table.rb +53 -0
- data/lib/rouge/formatters/html_linewise.rb +7 -11
- data/lib/rouge/formatters/html_pygments.rb +2 -0
- data/lib/rouge/formatters/html_table.rb +21 -31
- data/lib/rouge/formatters/null.rb +1 -0
- data/lib/rouge/formatters/terminal256.rb +23 -5
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/formatters/tex.rb +92 -0
- data/lib/rouge/guesser.rb +2 -0
- data/lib/rouge/guessers/disambiguation.rb +35 -0
- data/lib/rouge/guessers/filename.rb +2 -0
- data/lib/rouge/guessers/glob_mapping.rb +3 -1
- data/lib/rouge/guessers/mimetype.rb +2 -0
- data/lib/rouge/guessers/modeline.rb +3 -1
- data/lib/rouge/guessers/source.rb +3 -1
- data/lib/rouge/guessers/util.rb +2 -0
- data/lib/rouge/lexer.rb +71 -15
- data/lib/rouge/lexers/abap.rb +13 -11
- data/lib/rouge/lexers/actionscript.rb +35 -34
- data/lib/rouge/lexers/ada.rb +162 -0
- data/lib/rouge/lexers/apache.rb +13 -15
- data/lib/rouge/lexers/apache/keywords.rb +15 -0
- data/lib/rouge/lexers/apex.rb +126 -0
- data/lib/rouge/lexers/apiblueprint.rb +2 -0
- data/lib/rouge/lexers/apple_script.rb +17 -14
- data/lib/rouge/lexers/armasm.rb +145 -0
- data/lib/rouge/lexers/awk.rb +26 -25
- data/lib/rouge/lexers/batchfile.rb +164 -0
- data/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/lib/rouge/lexers/biml.rb +6 -4
- data/lib/rouge/lexers/bpf.rb +118 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +13 -12
- data/lib/rouge/lexers/c.rb +35 -57
- data/lib/rouge/lexers/ceylon.rb +7 -34
- data/lib/rouge/lexers/cfscript.rb +27 -26
- data/lib/rouge/lexers/clean.rb +156 -0
- data/lib/rouge/lexers/clojure.rb +15 -14
- data/lib/rouge/lexers/cmake.rb +16 -14
- data/lib/rouge/lexers/cmhg.rb +34 -0
- data/lib/rouge/lexers/coffeescript.rb +90 -49
- data/lib/rouge/lexers/common_lisp.rb +39 -38
- data/lib/rouge/lexers/conf.rb +7 -6
- data/lib/rouge/lexers/console.rb +92 -38
- data/lib/rouge/lexers/coq.rb +27 -23
- data/lib/rouge/lexers/cpp.rb +24 -13
- data/lib/rouge/lexers/crystal.rb +71 -70
- data/lib/rouge/lexers/csharp.rb +29 -29
- data/lib/rouge/lexers/css.rb +24 -23
- data/lib/rouge/lexers/csvs.rb +44 -0
- data/lib/rouge/lexers/cuda.rb +35 -0
- data/lib/rouge/lexers/cypher.rb +108 -0
- data/lib/rouge/lexers/cython.rb +151 -0
- data/lib/rouge/lexers/d.rb +64 -63
- data/lib/rouge/lexers/dart.rb +34 -33
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/diff.rb +10 -4
- data/lib/rouge/lexers/digdag.rb +3 -1
- data/lib/rouge/lexers/docker.rb +12 -11
- data/lib/rouge/lexers/dot.rb +19 -18
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/eex.rb +52 -0
- data/lib/rouge/lexers/eiffel.rb +21 -20
- data/lib/rouge/lexers/elixir.rb +52 -36
- data/lib/rouge/lexers/elm.rb +30 -29
- data/lib/rouge/lexers/epp.rb +51 -0
- data/lib/rouge/lexers/erb.rb +5 -4
- data/lib/rouge/lexers/erlang.rb +1 -0
- data/lib/rouge/lexers/escape.rb +58 -0
- data/lib/rouge/lexers/factor.rb +41 -40
- data/lib/rouge/lexers/fortran.rb +34 -32
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/fsharp.rb +33 -31
- data/lib/rouge/lexers/gdscript.rb +171 -0
- data/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/lib/rouge/lexers/ghc_core.rb +151 -0
- data/lib/rouge/lexers/gherkin.rb +17 -14
- data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
- data/lib/rouge/lexers/glsl.rb +2 -5
- data/lib/rouge/lexers/go.rb +3 -2
- data/lib/rouge/lexers/gradle.rb +1 -0
- data/lib/rouge/lexers/graphql.rb +78 -60
- data/lib/rouge/lexers/groovy.rb +24 -25
- data/lib/rouge/lexers/hack.rb +2 -1
- data/lib/rouge/lexers/haml.rb +26 -29
- data/lib/rouge/lexers/handlebars.rb +32 -20
- data/lib/rouge/lexers/haskell.rb +67 -65
- data/lib/rouge/lexers/haxe.rb +246 -0
- data/lib/rouge/lexers/hcl.rb +26 -25
- data/lib/rouge/lexers/hocon.rb +86 -0
- data/lib/rouge/lexers/hql.rb +139 -0
- data/lib/rouge/lexers/html.rb +33 -31
- data/lib/rouge/lexers/http.rb +10 -9
- data/lib/rouge/lexers/hylang.rb +15 -14
- data/lib/rouge/lexers/idlang.rb +34 -32
- data/lib/rouge/lexers/igorpro.rb +32 -31
- data/lib/rouge/lexers/ini.rb +13 -12
- data/lib/rouge/lexers/io.rb +10 -9
- data/lib/rouge/lexers/irb.rb +6 -5
- data/lib/rouge/lexers/isbl.rb +97 -0
- data/lib/rouge/lexers/isbl/builtins.rb +17 -0
- data/lib/rouge/lexers/java.rb +29 -25
- data/lib/rouge/lexers/javascript.rb +58 -61
- data/lib/rouge/lexers/jinja.rb +39 -22
- data/lib/rouge/lexers/jsl.rb +55 -0
- data/lib/rouge/lexers/json.rb +54 -11
- data/lib/rouge/lexers/json_doc.rb +8 -5
- data/lib/rouge/lexers/jsonnet.rb +19 -18
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +18 -16
- data/lib/rouge/lexers/julia.rb +182 -58
- data/lib/rouge/lexers/kotlin.rb +78 -26
- data/lib/rouge/lexers/lasso.rb +54 -58
- data/lib/rouge/lexers/lasso/keywords.rb +14 -0
- data/lib/rouge/lexers/liquid.rb +116 -118
- data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
- data/lib/rouge/lexers/literate_haskell.rb +6 -5
- data/lib/rouge/lexers/llvm.rb +66 -49
- data/lib/rouge/lexers/lua.rb +43 -4
- data/lib/rouge/lexers/lua/builtins.rb +2 -0
- data/lib/rouge/lexers/lustre.rb +79 -0
- data/lib/rouge/lexers/lutin.rb +33 -0
- data/lib/rouge/lexers/m68k.rb +143 -0
- data/lib/rouge/lexers/magik.rb +127 -0
- data/lib/rouge/lexers/make.rb +57 -34
- data/lib/rouge/lexers/markdown.rb +67 -39
- data/lib/rouge/lexers/mason.rb +110 -0
- data/lib/rouge/lexers/mathematica.rb +96 -0
- data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
- data/lib/rouge/lexers/matlab.rb +26 -17
- data/lib/rouge/lexers/matlab/builtins.rb +4 -4
- data/lib/rouge/lexers/minizinc.rb +87 -0
- data/lib/rouge/lexers/moonscript.rb +4 -3
- data/lib/rouge/lexers/mosel.rb +64 -63
- data/lib/rouge/lexers/msgtrans.rb +26 -0
- data/lib/rouge/lexers/mxml.rb +19 -18
- data/lib/rouge/lexers/nasm.rb +43 -169
- data/lib/rouge/lexers/nesasm.rb +78 -0
- data/lib/rouge/lexers/nginx.rb +15 -14
- data/lib/rouge/lexers/nim.rb +4 -2
- data/lib/rouge/lexers/nix.rb +44 -43
- data/lib/rouge/lexers/objective_c.rb +5 -178
- data/lib/rouge/lexers/objective_c/common.rb +184 -0
- data/lib/rouge/lexers/objective_cpp.rb +31 -0
- data/lib/rouge/lexers/ocaml.rb +29 -64
- data/lib/rouge/lexers/ocaml/common.rb +53 -0
- data/lib/rouge/lexers/openedge.rb +429 -0
- data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
- data/lib/rouge/lexers/pascal.rb +6 -5
- data/lib/rouge/lexers/perl.rb +102 -67
- data/lib/rouge/lexers/php.rb +91 -53
- data/lib/rouge/lexers/php/builtins.rb +183 -174
- data/lib/rouge/lexers/plain_text.rb +2 -1
- data/lib/rouge/lexers/plist.rb +16 -14
- data/lib/rouge/lexers/pony.rb +21 -20
- data/lib/rouge/lexers/powershell.rb +190 -638
- data/lib/rouge/lexers/praat.rb +76 -75
- data/lib/rouge/lexers/prolog.rb +27 -19
- data/lib/rouge/lexers/prometheus.rb +32 -30
- data/lib/rouge/lexers/properties.rb +13 -12
- data/lib/rouge/lexers/protobuf.rb +23 -22
- data/lib/rouge/lexers/puppet.rb +33 -32
- data/lib/rouge/lexers/python.rb +124 -99
- data/lib/rouge/lexers/q.rb +17 -14
- data/lib/rouge/lexers/qml.rb +13 -12
- data/lib/rouge/lexers/r.rb +13 -13
- data/lib/rouge/lexers/racket.rb +47 -22
- data/lib/rouge/lexers/reasonml.rb +65 -0
- data/lib/rouge/lexers/rego.rb +45 -0
- data/lib/rouge/lexers/robot_framework.rb +249 -0
- data/lib/rouge/lexers/ruby.rb +88 -71
- data/lib/rouge/lexers/rust.rb +45 -44
- data/lib/rouge/lexers/sas.rb +563 -0
- data/lib/rouge/lexers/sass.rb +9 -8
- data/lib/rouge/lexers/sass/common.rb +41 -40
- data/lib/rouge/lexers/scala.rb +67 -40
- data/lib/rouge/lexers/scheme.rb +19 -18
- data/lib/rouge/lexers/scss.rb +4 -3
- data/lib/rouge/lexers/sed.rb +31 -30
- data/lib/rouge/lexers/shell.rb +67 -55
- data/lib/rouge/lexers/sieve.rb +10 -9
- data/lib/rouge/lexers/slice.rb +32 -0
- data/lib/rouge/lexers/slim.rb +27 -26
- data/lib/rouge/lexers/smalltalk.rb +34 -33
- data/lib/rouge/lexers/smarty.rb +20 -19
- data/lib/rouge/lexers/sml.rb +68 -67
- data/lib/rouge/lexers/solidity.rb +185 -0
- data/lib/rouge/lexers/sparql.rb +129 -0
- data/lib/rouge/lexers/sqf.rb +109 -0
- data/lib/rouge/lexers/sqf/commands.rb +15 -0
- data/lib/rouge/lexers/sql.rb +47 -26
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/swift.rb +49 -44
- data/lib/rouge/lexers/tap.rb +22 -20
- data/lib/rouge/lexers/tcl.rb +28 -27
- data/lib/rouge/lexers/terraform.rb +37 -13
- data/lib/rouge/lexers/tex.rb +20 -19
- data/lib/rouge/lexers/toml.rb +59 -20
- data/lib/rouge/lexers/tsx.rb +1 -0
- data/lib/rouge/lexers/ttcn3.rb +119 -0
- data/lib/rouge/lexers/tulip.rb +38 -36
- data/lib/rouge/lexers/turtle.rb +36 -38
- data/lib/rouge/lexers/twig.rb +1 -0
- data/lib/rouge/lexers/typescript.rb +12 -0
- data/lib/rouge/lexers/typescript/common.rb +1 -0
- data/lib/rouge/lexers/vala.rb +19 -18
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/vb.rb +28 -27
- data/lib/rouge/lexers/verilog.rb +27 -28
- data/lib/rouge/lexers/vhdl.rb +12 -11
- data/lib/rouge/lexers/viml.rb +15 -14
- data/lib/rouge/lexers/viml/keywords.rb +2 -0
- data/lib/rouge/lexers/vue.rb +15 -10
- data/lib/rouge/lexers/wollok.rb +27 -26
- data/lib/rouge/lexers/xml.rb +18 -21
- data/lib/rouge/lexers/xojo.rb +61 -0
- data/lib/rouge/lexers/xpath.rb +332 -0
- data/lib/rouge/lexers/xquery.rb +145 -0
- data/lib/rouge/lexers/yaml.rb +64 -61
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/plugins/redcarpet.rb +9 -2
- data/lib/rouge/regex_lexer.rb +27 -25
- data/lib/rouge/template_lexer.rb +1 -0
- data/lib/rouge/tex_theme_renderer.rb +132 -0
- data/lib/rouge/text_analyzer.rb +1 -0
- data/lib/rouge/theme.rb +5 -0
- data/lib/rouge/themes/base16.rb +1 -0
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/themes/colorful.rb +1 -0
- data/lib/rouge/themes/github.rb +1 -0
- data/lib/rouge/themes/gruvbox.rb +1 -0
- data/lib/rouge/themes/igor_pro.rb +1 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/themes/molokai.rb +1 -0
- data/lib/rouge/themes/monokai.rb +1 -0
- data/lib/rouge/themes/monokai_sublime.rb +4 -1
- data/lib/rouge/themes/pastie.rb +2 -1
- data/lib/rouge/themes/thankful_eyes.rb +2 -1
- data/lib/rouge/themes/tulip.rb +2 -1
- data/lib/rouge/token.rb +31 -22
- data/lib/rouge/util.rb +3 -2
- data/lib/rouge/version.rb +2 -1
- data/rouge.gemspec +6 -3
- metadata +130 -8
- data/lib/rouge/lexers/apache/keywords.yml +0 -764
- data/lib/rouge/lexers/lasso/keywords.yml +0 -446
data/lib/rouge/lexers/csharp.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -42,59 +43,58 @@ module Rouge
|
|
|
42
43
|
)
|
|
43
44
|
|
|
44
45
|
state :whitespace do
|
|
45
|
-
rule /\s+/m, Text
|
|
46
|
+
rule %r/\s+/m, Text
|
|
46
47
|
rule %r(//.*?$), Comment::Single
|
|
47
48
|
rule %r(/[*].*?[*]/)m, Comment::Multiline
|
|
48
49
|
end
|
|
49
50
|
|
|
50
51
|
state :nest do
|
|
51
|
-
rule /{/, Punctuation, :nest
|
|
52
|
-
rule /}/, Punctuation, :pop!
|
|
52
|
+
rule %r/{/, Punctuation, :nest
|
|
53
|
+
rule %r/}/, Punctuation, :pop!
|
|
53
54
|
mixin :root
|
|
54
55
|
end
|
|
55
56
|
|
|
56
57
|
state :splice_string do
|
|
57
|
-
rule /\\./, Str
|
|
58
|
-
rule /{/, Punctuation, :nest
|
|
59
|
-
rule /"|\n/, Str, :pop!
|
|
60
|
-
rule /./, Str
|
|
58
|
+
rule %r/\\./, Str
|
|
59
|
+
rule %r/{/, Punctuation, :nest
|
|
60
|
+
rule %r/"|\n/, Str, :pop!
|
|
61
|
+
rule %r/./, Str
|
|
61
62
|
end
|
|
62
63
|
|
|
63
64
|
state :splice_literal do
|
|
64
|
-
rule /""/, Str
|
|
65
|
-
rule /{/, Punctuation, :nest
|
|
66
|
-
rule /"/, Str, :pop!
|
|
67
|
-
rule /./, Str
|
|
65
|
+
rule %r/""/, Str
|
|
66
|
+
rule %r/{/, Punctuation, :nest
|
|
67
|
+
rule %r/"/, Str, :pop!
|
|
68
|
+
rule %r/./, Str
|
|
68
69
|
end
|
|
69
70
|
|
|
70
71
|
state :root do
|
|
71
72
|
mixin :whitespace
|
|
72
73
|
|
|
73
|
-
rule
|
|
74
|
-
rule /[$]
|
|
75
|
-
rule /[$]@\s*"/, Str, :splice_literal
|
|
74
|
+
rule %r/[$]\s*"/, Str, :splice_string
|
|
75
|
+
rule %r/[$]@\s*"/, Str, :splice_literal
|
|
76
76
|
|
|
77
|
-
rule /(<\[)\s*(#{id}:)?/, Keyword
|
|
78
|
-
rule /\]>/, Keyword
|
|
77
|
+
rule %r/(<\[)\s*(#{id}:)?/, Keyword
|
|
78
|
+
rule %r/\]>/, Keyword
|
|
79
79
|
|
|
80
|
-
rule /[~!%^&*()+=|\[\]{}:;,.<>\/?-]/, Punctuation
|
|
81
|
-
rule /@"(""|[^"])*"/m, Str
|
|
82
|
-
rule /"(\\.|.)*?["\n]/, Str
|
|
83
|
-
rule /'(\\.|.)'/, Str::Char
|
|
84
|
-
rule /0x[0-9a-f]+[lu]?/i, Num
|
|
80
|
+
rule %r/[~!%^&*()+=|\[\]{}:;,.<>\/?-]/, Punctuation
|
|
81
|
+
rule %r/@"(""|[^"])*"/m, Str
|
|
82
|
+
rule %r/"(\\.|.)*?["\n]/, Str
|
|
83
|
+
rule %r/'(\\.|.)'/, Str::Char
|
|
84
|
+
rule %r/0x[0-9a-f]+[lu]?/i, Num
|
|
85
85
|
rule %r(
|
|
86
86
|
[0-9]
|
|
87
87
|
([.][0-9]*)? # decimal
|
|
88
88
|
(e[+-][0-9]+)? # exponent
|
|
89
89
|
[fldu]? # type
|
|
90
90
|
)ix, Num
|
|
91
|
-
rule /\b(?:class|struct|interface)\b/, Keyword, :class
|
|
92
|
-
rule /\b(?:namespace|using)\b/, Keyword, :namespace
|
|
93
|
-
rule /^#[ \t]*(#{cpp_keywords.join('|')})\b.*?\n/,
|
|
91
|
+
rule %r/\b(?:class|struct|interface)\b/, Keyword, :class
|
|
92
|
+
rule %r/\b(?:namespace|using)\b/, Keyword, :namespace
|
|
93
|
+
rule %r/^#[ \t]*(#{cpp_keywords.join('|')})\b.*?\n/,
|
|
94
94
|
Comment::Preproc
|
|
95
|
-
rule /\b(#{keywords.join('|')})\b/, Keyword
|
|
96
|
-
rule /\b(#{keywords_type.join('|')})\b/, Keyword::Type
|
|
97
|
-
rule /#{id}(?=\s*[(])/, Name::Function
|
|
95
|
+
rule %r/\b(#{keywords.join('|')})\b/, Keyword
|
|
96
|
+
rule %r/\b(#{keywords_type.join('|')})\b/, Keyword::Type
|
|
97
|
+
rule %r/#{id}(?=\s*[(])/, Name::Function
|
|
98
98
|
rule id, Name
|
|
99
99
|
end
|
|
100
100
|
|
|
@@ -105,8 +105,8 @@ module Rouge
|
|
|
105
105
|
|
|
106
106
|
state :namespace do
|
|
107
107
|
mixin :whitespace
|
|
108
|
-
rule /(?=[(])/, Text, :pop!
|
|
109
|
-
rule /(#{id}|[.])+/, Name::Namespace, :pop!
|
|
108
|
+
rule %r/(?=[(])/, Text, :pop!
|
|
109
|
+
rule %r/(#{id}|[.])+/, Name::Namespace, :pop!
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
end
|
data/lib/rouge/lexers/css.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -184,25 +185,25 @@ module Rouge
|
|
|
184
185
|
|
|
185
186
|
state :root do
|
|
186
187
|
mixin :basics
|
|
187
|
-
rule /{/, Punctuation, :stanza
|
|
188
|
-
rule /:[:]?#{identifier}/, Name::Decorator
|
|
189
|
-
rule /\.#{identifier}/, Name::Class
|
|
190
|
-
rule /##{identifier}/, Name::Function
|
|
191
|
-
rule /@#{identifier}/, Keyword, :at_rule
|
|
188
|
+
rule %r/{/, Punctuation, :stanza
|
|
189
|
+
rule %r/:[:]?#{identifier}/, Name::Decorator
|
|
190
|
+
rule %r/\.#{identifier}/, Name::Class
|
|
191
|
+
rule %r/##{identifier}/, Name::Function
|
|
192
|
+
rule %r/@#{identifier}/, Keyword, :at_rule
|
|
192
193
|
rule identifier, Name::Tag
|
|
193
194
|
rule %r([~^*!%&\[\]()<>|+=@:;,./?-]), Operator
|
|
194
|
-
rule /"(\\\\|\\"|[^"])*"/, Str::Single
|
|
195
|
-
rule /'(\\\\|\\'|[^'])*'/, Str::Double
|
|
195
|
+
rule %r/"(\\\\|\\"|[^"])*"/, Str::Single
|
|
196
|
+
rule %r/'(\\\\|\\'|[^'])*'/, Str::Double
|
|
196
197
|
end
|
|
197
198
|
|
|
198
199
|
state :value do
|
|
199
200
|
mixin :basics
|
|
200
|
-
rule /url\(.*?\)/, Str::Other
|
|
201
|
-
rule /#[0-9a-f]{1,6}/i, Num # colors
|
|
202
|
-
rule /#{number}(?:%|(?:em|px|pt|pc|in|mm|cm|ex|rem|ch|vw|vh|vmin|vmax|dpi|dpcm|dppx|deg|grad|rad|turn|s|ms|Hz|kHz)\b)?/, Num
|
|
203
|
-
rule /[\[\]():\/.,]/, Punctuation
|
|
204
|
-
rule /"(\\\\|\\"|[^"])*"/, Str::Single
|
|
205
|
-
rule /'(\\\\|\\'|[^'])*'/, Str::Double
|
|
201
|
+
rule %r/url\(.*?\)/, Str::Other
|
|
202
|
+
rule %r/#[0-9a-f]{1,6}/i, Num # colors
|
|
203
|
+
rule %r/#{number}(?:%|(?:em|px|pt|pc|in|mm|cm|ex|rem|ch|vw|vh|vmin|vmax|dpi|dpcm|dppx|deg|grad|rad|turn|s|ms|Hz|kHz)\b)?/, Num
|
|
204
|
+
rule %r/[\[\]():\/.,]/, Punctuation
|
|
205
|
+
rule %r/"(\\\\|\\"|[^"])*"/, Str::Single
|
|
206
|
+
rule %r/'(\\\\|\\'|[^'])*'/, Str::Double
|
|
206
207
|
rule(identifier) do |m|
|
|
207
208
|
if self.class.constants.include? m[0]
|
|
208
209
|
token Name::Constant
|
|
@@ -215,9 +216,9 @@ module Rouge
|
|
|
215
216
|
end
|
|
216
217
|
|
|
217
218
|
state :at_rule do
|
|
218
|
-
rule /{(?=\s*#{identifier}\s*:)/m, Punctuation, :at_stanza
|
|
219
|
-
rule /{/, Punctuation, :at_body
|
|
220
|
-
rule /;/, Punctuation, :pop!
|
|
219
|
+
rule %r/{(?=\s*#{identifier}\s*:)/m, Punctuation, :at_stanza
|
|
220
|
+
rule %r/{/, Punctuation, :at_body
|
|
221
|
+
rule %r/;/, Punctuation, :pop!
|
|
221
222
|
mixin :value
|
|
222
223
|
end
|
|
223
224
|
|
|
@@ -232,21 +233,21 @@ module Rouge
|
|
|
232
233
|
end
|
|
233
234
|
|
|
234
235
|
state :at_content do
|
|
235
|
-
rule /}/ do
|
|
236
|
+
rule %r/}/ do
|
|
236
237
|
token Punctuation
|
|
237
238
|
pop! 2
|
|
238
239
|
end
|
|
239
240
|
end
|
|
240
241
|
|
|
241
242
|
state :basics do
|
|
242
|
-
rule /\s+/m, Text
|
|
243
|
+
rule %r/\s+/m, Text
|
|
243
244
|
rule %r(/\*(?:.*?)\*/)m, Comment
|
|
244
245
|
end
|
|
245
246
|
|
|
246
247
|
state :stanza do
|
|
247
248
|
mixin :basics
|
|
248
|
-
rule /}/, Punctuation, :pop!
|
|
249
|
-
rule /(#{identifier})(\s*)(:)/m do |m|
|
|
249
|
+
rule %r/}/, Punctuation, :pop!
|
|
250
|
+
rule %r/(#{identifier})(\s*)(:)/m do |m|
|
|
250
251
|
name_tok = if self.class.attributes.include? m[1]
|
|
251
252
|
Name::Label
|
|
252
253
|
elsif self.class.vendor_prefixes.any? { |p| m[1].start_with?(p) }
|
|
@@ -262,10 +263,10 @@ module Rouge
|
|
|
262
263
|
end
|
|
263
264
|
|
|
264
265
|
state :stanza_value do
|
|
265
|
-
rule /;/, Punctuation, :pop!
|
|
266
|
+
rule %r/;/, Punctuation, :pop!
|
|
266
267
|
rule(/(?=})/) { pop! }
|
|
267
|
-
rule /!\s*important\b/, Comment::Preproc
|
|
268
|
-
rule /^@.*?$/, Comment::Preproc
|
|
268
|
+
rule %r/!\s*important\b/, Comment::Preproc
|
|
269
|
+
rule %r/^@.*?$/, Comment::Preproc
|
|
269
270
|
mixin :value
|
|
270
271
|
end
|
|
271
272
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class CSVS < RegexLexer
|
|
7
|
+
tag 'csvs'
|
|
8
|
+
title "csvs"
|
|
9
|
+
desc 'The CSV Schema Language (digital-preservation.github.io)'
|
|
10
|
+
filenames '*.csvs'
|
|
11
|
+
|
|
12
|
+
state :root do
|
|
13
|
+
rule %r/\s+/m, Text
|
|
14
|
+
|
|
15
|
+
rule %r(//[\S\t ]*), Comment::Single
|
|
16
|
+
rule %r(/\*[^*]*\*/)m, Comment::Multiline
|
|
17
|
+
|
|
18
|
+
rule %r/(version)( )(\d+\.\d+)/ do
|
|
19
|
+
groups Keyword, Text::Whitespace, Num::Float
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
rule %r/T?\d{2}:\d{2}:\d{2}(\.\d{5})?(Z|(?:[-+]\d{2}:\d{2}))?/, Literal::Date
|
|
23
|
+
rule %r/\d{4}-\d{2}-\d{2}/, Literal::Date
|
|
24
|
+
rule %r/\d{2}\/\d{2}\/\d{4}/, Literal::Date
|
|
25
|
+
|
|
26
|
+
rule %r((\d+[.]?\d*|\d*[.]\d+)(e[+-]?[0-9]+)?)i, Num::Float
|
|
27
|
+
rule %r/\d+/, Num::Integer
|
|
28
|
+
|
|
29
|
+
rule %r/@\w+/, Keyword::Pseudo
|
|
30
|
+
|
|
31
|
+
rule %r/[-.\w]+:/, Name::Variable
|
|
32
|
+
rule %r/^"[^"]+"/, Name::Variable
|
|
33
|
+
rule %r/\$([-.\w]+|("[^"]+"))\/?/, Name::Variable
|
|
34
|
+
|
|
35
|
+
rule %r/[A-Z]+/i, Keyword
|
|
36
|
+
|
|
37
|
+
rule %r/"[^"]*"/, Str::Double
|
|
38
|
+
rule %r/'[^\r\n\f']'/, Str::Char
|
|
39
|
+
|
|
40
|
+
rule %r/[,()*]/, Punctuation
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
load_lexer 'cpp.rb'
|
|
6
|
+
|
|
7
|
+
class CUDA < Cpp
|
|
8
|
+
title "CUDA"
|
|
9
|
+
desc "Compute Unified Device Architecture, used for programming with NVIDIA GPU"
|
|
10
|
+
|
|
11
|
+
tag 'cuda'
|
|
12
|
+
filenames '*.cu', '*.cuh'
|
|
13
|
+
|
|
14
|
+
def self.keywords
|
|
15
|
+
@keywords ||= super + Set.new(%w(
|
|
16
|
+
__global__ __device__ __host__ __noinline__ __forceinline__
|
|
17
|
+
__constant__ __shared__ __managed__ __restrict__
|
|
18
|
+
))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.keywords_type
|
|
22
|
+
@keywords_type ||= super + Set.new(%w(
|
|
23
|
+
char1 char2 char3 char4 uchar1 uchar2 uchar3 uchar4
|
|
24
|
+
short1 short2 short3 short4 ushort1 ushort2 ushort3 ushort4
|
|
25
|
+
int1 int2 int3 int4 uint1 uint2 uint3 uint4
|
|
26
|
+
long1 long2 long3 long4 ulong1 ulong2 ulong3 ulong4
|
|
27
|
+
longlong1 longlong2 longlong3 longlong4
|
|
28
|
+
ulonglong1 ulonglong2 ulonglong3 ulonglong4
|
|
29
|
+
float1 float2 float3 float4 double1 double2 double3 double4
|
|
30
|
+
dim3
|
|
31
|
+
))
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Cypher < RegexLexer
|
|
7
|
+
tag 'cypher'
|
|
8
|
+
aliases 'cypher'
|
|
9
|
+
filenames '*.cypher'
|
|
10
|
+
mimetypes 'application/x-cypher-query'
|
|
11
|
+
|
|
12
|
+
title "Cypher"
|
|
13
|
+
desc 'The Cypher query language (neo4j.com/docs/cypher-manual)'
|
|
14
|
+
|
|
15
|
+
def self.functions
|
|
16
|
+
@functions ||= Set.new %w(
|
|
17
|
+
ABS ACOS ALLSHORTESTPATHS ASIN ATAN ATAN2 AVG CEIL COALESCE COLLECT
|
|
18
|
+
COS COT COUNT DATE DEGREES E ENDNODE EXP EXTRACT FILTER FLOOR
|
|
19
|
+
HAVERSIN HEAD ID KEYS LABELS LAST LEFT LENGTH LOG LOG10 LOWER LTRIM
|
|
20
|
+
MAX MIN NODE NODES PERCENTILECONT PERCENTILEDISC PI RADIANS RAND
|
|
21
|
+
RANGE REDUCE REL RELATIONSHIP RELATIONSHIPS REPLACE REVERSE RIGHT
|
|
22
|
+
ROUND RTRIM SHORTESTPATH SIGN SIN SIZE SPLIT SQRT STARTNODE STDEV
|
|
23
|
+
STDEVP STR SUBSTRING SUM TAIL TAN TIMESTAMP TOFLOAT TOINT TOINTEGER
|
|
24
|
+
TOSTRING TRIM TYPE UPPER
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.predicates
|
|
29
|
+
@predicates ||= Set.new %w(
|
|
30
|
+
ALL AND ANY CONTAINS EXISTS HAS IN NONE NOT OR SINGLE XOR
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.keywords
|
|
35
|
+
@keywords ||= Set.new %w(
|
|
36
|
+
AS ASC ASCENDING ASSERT BY CASE COMMIT CONSTRAINT CREATE CSV CYPHER
|
|
37
|
+
DELETE DESC DESCENDING DETACH DISTINCT DROP ELSE END ENDS EXPLAIN
|
|
38
|
+
FALSE FIELDTERMINATOR FOREACH FROM HEADERS IN INDEX IS JOIN LIMIT
|
|
39
|
+
LOAD MATCH MERGE NULL ON OPTIONAL ORDER PERIODIC PROFILE REMOVE
|
|
40
|
+
RETURN SCAN SET SKIP START STARTS THEN TRUE UNION UNIQUE UNWIND USING
|
|
41
|
+
WHEN WHERE WITH CALL YIELD
|
|
42
|
+
)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
state :root do
|
|
46
|
+
rule %r/[\s]+/, Text
|
|
47
|
+
rule %r(//.*?$), Comment::Single
|
|
48
|
+
|
|
49
|
+
rule %r([*+\-<>=&|~%^]), Operator
|
|
50
|
+
rule %r/[{}),;\[\]]/, Str::Symbol
|
|
51
|
+
|
|
52
|
+
# literal number
|
|
53
|
+
rule %r/(\w+)(:)(\s*)(-?[._\d]+)/ do
|
|
54
|
+
groups Name::Label, Str::Delimiter, Text::Whitespace, Num
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# function-like
|
|
58
|
+
# - "name("
|
|
59
|
+
# - "name ("
|
|
60
|
+
# - "name ("
|
|
61
|
+
rule %r/(\w+)(\s*)(\()/ do |m|
|
|
62
|
+
name = m[1].upcase
|
|
63
|
+
if self.class.functions.include? name
|
|
64
|
+
groups Name::Function, Text::Whitespace, Str::Symbol
|
|
65
|
+
elsif self.class.keywords.include? name
|
|
66
|
+
groups Keyword, Text::Whitespace, Str::Symbol
|
|
67
|
+
else
|
|
68
|
+
groups Name, Text::Whitespace, Str::Symbol
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
rule %r/:\w+/, Name::Class
|
|
73
|
+
|
|
74
|
+
# number range
|
|
75
|
+
rule %r/(-?\d+)(\.\.)(-?\d+)/ do
|
|
76
|
+
groups Num, Operator, Num
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# numbers
|
|
80
|
+
rule %r/(\d+\.\d*|\d*\.\d+)(e[+-]?\d+)?/i, Num::Float
|
|
81
|
+
rule %r/\d+e[+-]?\d+/i, Num::Float
|
|
82
|
+
rule %r/0[0-7]+/, Num::Oct
|
|
83
|
+
rule %r/0x[a-f0-9]+/i, Num::Hex
|
|
84
|
+
rule %r/\d+/, Num::Integer
|
|
85
|
+
|
|
86
|
+
rule %r([.\w]+:), Name::Property
|
|
87
|
+
|
|
88
|
+
# remaining "("
|
|
89
|
+
rule %r/\(/, Str::Symbol
|
|
90
|
+
|
|
91
|
+
rule %r/[.\w$]+/ do |m|
|
|
92
|
+
match = m[0].upcase
|
|
93
|
+
if self.class.predicates.include? match
|
|
94
|
+
token Operator::Word
|
|
95
|
+
elsif self.class.keywords.include? match
|
|
96
|
+
token Keyword
|
|
97
|
+
else
|
|
98
|
+
token Name
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
rule %r/"(\\\\|\\"|[^"])*"/, Str::Double
|
|
103
|
+
rule %r/'(\\\\|\\'|[^'])*'/, Str::Single
|
|
104
|
+
rule %r/`(\\\\|\\`|[^`])*`/, Str::Backtick
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
load_lexer 'python.rb'
|
|
7
|
+
|
|
8
|
+
class Cython < Python
|
|
9
|
+
title "Cython"
|
|
10
|
+
desc "Cython and Pyrex source code (cython.org)"
|
|
11
|
+
tag 'cython'
|
|
12
|
+
aliases 'pyx', 'pyrex'
|
|
13
|
+
filenames '*.pyx', '*.pxd', '*.pxi'
|
|
14
|
+
mimetypes 'text/x-cython', 'application/x-cython'
|
|
15
|
+
|
|
16
|
+
def initialize(opts = {})
|
|
17
|
+
super opts
|
|
18
|
+
@indentation = nil
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.keywords
|
|
22
|
+
@keywords ||= super + %w(
|
|
23
|
+
by except? fused gil nogil
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.c_keywords
|
|
28
|
+
@ckeywords ||= %w(
|
|
29
|
+
public readonly extern api inline enum union
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
identifier = /[a-z_]\w*/i
|
|
34
|
+
dotted_identifier = /[a-z_.][\w.]*/i
|
|
35
|
+
|
|
36
|
+
prepend :root do
|
|
37
|
+
rule %r/cp?def|ctypedef/ do
|
|
38
|
+
token Keyword
|
|
39
|
+
push :c_definitions
|
|
40
|
+
push :c_start
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
rule %r/(from)((?:\\\s|\s)+)(#{dotted_identifier})((?:\\\s|\s)+)(cimport)/ do
|
|
44
|
+
groups Keyword::Namespace,
|
|
45
|
+
Text,
|
|
46
|
+
Name::Namespace,
|
|
47
|
+
Text,
|
|
48
|
+
Keyword::Namespace
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
rule %r/(cimport)(\s+)(#{dotted_identifier})/ do
|
|
52
|
+
groups Keyword::Namespace, Text, Name::Namespace
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
rule %r/(struct)((?:\\\s|\s)+)/ do
|
|
56
|
+
groups Keyword, Text
|
|
57
|
+
push :classname
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
mixin :func_call_fix
|
|
61
|
+
|
|
62
|
+
rule %r/[(,]/, Punctuation, :c_start
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
prepend :classname do
|
|
66
|
+
rule %r/(?:\\\s|\s)+/, Text
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
prepend :funcname do
|
|
70
|
+
rule %r/(?:\\\s|\s)+/, Text
|
|
71
|
+
end
|
|
72
|
+
# This is a fix for the way that function calls are lexed in the Python
|
|
73
|
+
# lexer. This should be moved to the Python lexer once confirmed that it
|
|
74
|
+
# does not cause any regressions.
|
|
75
|
+
state :func_call_fix do
|
|
76
|
+
rule %r/#{identifier}(?=\()/ do |m|
|
|
77
|
+
if self.class.keywords.include? m[0]
|
|
78
|
+
token Keyword
|
|
79
|
+
elsif self.class.exceptions.include? m[0]
|
|
80
|
+
token Name::Builtin
|
|
81
|
+
elsif self.class.builtins.include? m[0]
|
|
82
|
+
token Name::Builtin
|
|
83
|
+
elsif self.class.builtins_pseudo.include? m[0]
|
|
84
|
+
token Name::Builtin::Pseudo
|
|
85
|
+
else
|
|
86
|
+
token Name::Function
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# The Cython lexer adds three states to those already in the Python lexer.
|
|
92
|
+
# Calls to `cdef`, `cpdef` and `ctypedef` move the lexer into the :c_start
|
|
93
|
+
# state. The primary purpose of this state is to highlight datatypes. Once
|
|
94
|
+
# this has been done, the lexer moves to the :c_definitions state where
|
|
95
|
+
# the majority of text in a definition is lexed. Finally, newlines cause
|
|
96
|
+
# the lexer to move to :c_indent. This state is used to check whether we
|
|
97
|
+
# have moved out of a C block.
|
|
98
|
+
|
|
99
|
+
state :c_start do
|
|
100
|
+
rule %r/[^\S\n]+/, Text
|
|
101
|
+
|
|
102
|
+
rule %r/cp?def|ctypedef/, Keyword
|
|
103
|
+
|
|
104
|
+
rule %r/(?:un)?signed/, Keyword::Type
|
|
105
|
+
|
|
106
|
+
# This rule matches identifiers that could be type declarations. The
|
|
107
|
+
# lookahead matches (1) pointers, (2) arrays and (3) variable names.
|
|
108
|
+
rule %r/#{identifier}(?=(?:\*+)|(?:[ \t]*\[)|(?:[ \t]+\w))/ do |m|
|
|
109
|
+
if self.class.keywords.include? m[0]
|
|
110
|
+
token Keyword
|
|
111
|
+
pop!
|
|
112
|
+
elsif %w(def).include? m[0]
|
|
113
|
+
token Keyword
|
|
114
|
+
goto :funcname
|
|
115
|
+
elsif %w(struct class).include? m[0]
|
|
116
|
+
token Keyword::Reserved
|
|
117
|
+
goto :classname
|
|
118
|
+
elsif self.class.c_keywords.include? m[0]
|
|
119
|
+
token Keyword::Reserved
|
|
120
|
+
else
|
|
121
|
+
token Keyword::Type
|
|
122
|
+
pop!
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
rule(//) { pop! }
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
state :c_definitions do
|
|
130
|
+
rule %r/\n/, Text, :c_indent
|
|
131
|
+
mixin :root
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
state :c_indent do
|
|
135
|
+
rule %r/[ \t]+/ do |m|
|
|
136
|
+
token Text
|
|
137
|
+
goto :c_start
|
|
138
|
+
|
|
139
|
+
if @indentation.nil?
|
|
140
|
+
@indentation = m[0]
|
|
141
|
+
elsif @indentation.length > m[0].length
|
|
142
|
+
@indentation = nil
|
|
143
|
+
pop! 2 # Pop :c_start and :c_definitions
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
rule(//) { @indentation = nil; reset_stack }
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|