rouge 3.4.1 → 3.5.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 +3 -0
- data/lib/rouge/cli.rb +19 -2
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/magik +6 -0
- data/lib/rouge/formatter.rb +2 -2
- data/lib/rouge/formatters/tex.rb +90 -0
- data/lib/rouge/guessers/glob_mapping.rb +1 -1
- data/lib/rouge/lexer.rb +22 -10
- data/lib/rouge/lexers/abap.rb +11 -11
- data/lib/rouge/lexers/actionscript.rb +34 -34
- data/lib/rouge/lexers/apache.rb +8 -8
- data/lib/rouge/lexers/apple_script.rb +15 -14
- data/lib/rouge/lexers/awk.rb +25 -25
- data/lib/rouge/lexers/biml.rb +4 -4
- data/lib/rouge/lexers/bpf.rb +104 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +12 -12
- data/lib/rouge/lexers/c.rb +30 -30
- data/lib/rouge/lexers/ceylon.rb +1 -29
- data/lib/rouge/lexers/cfscript.rb +26 -26
- data/lib/rouge/lexers/clojure.rb +14 -14
- data/lib/rouge/lexers/cmake.rb +14 -14
- data/lib/rouge/lexers/coffeescript.rb +30 -30
- data/lib/rouge/lexers/common_lisp.rb +36 -36
- data/lib/rouge/lexers/conf.rb +6 -6
- data/lib/rouge/lexers/coq.rb +18 -18
- data/lib/rouge/lexers/cpp.rb +8 -8
- data/lib/rouge/lexers/crystal.rb +70 -70
- data/lib/rouge/lexers/csharp.rb +28 -28
- data/lib/rouge/lexers/css.rb +23 -23
- data/lib/rouge/lexers/d.rb +59 -59
- data/lib/rouge/lexers/dart.rb +33 -33
- data/lib/rouge/lexers/digdag.rb +1 -1
- data/lib/rouge/lexers/docker.rb +10 -10
- data/lib/rouge/lexers/dot.rb +16 -16
- data/lib/rouge/lexers/eiffel.rb +20 -20
- data/lib/rouge/lexers/elixir.rb +29 -28
- data/lib/rouge/lexers/elm.rb +29 -29
- data/lib/rouge/lexers/erb.rb +4 -4
- data/lib/rouge/lexers/factor.rb +40 -40
- data/lib/rouge/lexers/fortran.rb +32 -32
- data/lib/rouge/lexers/fsharp.rb +26 -26
- data/lib/rouge/lexers/gherkin.rb +13 -13
- data/lib/rouge/lexers/glsl.rb +0 -4
- data/lib/rouge/lexers/go.rb +1 -1
- data/lib/rouge/lexers/graphql.rb +62 -62
- data/lib/rouge/lexers/groovy.rb +23 -25
- data/lib/rouge/lexers/hack.rb +1 -1
- data/lib/rouge/lexers/haml.rb +25 -29
- data/lib/rouge/lexers/handlebars.rb +18 -18
- data/lib/rouge/lexers/haskell.rb +66 -65
- data/lib/rouge/lexers/hcl.rb +25 -25
- data/lib/rouge/lexers/html.rb +31 -31
- data/lib/rouge/lexers/http.rb +4 -4
- data/lib/rouge/lexers/hylang.rb +14 -14
- data/lib/rouge/lexers/idlang.rb +32 -32
- data/lib/rouge/lexers/igorpro.rb +30 -30
- data/lib/rouge/lexers/ini.rb +12 -12
- data/lib/rouge/lexers/io.rb +7 -7
- data/lib/rouge/lexers/irb.rb +5 -5
- data/lib/rouge/lexers/java.rb +24 -24
- data/lib/rouge/lexers/javascript.rb +51 -51
- data/lib/rouge/lexers/jinja.rb +22 -22
- data/lib/rouge/lexers/json.rb +11 -10
- data/lib/rouge/lexers/json_doc.rb +2 -2
- data/lib/rouge/lexers/jsonnet.rb +18 -18
- data/lib/rouge/lexers/jsp.rb +28 -28
- data/lib/rouge/lexers/jsx.rb +16 -16
- data/lib/rouge/lexers/julia.rb +44 -44
- data/lib/rouge/lexers/kotlin.rb +3 -3
- data/lib/rouge/lexers/lasso.rb +50 -50
- data/lib/rouge/lexers/liquid.rb +53 -53
- data/lib/rouge/lexers/literate_coffeescript.rb +2 -2
- data/lib/rouge/lexers/literate_haskell.rb +5 -5
- data/lib/rouge/lexers/llvm.rb +23 -16
- data/lib/rouge/lexers/lua.rb +3 -3
- data/lib/rouge/lexers/m68k.rb +18 -19
- data/lib/rouge/lexers/magik.rb +126 -0
- data/lib/rouge/lexers/make.rb +22 -28
- data/lib/rouge/lexers/markdown.rb +37 -37
- data/lib/rouge/lexers/mathematica.rb +11 -11
- data/lib/rouge/lexers/matlab.rb +20 -20
- data/lib/rouge/lexers/moonscript.rb +3 -3
- data/lib/rouge/lexers/mosel.rb +17 -17
- data/lib/rouge/lexers/mxml.rb +18 -18
- data/lib/rouge/lexers/nasm.rb +24 -25
- data/lib/rouge/lexers/nginx.rb +14 -14
- data/lib/rouge/lexers/nim.rb +1 -1
- data/lib/rouge/lexers/nix.rb +42 -42
- data/lib/rouge/lexers/objective_c.rb +38 -38
- data/lib/rouge/lexers/ocaml.rb +29 -29
- data/lib/rouge/lexers/pascal.rb +4 -4
- data/lib/rouge/lexers/perl.rb +68 -68
- data/lib/rouge/lexers/php.rb +38 -38
- data/lib/rouge/lexers/plist.rb +14 -14
- data/lib/rouge/lexers/pony.rb +19 -19
- data/lib/rouge/lexers/powershell.rb +25 -25
- data/lib/rouge/lexers/praat.rb +75 -75
- data/lib/rouge/lexers/prolog.rb +26 -20
- data/lib/rouge/lexers/prometheus.rb +30 -30
- data/lib/rouge/lexers/properties.rb +12 -12
- data/lib/rouge/lexers/protobuf.rb +22 -22
- data/lib/rouge/lexers/puppet.rb +31 -31
- data/lib/rouge/lexers/python.rb +52 -52
- data/lib/rouge/lexers/q.rb +12 -12
- data/lib/rouge/lexers/qml.rb +12 -12
- data/lib/rouge/lexers/r.rb +12 -12
- data/lib/rouge/lexers/racket.rb +22 -22
- data/lib/rouge/lexers/ruby.rb +71 -69
- data/lib/rouge/lexers/rust.rb +30 -30
- data/lib/rouge/lexers/sass.rb +8 -8
- data/lib/rouge/lexers/sass/common.rb +40 -40
- data/lib/rouge/lexers/scala.rb +43 -43
- data/lib/rouge/lexers/scheme.rb +18 -18
- data/lib/rouge/lexers/scss.rb +3 -3
- data/lib/rouge/lexers/sed.rb +29 -29
- data/lib/rouge/lexers/shell.rb +61 -52
- data/lib/rouge/lexers/sieve.rb +8 -8
- data/lib/rouge/lexers/slim.rb +24 -24
- data/lib/rouge/lexers/smalltalk.rb +33 -33
- data/lib/rouge/lexers/smarty.rb +12 -12
- data/lib/rouge/lexers/sml.rb +67 -67
- data/lib/rouge/lexers/sqf.rb +1 -1
- data/lib/rouge/lexers/sql.rb +21 -21
- data/lib/rouge/lexers/supercollider.rb +19 -19
- data/lib/rouge/lexers/swift.rb +42 -39
- data/lib/rouge/lexers/tap.rb +20 -20
- data/lib/rouge/lexers/tcl.rb +27 -27
- data/lib/rouge/lexers/terraform.rb +13 -13
- data/lib/rouge/lexers/tex.rb +19 -19
- data/lib/rouge/lexers/toml.rb +18 -18
- data/lib/rouge/lexers/tulip.rb +36 -36
- data/lib/rouge/lexers/turtle.rb +35 -38
- data/lib/rouge/lexers/vala.rb +17 -17
- data/lib/rouge/lexers/vb.rb +27 -27
- data/lib/rouge/lexers/verilog.rb +25 -27
- data/lib/rouge/lexers/vhdl.rb +10 -10
- data/lib/rouge/lexers/viml.rb +14 -14
- data/lib/rouge/lexers/vue.rb +9 -9
- data/lib/rouge/lexers/wollok.rb +25 -25
- data/lib/rouge/lexers/xml.rb +17 -21
- data/lib/rouge/lexers/xojo.rb +15 -15
- data/lib/rouge/lexers/yaml.rb +61 -61
- data/lib/rouge/plugins/redcarpet.rb +1 -1
- data/lib/rouge/tex_theme_renderer.rb +128 -0
- data/lib/rouge/theme.rb +4 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/version.rb +1 -1
- metadata +11 -2
data/lib/rouge/lexers/groovy.rb
CHANGED
|
@@ -10,8 +10,6 @@ module Rouge
|
|
|
10
10
|
filenames '*.groovy', 'Jenkinsfile'
|
|
11
11
|
mimetypes 'text/x-groovy'
|
|
12
12
|
|
|
13
|
-
ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
|
|
14
|
-
|
|
15
13
|
def self.detect?(text)
|
|
16
14
|
return true if text.shebang?(/groovy/)
|
|
17
15
|
end
|
|
@@ -43,8 +41,8 @@ module Rouge
|
|
|
43
41
|
|
|
44
42
|
state :root do
|
|
45
43
|
rule %r(^
|
|
46
|
-
(\s*(?:\w[\w
|
|
47
|
-
(\w
|
|
44
|
+
(\s*(?:\w[\w.\[\]]*\s+)+?) # return arguments
|
|
45
|
+
(\w\w*) # method name
|
|
48
46
|
(\s*) (\() # signature start
|
|
49
47
|
)x do |m|
|
|
50
48
|
delegate self.clone, m[1]
|
|
@@ -54,29 +52,29 @@ module Rouge
|
|
|
54
52
|
end
|
|
55
53
|
|
|
56
54
|
# whitespace
|
|
57
|
-
rule /[^\S\n]+/, Text
|
|
55
|
+
rule %r/[^\S\n]+/, Text
|
|
58
56
|
rule %r(//.*?$), Comment::Single
|
|
59
57
|
rule %r(/[*].*?[*]/)m, Comment::Multiline
|
|
60
|
-
rule /@\w[\w
|
|
61
|
-
rule /(class|interface|trait)\b/, Keyword::Declaration, :class
|
|
62
|
-
rule /package\b/, Keyword::Namespace, :import
|
|
63
|
-
rule /import\b/, Keyword::Namespace, :import
|
|
58
|
+
rule %r/@\w[\w.]*/, Name::Decorator
|
|
59
|
+
rule %r/(class|interface|trait)\b/, Keyword::Declaration, :class
|
|
60
|
+
rule %r/package\b/, Keyword::Namespace, :import
|
|
61
|
+
rule %r/import\b/, Keyword::Namespace, :import
|
|
64
62
|
|
|
65
63
|
# TODO: highlight backslash escapes
|
|
66
|
-
rule /""".*?"""/m, Str::Double
|
|
67
|
-
rule /'''.*?'''/m, Str::Single
|
|
64
|
+
rule %r/""".*?"""/m, Str::Double
|
|
65
|
+
rule %r/'''.*?'''/m, Str::Single
|
|
68
66
|
|
|
69
|
-
rule /"(\\.|\\\n|.)*?"/, Str::Double
|
|
70
|
-
rule /'(\\.|\\\n|.)*?'/, Str::Single
|
|
67
|
+
rule %r/"(\\.|\\\n|.)*?"/, Str::Double
|
|
68
|
+
rule %r/'(\\.|\\\n|.)*?'/, Str::Single
|
|
71
69
|
rule %r(\$/(\$.|.)*?/\$)m, Str
|
|
72
70
|
rule %r(/(\\.|\\\n|.)*?/), Str
|
|
73
|
-
rule /'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'/, Str::Char
|
|
74
|
-
rule /(\.)([a-zA-Z_][a-zA-Z0-9_]*)/ do
|
|
71
|
+
rule %r/'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'/, Str::Char
|
|
72
|
+
rule %r/(\.)([a-zA-Z_][a-zA-Z0-9_]*)/ do
|
|
75
73
|
groups Operator, Name::Attribute
|
|
76
74
|
end
|
|
77
75
|
|
|
78
|
-
rule /[a-zA-Z_][a-zA-Z0-9_]*:/, Name::Label
|
|
79
|
-
rule /[a-zA-Z_\$][a-zA-Z0-9_]*/ do |m|
|
|
76
|
+
rule %r/[a-zA-Z_][a-zA-Z0-9_]*:/, Name::Label
|
|
77
|
+
rule %r/[a-zA-Z_\$][a-zA-Z0-9_]*/ do |m|
|
|
80
78
|
if self.class.keywords.include? m[0]
|
|
81
79
|
token Keyword
|
|
82
80
|
elsif self.class.declarations.include? m[0]
|
|
@@ -93,20 +91,20 @@ module Rouge
|
|
|
93
91
|
rule %r([~^*!%&\[\](){}<>\|+=:;,./?-]), Operator
|
|
94
92
|
|
|
95
93
|
# numbers
|
|
96
|
-
rule /\d+\.\d+([eE]\d+)?[fd]?/, Num::Float
|
|
97
|
-
rule /0x[0-9a-f]+/, Num::Hex
|
|
98
|
-
rule /[0-9]+L?/, Num::Integer
|
|
99
|
-
rule /\n/, Text
|
|
94
|
+
rule %r/\d+\.\d+([eE]\d+)?[fd]?/, Num::Float
|
|
95
|
+
rule %r/0x[0-9a-f]+/, Num::Hex
|
|
96
|
+
rule %r/[0-9]+L?/, Num::Integer
|
|
97
|
+
rule %r/\n/, Text
|
|
100
98
|
end
|
|
101
99
|
|
|
102
100
|
state :class do
|
|
103
|
-
rule /\s+/, Text
|
|
104
|
-
rule /\w
|
|
101
|
+
rule %r/\s+/, Text
|
|
102
|
+
rule %r/\w\w*/, Name::Class, :pop!
|
|
105
103
|
end
|
|
106
104
|
|
|
107
105
|
state :import do
|
|
108
|
-
rule /\s+/, Text
|
|
109
|
-
rule /[\w
|
|
106
|
+
rule %r/\s+/, Text
|
|
107
|
+
rule %r/[\w.]+[*]?/, Name::Namespace, :pop!
|
|
110
108
|
end
|
|
111
109
|
end
|
|
112
110
|
end
|
data/lib/rouge/lexers/hack.rb
CHANGED
data/lib/rouge/lexers/haml.rb
CHANGED
|
@@ -66,19 +66,15 @@ module Rouge
|
|
|
66
66
|
# To accomodate this, use this custom faux dot instead.
|
|
67
67
|
dot = /[ ]\|\n(?=.*[ ]\|)|./
|
|
68
68
|
|
|
69
|
-
# In certain places, a comma at the end of the line
|
|
70
|
-
# allows line wrapping as well.
|
|
71
|
-
comma_dot = /,\s*\n|#{dot}/
|
|
72
|
-
|
|
73
69
|
state :root do
|
|
74
|
-
rule /\s*\n/, Text
|
|
70
|
+
rule %r/\s*\n/, Text
|
|
75
71
|
rule(/\s*/) { |m| token Text; indentation(m[0]) }
|
|
76
72
|
end
|
|
77
73
|
|
|
78
74
|
state :content do
|
|
79
75
|
mixin :css
|
|
80
76
|
rule(/%#{identifier}/) { token Name::Tag; goto :tag }
|
|
81
|
-
rule /!!!#{dot}*\n/, Name::Namespace, :pop!
|
|
77
|
+
rule %r/!!!#{dot}*\n/, Name::Namespace, :pop!
|
|
82
78
|
rule %r(
|
|
83
79
|
(/) (\[#{dot}*?\]) (#{dot}*\n)
|
|
84
80
|
)x do
|
|
@@ -92,20 +88,20 @@ module Rouge
|
|
|
92
88
|
starts_block :html_comment_block
|
|
93
89
|
end
|
|
94
90
|
|
|
95
|
-
rule /-##{dot}*\n/ do
|
|
91
|
+
rule %r/-##{dot}*\n/ do
|
|
96
92
|
token Comment
|
|
97
93
|
pop!
|
|
98
94
|
starts_block :haml_comment_block
|
|
99
95
|
end
|
|
100
96
|
|
|
101
|
-
rule /-/ do
|
|
97
|
+
rule %r/-/ do
|
|
102
98
|
token Punctuation
|
|
103
99
|
reset_stack
|
|
104
100
|
ruby! :ruby_line
|
|
105
101
|
end
|
|
106
102
|
|
|
107
103
|
# filters
|
|
108
|
-
rule /:(#{dot}*)\n/ do |m|
|
|
104
|
+
rule %r/:(#{dot}*)\n/ do |m|
|
|
109
105
|
token Name::Decorator
|
|
110
106
|
pop!
|
|
111
107
|
starts_block :filter_block
|
|
@@ -131,11 +127,11 @@ module Rouge
|
|
|
131
127
|
rule(/[{]/) { token Punctuation; ruby! :ruby_tag }
|
|
132
128
|
rule(/\[#{dot}*?\]/) { delegate ruby }
|
|
133
129
|
|
|
134
|
-
rule /\(/, Punctuation, :html_attributes
|
|
135
|
-
rule /\s*\n/, Text, :pop!
|
|
130
|
+
rule %r/\(/, Punctuation, :html_attributes
|
|
131
|
+
rule %r/\s*\n/, Text, :pop!
|
|
136
132
|
|
|
137
133
|
# whitespace chompers
|
|
138
|
-
rule /[<>]{1,2}(?=[ \t=])/, Punctuation
|
|
134
|
+
rule %r/[<>]{1,2}(?=[ \t=])/, Punctuation
|
|
139
135
|
|
|
140
136
|
mixin :eval_or_plain
|
|
141
137
|
end
|
|
@@ -147,8 +143,8 @@ module Rouge
|
|
|
147
143
|
end
|
|
148
144
|
|
|
149
145
|
state :eval_or_plain do
|
|
150
|
-
rule /[&!]?==/, Punctuation, :plain
|
|
151
|
-
rule /[&!]?[=!]/ do
|
|
146
|
+
rule %r/[&!]?==/, Punctuation, :plain
|
|
147
|
+
rule %r/[&!]?[=!]/ do
|
|
152
148
|
token Punctuation
|
|
153
149
|
reset_stack
|
|
154
150
|
ruby! :ruby_line
|
|
@@ -158,9 +154,9 @@ module Rouge
|
|
|
158
154
|
end
|
|
159
155
|
|
|
160
156
|
state :ruby_line do
|
|
161
|
-
rule /\n/, Text, :pop!
|
|
157
|
+
rule %r/\n/, Text, :pop!
|
|
162
158
|
rule(/,[ \t]*\n/) { delegate ruby }
|
|
163
|
-
rule /[ ]\|[ \t]*\n/, Str::Escape
|
|
159
|
+
rule %r/[ ]\|[ \t]*\n/, Str::Escape
|
|
164
160
|
rule(/.*?(?=(,$| \|)?[ \t]*$)/) { delegate ruby }
|
|
165
161
|
end
|
|
166
162
|
|
|
@@ -169,33 +165,33 @@ module Rouge
|
|
|
169
165
|
end
|
|
170
166
|
|
|
171
167
|
state :html_attributes do
|
|
172
|
-
rule /\s+/, Text
|
|
173
|
-
rule /#{identifier}\s*=/, Name::Attribute, :html_attribute_value
|
|
168
|
+
rule %r/\s+/, Text
|
|
169
|
+
rule %r/#{identifier}\s*=/, Name::Attribute, :html_attribute_value
|
|
174
170
|
rule identifier, Name::Attribute
|
|
175
|
-
rule /\)/, Text, :pop!
|
|
171
|
+
rule %r/\)/, Text, :pop!
|
|
176
172
|
end
|
|
177
173
|
|
|
178
174
|
state :html_attribute_value do
|
|
179
|
-
rule /\s+/, Text
|
|
175
|
+
rule %r/\s+/, Text
|
|
180
176
|
rule ruby_var, Name::Variable, :pop!
|
|
181
|
-
rule /@#{ruby_var}/, Name::Variable::Instance, :pop!
|
|
182
|
-
rule /\$#{ruby_var}/, Name::Variable::Global, :pop!
|
|
183
|
-
rule /'(\\\\|\\'|[^'\n])*'/, Str, :pop!
|
|
184
|
-
rule /"(\\\\|\\"|[^"\n])*"/, Str, :pop!
|
|
177
|
+
rule %r/@#{ruby_var}/, Name::Variable::Instance, :pop!
|
|
178
|
+
rule %r/\$#{ruby_var}/, Name::Variable::Global, :pop!
|
|
179
|
+
rule %r/'(\\\\|\\'|[^'\n])*'/, Str, :pop!
|
|
180
|
+
rule %r/"(\\\\|\\"|[^"\n])*"/, Str, :pop!
|
|
185
181
|
end
|
|
186
182
|
|
|
187
183
|
state :html_comment_block do
|
|
188
|
-
rule /#{dot}+/, Comment
|
|
184
|
+
rule %r/#{dot}+/, Comment
|
|
189
185
|
mixin :indented_block
|
|
190
186
|
end
|
|
191
187
|
|
|
192
188
|
state :haml_comment_block do
|
|
193
|
-
rule /#{dot}+/, Comment::Preproc
|
|
189
|
+
rule %r/#{dot}+/, Comment::Preproc
|
|
194
190
|
mixin :indented_block
|
|
195
191
|
end
|
|
196
192
|
|
|
197
193
|
state :filter_block do
|
|
198
|
-
rule /([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/ do
|
|
194
|
+
rule %r/([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/ do
|
|
199
195
|
if @filter_lexer
|
|
200
196
|
delegate @filter_lexer
|
|
201
197
|
else
|
|
@@ -208,11 +204,11 @@ module Rouge
|
|
|
208
204
|
end
|
|
209
205
|
|
|
210
206
|
state :interpolation do
|
|
211
|
-
rule /#[{]/, Str::Interpol, :ruby
|
|
207
|
+
rule %r/#[{]/, Str::Interpol, :ruby
|
|
212
208
|
end
|
|
213
209
|
|
|
214
210
|
state :ruby do
|
|
215
|
-
rule /[}]/, Str::Interpol, :pop!
|
|
211
|
+
rule %r/[}]/, Str::Interpol, :pop!
|
|
216
212
|
mixin :ruby_inner
|
|
217
213
|
end
|
|
218
214
|
|
|
@@ -18,10 +18,10 @@ module Rouge
|
|
|
18
18
|
rule(/\\{+/) { delegate parent }
|
|
19
19
|
|
|
20
20
|
# block comments
|
|
21
|
-
rule /{{!--/, Comment, :comment
|
|
22
|
-
rule /{{!.*?}}/, Comment
|
|
21
|
+
rule %r/{{!--/, Comment, :comment
|
|
22
|
+
rule %r/{{!.*?}}/, Comment
|
|
23
23
|
|
|
24
|
-
rule /{{{?/ do
|
|
24
|
+
rule %r/{{{?/ do
|
|
25
25
|
token Keyword
|
|
26
26
|
push :stache
|
|
27
27
|
push :open_sym
|
|
@@ -42,20 +42,20 @@ module Rouge
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
state :stache do
|
|
45
|
-
rule /}}}?/, Keyword, :pop!
|
|
46
|
-
rule /\s+/m, Text
|
|
47
|
-
rule /[=]/, Operator
|
|
48
|
-
rule /[\[\]]/, Punctuation
|
|
49
|
-
rule /[.](?=[}\s])/, Name::Variable
|
|
50
|
-
rule /[.][.]/, Name::Variable
|
|
45
|
+
rule %r/}}}?/, Keyword, :pop!
|
|
46
|
+
rule %r/\s+/m, Text
|
|
47
|
+
rule %r/[=]/, Operator
|
|
48
|
+
rule %r/[\[\]]/, Punctuation
|
|
49
|
+
rule %r/[.](?=[}\s])/, Name::Variable
|
|
50
|
+
rule %r/[.][.]/, Name::Variable
|
|
51
51
|
rule %r([/.]), Punctuation
|
|
52
|
-
rule /"(\\.|.)*?"/, Str::Double
|
|
53
|
-
rule /'(\\.|.)*?'/, Str::Single
|
|
54
|
-
rule /\d+(?=}\s)/, Num
|
|
55
|
-
rule /(true|false)(?=[}\s])/, Keyword::Constant
|
|
56
|
-
rule /else(?=[}\s])/, Keyword
|
|
57
|
-
rule /this(?=[}\s])/, Name::Builtin::Pseudo
|
|
58
|
-
rule /@#{id}/, Name::Attribute
|
|
52
|
+
rule %r/"(\\.|.)*?"/, Str::Double
|
|
53
|
+
rule %r/'(\\.|.)*?'/, Str::Single
|
|
54
|
+
rule %r/\d+(?=}\s)/, Num
|
|
55
|
+
rule %r/(true|false)(?=[}\s])/, Keyword::Constant
|
|
56
|
+
rule %r/else(?=[}\s])/, Keyword
|
|
57
|
+
rule %r/this(?=[}\s])/, Name::Builtin::Pseudo
|
|
58
|
+
rule %r/@#{id}/, Name::Attribute
|
|
59
59
|
rule id, Name::Variable
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -65,13 +65,13 @@ module Rouge
|
|
|
65
65
|
goto :block_name
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
-
rule /[>^&]/, Keyword
|
|
68
|
+
rule %r/[>^&]/, Keyword
|
|
69
69
|
|
|
70
70
|
rule(//) { pop! }
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
state :block_name do
|
|
74
|
-
rule /if(?=[}\s])/, Keyword
|
|
74
|
+
rule %r/if(?=[}\s])/, Keyword
|
|
75
75
|
rule id, Name::Namespace, :pop!
|
|
76
76
|
rule(//) { pop! }
|
|
77
77
|
end
|
data/lib/rouge/lexers/haskell.rb
CHANGED
|
@@ -9,7 +9,7 @@ module Rouge
|
|
|
9
9
|
|
|
10
10
|
tag 'haskell'
|
|
11
11
|
aliases 'hs'
|
|
12
|
-
filenames '*.hs'
|
|
12
|
+
filenames '*.hs', '*.hs-boot'
|
|
13
13
|
mimetypes 'text/x-haskell'
|
|
14
14
|
|
|
15
15
|
def self.detect?(text)
|
|
@@ -27,40 +27,41 @@ module Rouge
|
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
state :basic do
|
|
30
|
-
rule /\s+/m, Text
|
|
31
|
-
rule /{-#/, Comment::Preproc, :comment_preproc
|
|
32
|
-
rule /{-/, Comment::Multiline, :comment
|
|
33
|
-
rule /^--\s+\|.*?$/, Comment::Doc
|
|
30
|
+
rule %r/\s+/m, Text
|
|
31
|
+
rule %r/{-#/, Comment::Preproc, :comment_preproc
|
|
32
|
+
rule %r/{-/, Comment::Multiline, :comment
|
|
33
|
+
rule %r/^--\s+\|.*?$/, Comment::Doc
|
|
34
34
|
# this is complicated in order to support custom symbols
|
|
35
35
|
# like -->
|
|
36
|
-
rule /--(?![!#\$\%&*+.\/<=>?@\^\|_~]).*?$/, Comment::Single
|
|
36
|
+
rule %r/--(?![!#\$\%&*+.\/<=>?@\^\|_~]).*?$/, Comment::Single
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
# nested commenting
|
|
40
40
|
state :comment do
|
|
41
|
-
rule /-}/, Comment::Multiline, :pop!
|
|
42
|
-
rule /{-/, Comment::Multiline, :comment
|
|
43
|
-
rule /[^-{}]+/, Comment::Multiline
|
|
44
|
-
rule /[-{}]/, Comment::Multiline
|
|
41
|
+
rule %r/-}/, Comment::Multiline, :pop!
|
|
42
|
+
rule %r/{-/, Comment::Multiline, :comment
|
|
43
|
+
rule %r/[^-{}]+/, Comment::Multiline
|
|
44
|
+
rule %r/[-{}]/, Comment::Multiline
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
state :comment_preproc do
|
|
48
|
-
rule /-}/, Comment::Preproc, :pop!
|
|
49
|
-
rule /{-/, Comment::Preproc, :comment
|
|
50
|
-
rule /[^-{}]+/, Comment::Preproc
|
|
51
|
-
rule /[-{}]/, Comment::Preproc
|
|
48
|
+
rule %r/-}/, Comment::Preproc, :pop!
|
|
49
|
+
rule %r/{-/, Comment::Preproc, :comment
|
|
50
|
+
rule %r/[^-{}]+/, Comment::Preproc
|
|
51
|
+
rule %r/[-{}]/, Comment::Preproc
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
state :root do
|
|
55
55
|
mixin :basic
|
|
56
56
|
|
|
57
|
-
rule /\bimport\b/, Keyword::Reserved, :import
|
|
58
|
-
rule /\bmodule\b/, Keyword::Reserved, :module
|
|
59
|
-
rule /\b(?:#{reserved.join('|')})\b/, Keyword::Reserved
|
|
57
|
+
rule %r/\bimport\b/, Keyword::Reserved, :import
|
|
58
|
+
rule %r/\bmodule\b/, Keyword::Reserved, :module
|
|
59
|
+
rule %r/\b(?:#{reserved.join('|')})\b/, Keyword::Reserved
|
|
60
60
|
# not sure why, but ^ doesn't work here
|
|
61
|
-
# rule /^[_a-z][\w']*/, Name::Function
|
|
62
|
-
rule /[_a-z][\w']*/, Name
|
|
63
|
-
rule /[A-Z][\w']*/, Keyword::Type
|
|
61
|
+
# rule %r/^[_a-z][\w']*/, Name::Function
|
|
62
|
+
rule %r/[_a-z][\w']*/, Name
|
|
63
|
+
rule %r/[A-Z][\w']*/, Keyword::Type
|
|
64
|
+
rule %r/'[A-Z]\w+'?/, Keyword::Type # promoted data constructor
|
|
64
65
|
|
|
65
66
|
# lambda operator
|
|
66
67
|
rule %r(\\(?![:!#\$\%&*+.\\/<=>?@^\|~-]+)), Name::Function
|
|
@@ -71,35 +72,35 @@ module Rouge
|
|
|
71
72
|
# other operators
|
|
72
73
|
rule %r([:!#\$\%&*+.\\/<=>?@^\|~-]+), Operator
|
|
73
74
|
|
|
74
|
-
rule /\d+e[+-]?\d+/i, Num::Float
|
|
75
|
-
rule /\d+\.\d+(e[+-]?\d+)?/i, Num::Float
|
|
76
|
-
rule /0o[0-7]+/i, Num::Oct
|
|
77
|
-
rule /0x[\da-f]+/i, Num::Hex
|
|
78
|
-
rule /\d+/, Num::Integer
|
|
75
|
+
rule %r/\d+e[+-]?\d+/i, Num::Float
|
|
76
|
+
rule %r/\d+\.\d+(e[+-]?\d+)?/i, Num::Float
|
|
77
|
+
rule %r/0o[0-7]+/i, Num::Oct
|
|
78
|
+
rule %r/0x[\da-f]+/i, Num::Hex
|
|
79
|
+
rule %r/\d+/, Num::Integer
|
|
79
80
|
|
|
80
|
-
rule /'/, Str::Char, :character
|
|
81
|
-
rule /"/, Str, :string
|
|
81
|
+
rule %r/'/, Str::Char, :character
|
|
82
|
+
rule %r/"/, Str, :string
|
|
82
83
|
|
|
83
|
-
rule /\[\s*\]/, Keyword::Type
|
|
84
|
-
rule /\(\s*\)/, Name::Builtin
|
|
84
|
+
rule %r/\[\s*\]/, Keyword::Type
|
|
85
|
+
rule %r/\(\s*\)/, Name::Builtin
|
|
85
86
|
|
|
86
87
|
# Quasiquotations
|
|
87
|
-
rule /(\[)([_a-z][\w']*)(\|)/ do |m|
|
|
88
|
+
rule %r/(\[)([_a-z][\w']*)(\|)/ do |m|
|
|
88
89
|
token Operator, m[1]
|
|
89
90
|
token Name, m[2]
|
|
90
91
|
token Operator, m[3]
|
|
91
92
|
push :quasiquotation
|
|
92
93
|
end
|
|
93
94
|
|
|
94
|
-
rule /[\[\](),;`{}]/, Punctuation
|
|
95
|
+
rule %r/[\[\](),;`{}]/, Punctuation
|
|
95
96
|
end
|
|
96
97
|
|
|
97
98
|
state :import do
|
|
98
|
-
rule /\s+/, Text
|
|
99
|
-
rule /"/, Str, :string
|
|
100
|
-
rule /\bqualified\b/, Keyword
|
|
99
|
+
rule %r/\s+/, Text
|
|
100
|
+
rule %r/"/, Str, :string
|
|
101
|
+
rule %r/\bqualified\b/, Keyword
|
|
101
102
|
# import X as Y
|
|
102
|
-
rule /([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][a-zA-Z0-9_.]*)/ do
|
|
103
|
+
rule %r/([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][a-zA-Z0-9_.]*)/ do
|
|
103
104
|
groups(
|
|
104
105
|
Name::Namespace, # X
|
|
105
106
|
Text, Keyword, # as
|
|
@@ -109,7 +110,7 @@ module Rouge
|
|
|
109
110
|
end
|
|
110
111
|
|
|
111
112
|
# import X hiding (functions)
|
|
112
|
-
rule /([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()/ do
|
|
113
|
+
rule %r/([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()/ do
|
|
113
114
|
groups(
|
|
114
115
|
Name::Namespace, # X
|
|
115
116
|
Text, Keyword, # hiding
|
|
@@ -119,7 +120,7 @@ module Rouge
|
|
|
119
120
|
end
|
|
120
121
|
|
|
121
122
|
# import X (functions)
|
|
122
|
-
rule /([A-Z][\w.]*)(\s+)(\()/ do
|
|
123
|
+
rule %r/([A-Z][\w.]*)(\s+)(\()/ do
|
|
123
124
|
groups(
|
|
124
125
|
Name::Namespace, # X
|
|
125
126
|
Text,
|
|
@@ -128,70 +129,70 @@ module Rouge
|
|
|
128
129
|
goto :funclist
|
|
129
130
|
end
|
|
130
131
|
|
|
131
|
-
rule /[\w.]+/, Name::Namespace, :pop!
|
|
132
|
+
rule %r/[\w.]+/, Name::Namespace, :pop!
|
|
132
133
|
end
|
|
133
134
|
|
|
134
135
|
state :module do
|
|
135
|
-
rule /\s+/, Text
|
|
136
|
+
rule %r/\s+/, Text
|
|
136
137
|
# module Foo (functions)
|
|
137
|
-
rule /([A-Z][\w.]*)(\s+)(\()/ do
|
|
138
|
+
rule %r/([A-Z][\w.]*)(\s+)(\()/ do
|
|
138
139
|
groups Name::Namespace, Text, Punctuation
|
|
139
140
|
push :funclist
|
|
140
141
|
end
|
|
141
142
|
|
|
142
|
-
rule /\bwhere\b/, Keyword::Reserved, :pop!
|
|
143
|
+
rule %r/\bwhere\b/, Keyword::Reserved, :pop!
|
|
143
144
|
|
|
144
|
-
rule /[A-Z][a-zA-Z0-9_.]*/, Name::Namespace, :pop!
|
|
145
|
+
rule %r/[A-Z][a-zA-Z0-9_.]*/, Name::Namespace, :pop!
|
|
145
146
|
end
|
|
146
147
|
|
|
147
148
|
state :funclist do
|
|
148
149
|
mixin :basic
|
|
149
|
-
rule /[A-Z]\w*/, Keyword::Type
|
|
150
|
-
rule /(_[\w\']+|[a-z][\w\']*)/, Name::Function
|
|
151
|
-
rule /,/, Punctuation
|
|
152
|
-
rule /[:!#\$\%&*+.\\\/<=>?@^\|~-]+/, Operator
|
|
153
|
-
rule /\(/, Punctuation, :funclist
|
|
154
|
-
rule /\)/, Punctuation, :pop!
|
|
150
|
+
rule %r/[A-Z]\w*/, Keyword::Type
|
|
151
|
+
rule %r/(_[\w\']+|[a-z][\w\']*)/, Name::Function
|
|
152
|
+
rule %r/,/, Punctuation
|
|
153
|
+
rule %r/[:!#\$\%&*+.\\\/<=>?@^\|~-]+/, Operator
|
|
154
|
+
rule %r/\(/, Punctuation, :funclist
|
|
155
|
+
rule %r/\)/, Punctuation, :pop!
|
|
155
156
|
end
|
|
156
157
|
|
|
157
158
|
state :character do
|
|
158
|
-
rule /\\/ do
|
|
159
|
+
rule %r/\\/ do
|
|
159
160
|
token Str::Escape
|
|
160
161
|
goto :character_end
|
|
161
162
|
push :escape
|
|
162
163
|
end
|
|
163
164
|
|
|
164
|
-
rule /./ do
|
|
165
|
+
rule %r/./ do
|
|
165
166
|
token Str::Char
|
|
166
167
|
goto :character_end
|
|
167
168
|
end
|
|
168
169
|
end
|
|
169
170
|
|
|
170
171
|
state :character_end do
|
|
171
|
-
rule /'/, Str::Char, :pop!
|
|
172
|
-
rule /./, Error, :pop!
|
|
172
|
+
rule %r/'/, Str::Char, :pop!
|
|
173
|
+
rule %r/./, Error, :pop!
|
|
173
174
|
end
|
|
174
175
|
|
|
175
176
|
state :quasiquotation do
|
|
176
|
-
rule /\|\]/, Operator, :pop!
|
|
177
|
-
rule /[^\|]+/m, Text
|
|
178
|
-
rule /\|/, Text
|
|
177
|
+
rule %r/\|\]/, Operator, :pop!
|
|
178
|
+
rule %r/[^\|]+/m, Text
|
|
179
|
+
rule %r/\|/, Text
|
|
179
180
|
end
|
|
180
181
|
|
|
181
182
|
state :string do
|
|
182
|
-
rule /"/, Str, :pop!
|
|
183
|
-
rule /\\/, Str::Escape, :escape
|
|
184
|
-
rule /[^\\"]+/, Str
|
|
183
|
+
rule %r/"/, Str, :pop!
|
|
184
|
+
rule %r/\\/, Str::Escape, :escape
|
|
185
|
+
rule %r/[^\\"]+/, Str
|
|
185
186
|
end
|
|
186
187
|
|
|
187
188
|
state :escape do
|
|
188
|
-
rule /[abfnrtv"'&\\]/, Str::Escape, :pop!
|
|
189
|
-
rule /\^[\]\[A-Z@\^_]/, Str::Escape, :pop!
|
|
190
|
-
rule /#{ascii.join('|')}/, Str::Escape, :pop!
|
|
191
|
-
rule /o[0-7]+/i, Str::Escape, :pop!
|
|
192
|
-
rule /x[\da-f]+/i, Str::Escape, :pop!
|
|
193
|
-
rule /\d+/, Str::Escape, :pop!
|
|
194
|
-
rule /\s+\\/, Str::Escape, :pop!
|
|
189
|
+
rule %r/[abfnrtv"'&\\]/, Str::Escape, :pop!
|
|
190
|
+
rule %r/\^[\]\[A-Z@\^_]/, Str::Escape, :pop!
|
|
191
|
+
rule %r/#{ascii.join('|')}/, Str::Escape, :pop!
|
|
192
|
+
rule %r/o[0-7]+/i, Str::Escape, :pop!
|
|
193
|
+
rule %r/x[\da-f]+/i, Str::Escape, :pop!
|
|
194
|
+
rule %r/\d+/, Str::Escape, :pop!
|
|
195
|
+
rule %r/\s+\\/, Str::Escape, :pop!
|
|
195
196
|
end
|
|
196
197
|
end
|
|
197
198
|
end
|