rouge 1.11.0 → 1.11.1

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.
@@ -9,7 +9,7 @@ module Rouge
9
9
  mimetypes 'application/x-dsrc', 'text/x-dsrc'
10
10
 
11
11
  title "D"
12
- desc 'The D programming language(dlag.org)'
12
+ desc 'The D programming language(dlang.org)'
13
13
 
14
14
  keywords = %w(
15
15
  abstract alias align asm assert auto body
@@ -57,10 +57,14 @@ module Rouge
57
57
  rule /package\b/, Keyword::Namespace, :import
58
58
  rule /import\b/, Keyword::Namespace, :import
59
59
 
60
- rule /"(\\\\|\\"|[^"])*"/, Str::Double
61
- rule /'(\\\\|\\'|[^'])*'/, Str::Single
62
- rule %r(\$/((?!/\$).)*/\$), Str
63
- rule %r(/(\\\\|\\"|[^/])*/), Str
60
+ # TODO: highlight backslash escapes
61
+ rule /""".*?"""/m, Str::Double
62
+ rule /'''.*?'''/m, Str::Single
63
+
64
+ rule /"(\\.|\\\n|.)*?"/, Str::Double
65
+ rule /'(\\.|\\\n|.)*?'/, Str::Single
66
+ rule %r(\$/(\$.|.)*?/\$)m, Str
67
+ rule %r(/(\\.|\\\n|.)*?/), Str
64
68
  rule /'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'/, Str::Char
65
69
  rule /(\.)([a-zA-Z_][a-zA-Z0-9_]*)/ do
66
70
  groups Operator, Name::Attribute
@@ -7,8 +7,8 @@ module Rouge
7
7
  title "HTTP"
8
8
  desc 'http requests and responses'
9
9
 
10
- def self.methods
11
- @methods ||= %w(GET POST PUT DELETE HEAD OPTIONS TRACE PATCH)
10
+ def self.http_methods
11
+ @http_methods ||= %w(GET POST PUT DELETE HEAD OPTIONS TRACE PATCH)
12
12
  end
13
13
 
14
14
  def content_lexer
@@ -24,7 +24,7 @@ module Rouge
24
24
  state :root do
25
25
  # request
26
26
  rule %r(
27
- (#{HTTP.methods.join('|')})([ ]+) # method
27
+ (#{HTTP.http_methods.join('|')})([ ]+) # method
28
28
  ([^ ]+)([ ]+) # path
29
29
  (HTTPS?)(/)(1[.][01])(\r?\n|$) # http version
30
30
  )ox do
@@ -2,6 +2,12 @@
2
2
 
3
3
  module Rouge
4
4
  module Lexers
5
+ # IMPORTANT NOTICE:
6
+ #
7
+ # Please do not copy this lexer and open a pull request
8
+ # for a new language. It will not get merged, you will
9
+ # be unhappy, and kittens will cry.
10
+ #
5
11
  class Javascript < RegexLexer
6
12
  title "JavaScript"
7
13
  desc "JavaScript, the browser scripting language"
@@ -33,7 +39,10 @@ module Rouge
33
39
  goto :regex
34
40
  end
35
41
 
36
- rule /[{]/, Punctuation, :object
42
+ rule /[{]/ do
43
+ token Punctuation
44
+ goto :object
45
+ end
37
46
 
38
47
  rule //, Text, :pop!
39
48
  end
@@ -177,6 +186,12 @@ module Rouge
177
186
  # object literals
178
187
  state :object do
179
188
  mixin :comments_and_whitespace
189
+
190
+ rule /[{]/ do
191
+ token Punctuation
192
+ push
193
+ end
194
+
180
195
  rule /[}]/ do
181
196
  token Punctuation
182
197
  goto :statement
@@ -0,0 +1,84 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Kotlin < RegexLexer
6
+ title "Kotlin"
7
+ desc "Kotlin <http://kotlinlang.org>"
8
+
9
+ tag 'kotlin'
10
+ filenames '*.kt'
11
+ mimetypes 'text/x-kotlin'
12
+
13
+ keywords = %w(
14
+ abstract annotation as break by catch class companion const
15
+ constructor continue crossinline do dynamic else enum
16
+ external false final finally for fun get if import in infix
17
+ inline inner interface internal is lateinit noinline null
18
+ object open operator out override package private protected
19
+ public reified return sealed set super tailrec this throw
20
+ true try typealias typeof val var vararg when where while
21
+ yield
22
+ )
23
+
24
+ name = %r'@?[_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Nl}][\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Nl}\p{Nd}\p{Pc}\p{Cf}\p{Mn}\p{Mc}]*'
25
+
26
+ id = %r'(#{name}|`#{name}`)'
27
+
28
+ state :root do
29
+ rule %r'^\s*\[.*?\]', Name::Attribute
30
+ rule %r'[^\S\n]+', Text
31
+ rule %r'\\\n', Text # line continuation
32
+ rule %r'//.*?\n', Comment::Single
33
+ rule %r'/[*].*?[*]/'m, Comment::Multiline
34
+ rule %r'\n', Text
35
+ rule %r'::|!!|\?[:.]', Operator
36
+ rule %r"(\.\.)", Operator
37
+ rule %r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation
38
+ rule %r'[{}]', Punctuation
39
+ rule %r'@"(""|[^"])*"'m, Str
40
+ rule %r'""".*?"""'m, Str
41
+ rule %r'"(\\\\|\\"|[^"\n])*["\n]'m, Str
42
+ rule %r"'\\.'|'[^\\]'", Str::Char
43
+ rule %r"[0-9](\.[0-9]+)?([eE][+-][0-9]+)?[flFL]?|0[xX][0-9a-fA-F]+[Ll]?", Num
44
+ rule %r'(class)(\s+)(object)' do
45
+ groups Keyword, Text, Keyword
46
+ end
47
+ rule %r'(class|data\s+class|interface|object)(\s+)' do
48
+ groups Keyword::Declaration, Text
49
+ push :class
50
+ end
51
+ rule %r'(package|import)(\s+)' do
52
+ groups Keyword, Text
53
+ push :package
54
+ end
55
+ rule %r'(val|var)(\s+)' do
56
+ groups Keyword::Declaration, Text
57
+ push :property
58
+ end
59
+ rule %r'(fun)(\s+)' do
60
+ groups Keyword, Text
61
+ push :function
62
+ end
63
+ rule /(?:#{keywords.join('|')})\b/, Keyword
64
+ rule id, Name
65
+ end
66
+
67
+ state :package do
68
+ rule /\S+/, Name::Namespace, :pop!
69
+ end
70
+
71
+ state :class do
72
+ rule id, Name::Class, :pop!
73
+ end
74
+
75
+ state :property do
76
+ rule id, Name::Property, :pop!
77
+ end
78
+
79
+ state :function do
80
+ rule id, Name::Function, :pop!
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,66 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Pascal < RegexLexer
6
+ tag 'pascal'
7
+ title "Pascal"
8
+ desc 'a procedural programming language commonly used as a teaching language.'
9
+ filenames '*.pas'
10
+
11
+ mimetypes 'text/x-pascal'
12
+
13
+ id = /@?[_a-z]\w*/i
14
+
15
+ keywords = %w(
16
+ absolute abstract all and and_then array as asm assembler attribute
17
+ begin bindable case class const constructor delay destructor div do
18
+ downto else end except exit export exports external far file finalization
19
+ finally for forward function goto if implementation import in inc index
20
+ inherited initialization inline interface interrupt is label library
21
+ message mod module near nil not object of on only operator or or_else
22
+ otherwise out overload override packed pascal pow private procedure program
23
+ property protected public published qualified raise read record register
24
+ repeat resident resourcestring restricted safecall segment set shl shr
25
+ stdcall stored string then threadvar to try type unit until uses value var
26
+ view virtual while with write writeln xor
27
+ )
28
+
29
+ keywords_type = %w(
30
+ ansichar ansistring bool boolean byte bytebool cardinal char comp currency
31
+ double dword extended int64 integer iunknown longbool longint longword pansichar
32
+ pansistring pbool pboolean pbyte pbytearray pcardinal pchar pcomp pcurrency
33
+ pdate pdatetime pdouble pdword pextended phandle pint64 pinteger plongint plongword
34
+ pointer ppointer pshortint pshortstring psingle psmallint pstring pvariant pwidechar
35
+ pwidestring pword pwordarray pwordbool real real48 shortint shortstring single
36
+ smallint string tclass tdate tdatetime textfile thandle tobject ttime variant
37
+ widechar widestring word wordbool
38
+ )
39
+
40
+ state :whitespace do
41
+ # Spaces
42
+ rule /\s+/m, Text
43
+ # // Comments
44
+ rule %r((//).*$\n?), Comment::Single
45
+ # -- Comments
46
+ rule %r((--).*$\n?), Comment::Single
47
+ # (* Comments *)
48
+ rule %r(\(\*.*?\*\))m, Comment::Multiline
49
+ # { Comments }
50
+ rule %r(\{.*?\})m, Comment::Multiline
51
+ end
52
+
53
+ state :root do
54
+ mixin :whitespace
55
+
56
+ rule %r{((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?}, Num
57
+ rule %r{[~!@#\$%\^&\*\(\)\+`\-={}\[\]:;<>\?,\.\/\|\\]}, Punctuation
58
+ rule %r{'([^']|'')*'}, Str
59
+ rule /(true|false|nil)\b/i, Name::Builtin
60
+ rule /\b(#{keywords.join('|')})\b/i, Keyword
61
+ rule /\b(#{keywords_type.join('|')})\b/i, Keyword::Type
62
+ rule id, Name
63
+ end
64
+ end
65
+ end
66
+ end
@@ -16,7 +16,7 @@ module Rouge
16
16
 
17
17
  keywords = %w(
18
18
  if then else elsif elif endif fi for from to endfor endproc while
19
- endwhile repeat until select plus minus demo assert stopwatch
19
+ endwhile repeat until select plus minus demo assert stopwatch
20
20
  nocheck nowarn noprogress editor endeditor clearinfo
21
21
  )
22
22
 
@@ -39,7 +39,7 @@ module Rouge
39
39
  endSendPraat endsWith erb erbToHertz erf erfc exitScript exp
40
40
  extractNumber fileReadable fisherP fisherQ floor gaussP gaussQ
41
41
  hertzToBark hertzToErb hertzToMel hertzToSemitones imax imin
42
- incompleteBeta incompleteGammaP index index_regex invBinomialP
42
+ incompleteBeta incompleteGammaP index index_regex integer invBinomialP
43
43
  invBinomialQ invChiSquareQ invFisherQ invGaussQ invSigmoid invStudentQ
44
44
  length ln lnBeta lnGamma log10 log2 max melToHertz min minusObject
45
45
  natural number numberOfColumns numberOfRows numberOfSelected
@@ -47,10 +47,10 @@ module Rouge
47
47
  phonToDifferenceLimens plusObject positive randomBinomial randomGauss
48
48
  randomInteger randomPoisson randomUniform real readFile removeObject
49
49
  rindex rindex_regex round runScript runSystem runSystem_nocheck
50
- selectObject selected semitonesToHertz sentencetext sigmoid sin sinc
51
- sincpi sinh soundPressureToPhon sqrt startsWith studentP studentQ tan
52
- tanh variableExists word writeFile writeFileLine writeInfo
53
- writeInfoLine
50
+ selectObject selected semitonesToHertz sentence sentencetext sigmoid
51
+ sin sinc sincpi sinh soundPressureToPhon sqrt startsWith studentP
52
+ studentQ tan tanh text variableExists word writeFile writeFileLine
53
+ writeInfo writeInfoLine
54
54
  )
55
55
 
56
56
  functions_array = %w(
@@ -62,29 +62,31 @@ module Rouge
62
62
  BarkFilter BarkSpectrogram CCA Categories Cepstrogram Cepstrum
63
63
  Cepstrumc ChebyshevSeries ClassificationTable Cochleagram Collection
64
64
  ComplexSpectrogram Configuration Confusion ContingencyTable Corpus
65
- Correlation Covariance CrossCorrelationTable CrossCorrelationTables DTW
66
- DataModeler Diagonalizer Discriminant Dissimilarity Distance
67
- Distributions DurationTier EEG ERP ERPTier EditCostsTable
68
- EditDistanceTable Eigen Excitation Excitations ExperimentMFC FFNet
69
- FeatureWeights FileInMemory FilesInMemory Formant FormantFilter
70
- FormantGrid FormantModeler FormantPoint FormantTier GaussianMixture HMM
71
- HMM_Observation HMM_ObservationSequence HMM_State HMM_StateSequence
72
- Harmonicity ISpline Index Intensity IntensityTier IntervalTier KNN
73
- KlattGrid KlattTable LFCC LPC Label LegendreSeries LinearRegression
74
- LogisticRegression LongSound Ltas MFCC MSpline ManPages Manipulation
75
- Matrix MelFilter MelSpectrogram MixingMatrix Movie Network OTGrammar
76
- OTHistory OTMulti PCA PairDistribution ParamCurve Pattern Permutation
77
- Photo Pitch PitchModeler PitchTier PointProcess Polygon Polynomial
78
- PowerCepstrogram PowerCepstrum Procrustes RealPoint RealTier ResultsMFC
79
- Roots SPINET SSCP SVD Salience ScalarProduct Similarity SimpleString
80
- SortedSetOfString Sound Speaker Spectrogram Spectrum SpectrumTier
81
- SpeechSynthesizer SpellingChecker Strings StringsIndex Table
82
- TableOfReal TextGrid TextInterval TextPoint TextTier Tier Transition
83
- VocalTract VocalTractTier Weight WordList
65
+ Correlation Covariance CrossCorrelationTable CrossCorrelationTableList
66
+ CrossCorrelationTables DTW DataModeler Diagonalizer Discriminant
67
+ Dissimilarity Distance Distributions DurationTier EEG ERP ERPTier
68
+ EditCostsTable EditDistanceTable Eigen Excitation Excitations
69
+ ExperimentMFC FFNet FeatureWeights FileInMemory FilesInMemory Formant
70
+ FormantFilter FormantGrid FormantModeler FormantPoint FormantTier
71
+ GaussianMixture HMM HMM_Observation HMM_ObservationSequence HMM_State
72
+ HMM_StateSequence HMMObservation HMMObservationSequence HMMState
73
+ HMMStateSequence Harmonicity ISpline Index Intensity IntensityTier
74
+ IntervalTier KNN KlattGrid KlattTable LFCC LPC Label LegendreSeries
75
+ LinearRegression LogisticRegression LongSound Ltas MFCC MSpline ManPages
76
+ Manipulation Matrix MelFilter MelSpectrogram MixingMatrix Movie Network
77
+ OTGrammar OTHistory OTMulti PCA PairDistribution ParamCurve Pattern
78
+ Permutation Photo Pitch PitchModeler PitchTier PointProcess Polygon
79
+ Polynomial PowerCepstrogram PowerCepstrum Procrustes RealPoint RealTier
80
+ ResultsMFC Roots SPINET SSCP SVD Salience ScalarProduct Similarity
81
+ SimpleString SortedSetOfString Sound Speaker Spectrogram Spectrum
82
+ SpectrumTier SpeechSynthesizer SpellingChecker Strings StringsIndex
83
+ Table TableOfReal TextGrid TextInterval TextPoint TextTier Tier
84
+ Transition VocalTract VocalTractTier Weight WordList
84
85
  )
85
86
 
86
87
  variables_numeric = %w(
87
- macintosh windows unix praatVersion pi e undefined
88
+ all average e left macintosh mono pi praatVersion right stereo
89
+ undefined unix windows
88
90
  )
89
91
 
90
92
  variables_string = %w(
@@ -93,6 +95,10 @@ module Rouge
93
95
  defaultDirectory
94
96
  )
95
97
 
98
+ object_attributes = %w(
99
+ ncol nrow xmin ymin xmax ymax nx ny dx dy
100
+ )
101
+
96
102
  state :root do
97
103
  rule /(\s+)(#.*?$)/ do
98
104
  groups Text, Comment::Single
@@ -107,6 +113,7 @@ module Rouge
107
113
 
108
114
  mixin :function_call
109
115
 
116
+ rule /\b(?:select all)\b/, Keyword
110
117
  rule /\b(?:#{keywords.join('|')})\b/, Keyword
111
118
 
112
119
  rule /(\bform\b)(\s+)([^\n]+)/ do
@@ -132,51 +139,25 @@ module Rouge
132
139
 
133
140
  rule /\b(?=[A-Z])/, Text, :command
134
141
  rule /(\.{3}|[)(,\$])/, Punctuation
135
- rule /./, Generic::Error
136
142
  end
137
143
 
138
144
  state :command do
139
145
  rule /( ?[\w()-]+ ?)/, Keyword
140
- rule /'(?=.*')/, Literal::String::Interpol, :string_interpolated
141
- rule /\.{3}/, Keyword, :old_arguments
142
- rule /:/, Keyword, :comma_list
143
- rule /[\s\n]/, Text, :pop!
144
- end
146
+ mixin :string_interpolated
145
147
 
146
- state :function_call do
147
- rule /\b(#{functions_string.join('|')})\$(?=\s*[:(])/, Name::Function, :function
148
- rule /\b(#{functions_array.join('|')})#(?=\s*[:(])/, Name::Function, :function
149
- rule /\b(#{functions_numeric.join('|')})(?=\s*[:(])/, Name::Function, :function
150
- end
151
-
152
- state :old_arguments do
153
- rule /\n/ do
154
- token Text
148
+ rule /\.{3}/ do
149
+ token Keyword
155
150
  pop!
156
- pop! unless state? :root
151
+ push :old_arguments
157
152
  end
158
153
 
159
- mixin :function_call
160
- mixin :operator
161
- mixin :number
162
-
163
- rule /"/, Literal::String, :string
164
- rule /[^\n]/, Text
165
- end
166
-
167
- state :function do
168
- rule /\s+/, Text
169
-
170
154
  rule /:/ do
171
- token Punctuation
172
- push :comma_list
173
- end
174
-
175
- rule /\s*\(/ do
176
- token Punctuation
155
+ token Keyword
177
156
  pop!
178
157
  push :comma_list
179
158
  end
159
+
160
+ rule /[\s\n]/, Text, :pop!
180
161
  end
181
162
 
182
163
  state :procedure_call do
@@ -184,10 +165,14 @@ module Rouge
184
165
 
185
166
  rule /([\w.]+)(:|\s*\()/ do
186
167
  groups Name::Function, Punctuation
187
- push :comma_list
168
+ pop!
188
169
  end
189
170
 
190
- rule /([\w.]+)/, Name::Function, :old_arguments
171
+ rule /([\w.]+)/ do
172
+ token Name::Function
173
+ pop!
174
+ push :old_arguments
175
+ end
191
176
  end
192
177
 
193
178
  state :procedure_definition do
@@ -204,16 +189,28 @@ module Rouge
204
189
  end
205
190
  end
206
191
 
192
+ state :function_call do
193
+ rule /\b(#{functions_string.join('|')})\$(?=\s*[:(])/, Name::Function, :function
194
+ rule /\b(#{functions_array.join('|')})#(?=\s*[:(])/, Name::Function, :function
195
+ rule /\b(#{functions_numeric.join('|')})(?=\s*[:(])/, Name::Function, :function
196
+ end
197
+
198
+ state :function do
199
+ rule /\s+/, Text
200
+
201
+ rule /(?::|\s*\()/ do
202
+ token Text
203
+ pop!
204
+ push :comma_list
205
+ end
206
+ end
207
+
207
208
  state :comma_list do
208
209
  rule /(\s*\n\s*)(\.{3})/ do
209
210
  groups Text, Punctuation
210
211
  end
211
212
 
212
- rule /\s*(\)|\]|\n)/ do
213
- token Punctuation
214
- pop!
215
- pop! unless state? :root
216
- end
213
+ rule /\s*[\])\n]/, Text, :pop!
217
214
 
218
215
  rule /\s+/, Text
219
216
  rule /"/, Literal::String, :string
@@ -224,9 +221,21 @@ module Rouge
224
221
  mixin :operator
225
222
  mixin :number
226
223
 
224
+ rule /[()]/, Text
227
225
  rule /,/, Punctuation
228
226
  end
229
227
 
228
+ state :old_arguments do
229
+ rule /\n/, Text, :pop!
230
+
231
+ mixin :variable_name
232
+ mixin :operator
233
+ mixin :number
234
+
235
+ rule /"/, Literal::String, :string
236
+ rule /[^\n]/, Text
237
+ end
238
+
230
239
  state :number do
231
240
  rule /\n/, Text, :pop!
232
241
  rule /\b\d+(\.\d*)?([eE][-+]?\d+)?%?/, Literal::Number
@@ -237,43 +246,45 @@ module Rouge
237
246
  mixin :number
238
247
 
239
248
  rule /\b(?:#{variables_string.join('|')})\$/, Name::Builtin
240
- rule /\b(?:#{variables_numeric.join('|')})\b/, Name::Builtin
249
+ rule /\b(?:#{variables_numeric.join('|')})(?!\$)\b/, Name::Builtin
241
250
 
242
- rule /\b(Object|#{objects.join('|')})_\w+/, Name::Builtin, :object_attributes
243
-
244
- rule /\b((?:Object|#{objects.join('|')})_)(')/ do
245
- groups Name::Builtin, Literal::String::Interpol
246
- push :object_attributes
247
- push :string_interpolated
251
+ rule /\b(Object|#{objects.join('|')})_/ do
252
+ token Name::Builtin
253
+ push :object_reference
248
254
  end
249
255
 
250
256
  rule /\.?[a-z][a-zA-Z0-9_.]*(\$|#)?/, Text
251
- rule /[\[\]]/, Punctuation
252
- rule /'(?=.*')/, Literal::String::Interpol, :string_interpolated
257
+ rule /[\[\]]/, Text, :comma_list
258
+ mixin :string_interpolated
253
259
  end
254
260
 
255
- state :object_attributes do
256
- rule /\.?(n(col|row)|[xy]min|[xy]max|[nd][xy])\b/, Name::Builtin, :pop!
257
- rule /(\.?(?:col|row)\$)(\[)/ do
258
- groups Name::Builtin, Punctuation
259
- push :variable_name
260
- end
261
- rule /(\$?)(\[)/ do
262
- groups Name::Builtin, Punctuation
263
- push :comma_list
264
- end
261
+ state :object_reference do
262
+ mixin :string_interpolated
263
+ rule /([a-z][a-zA-Z0-9_]*|\d+)/, Name::Builtin
264
+
265
+ rule /\.(#{object_attributes.join('|')})\b/, Name::Builtin, :pop!
266
+
267
+ rule /\$/, Name::Builtin
268
+ rule /\[/, Text, :pop!
269
+ end
270
+
271
+ state :operator do
272
+ # This rule incorrectly matches === or +++++, which are not operators
273
+ rule /([+\/*<>=!-]=?|[&*|][&*|]?|\^|<>)/, Operator
274
+ rule /(?<![\w.])(and|or|not|div|mod)(?![\w.])/, Operator::Word
265
275
  end
266
276
 
267
277
  state :string_interpolated do
268
- rule /\.?[_a-z][a-zA-Z0-9_.]*(?:[\$#]?(?:\[[a-zA-Z0-9,]+\])?|:[0-9]+)?/, Literal::String::Interpol
269
- rule /'/, Literal::String::Interpol, :pop!
278
+ rule /'[\._a-z][^\[\]'":]*(\[([\d,]+|"[\w\d,]+")\])?(:[0-9]+)?'/, Literal::String::Interpol
270
279
  end
271
280
 
272
281
  state :string_unquoted do
273
282
  rule /\n\s*\.{3}/, Punctuation
274
283
  rule /\n/, Text, :pop!
275
284
  rule /\s/, Text
276
- rule /'(?=.*')/, Literal::String::Interpol, :string_interpolated
285
+
286
+ mixin :string_interpolated
287
+
277
288
  rule /'/, Literal::String
278
289
  rule /[^'\n]+/, Literal::String
279
290
  end
@@ -281,12 +292,18 @@ module Rouge
281
292
  state :string do
282
293
  rule /\n\s*\.{3}/, Punctuation
283
294
  rule /"/, Literal::String, :pop!
284
- rule /'(?=.*')/, Literal::String::Interpol, :string_interpolated
295
+
296
+ mixin :string_interpolated
297
+
285
298
  rule /'/, Literal::String
286
299
  rule /[^'"\n]+/, Literal::String
287
300
  end
288
301
 
289
302
  state :old_form do
303
+ rule /(\s+)(#.*?$)/ do
304
+ groups Text, Comment::Single
305
+ end
306
+
290
307
  rule /\s+/, Text
291
308
 
292
309
  rule /(optionmenu|choice)([ \t]+\S+:[ \t]+)/ do
@@ -294,11 +311,6 @@ module Rouge
294
311
  push :number
295
312
  end
296
313
 
297
- rule /(option|button)([ \t]+)/ do
298
- groups Keyword, Text
299
- push :number
300
- end
301
-
302
314
  rule /(option|button)([ \t]+)/ do
303
315
  groups Keyword, Text
304
316
  push :string_unquoted
@@ -310,7 +322,7 @@ module Rouge
310
322
  end
311
323
 
312
324
  rule /(word)([ \t]+\S+[ \t]*)(\S+)?([ \t]+.*)?/ do
313
- groups Keyword, Text, Literal::String, Generic::Error
325
+ groups Keyword, Text, Literal::String, Text
314
326
  end
315
327
 
316
328
  rule /(boolean)(\s+\S+\s*)(0|1|"?(?:yes|no)"?)/ do
@@ -330,11 +342,6 @@ module Rouge
330
342
  rule /\bendform\b/, Keyword, :pop!
331
343
  end
332
344
 
333
- state :operator do
334
- # This rule incorrectly matches === or +++++, which are not operators
335
- rule /([+\/*<>=!-]=?|[&*|][&*|]?|\^|<>)/, Operator
336
- rule /\b(and|or|not|div|mod)\b/, Operator::Word
337
- end
338
345
  end
339
346
  end
340
347
  end