rouge 3.28.0 → 3.29.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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -1
  3. data/lib/rouge/demos/brainfuck +1 -1
  4. data/lib/rouge/demos/brightscript +1 -1
  5. data/lib/rouge/demos/bsl +1 -1
  6. data/lib/rouge/demos/cfscript +1 -1
  7. data/lib/rouge/demos/coq +1 -1
  8. data/lib/rouge/demos/csvs +1 -1
  9. data/lib/rouge/demos/datastudio +0 -1
  10. data/lib/rouge/demos/ecl +0 -1
  11. data/lib/rouge/demos/erlang +1 -1
  12. data/lib/rouge/demos/fsharp +1 -1
  13. data/lib/rouge/demos/glsl +1 -1
  14. data/lib/rouge/demos/haxe +0 -1
  15. data/lib/rouge/demos/idris +13 -0
  16. data/lib/rouge/demos/lean +8 -0
  17. data/lib/rouge/demos/nesasm +1 -1
  18. data/lib/rouge/demos/opentype_feature_file +0 -1
  19. data/lib/rouge/demos/plsql +2 -0
  20. data/lib/rouge/demos/smarty +0 -1
  21. data/lib/rouge/demos/syzlang +15 -0
  22. data/lib/rouge/demos/syzprog +8 -0
  23. data/lib/rouge/formatters/html_inline.rb +0 -1
  24. data/lib/rouge/lexer.rb +2 -2
  25. data/lib/rouge/lexers/apache/keywords.rb +1 -1
  26. data/lib/rouge/lexers/docker.rb +4 -0
  27. data/lib/rouge/lexers/eiffel.rb +0 -1
  28. data/lib/rouge/lexers/gherkin/keywords.rb +1 -1
  29. data/lib/rouge/lexers/handlebars.rb +1 -1
  30. data/lib/rouge/lexers/hylang.rb +0 -1
  31. data/lib/rouge/lexers/idris.rb +210 -0
  32. data/lib/rouge/lexers/jsx.rb +0 -1
  33. data/lib/rouge/lexers/lasso/keywords.rb +1 -1
  34. data/lib/rouge/lexers/lean.rb +164 -0
  35. data/lib/rouge/lexers/llvm/keywords.rb +1 -1
  36. data/lib/rouge/lexers/lua/keywords.rb +1 -1
  37. data/lib/rouge/lexers/mathematica/keywords.rb +1 -1
  38. data/lib/rouge/lexers/matlab/keywords.rb +1 -1
  39. data/lib/rouge/lexers/matlab.rb +3 -2
  40. data/lib/rouge/lexers/ocl.rb +0 -1
  41. data/lib/rouge/lexers/php/keywords.rb +1 -1
  42. data/lib/rouge/lexers/plsql.rb +578 -0
  43. data/lib/rouge/lexers/prometheus.rb +0 -1
  44. data/lib/rouge/lexers/python.rb +3 -1
  45. data/lib/rouge/lexers/q.rb +0 -1
  46. data/lib/rouge/lexers/sqf/keywords.rb +1 -1
  47. data/lib/rouge/lexers/supercollider.rb +0 -1
  48. data/lib/rouge/lexers/syzlang.rb +317 -0
  49. data/lib/rouge/lexers/syzprog.rb +122 -0
  50. data/lib/rouge/lexers/tap.rb +0 -1
  51. data/lib/rouge/lexers/tsx.rb +0 -1
  52. data/lib/rouge/lexers/tulip.rb +0 -1
  53. data/lib/rouge/lexers/viml/keywords.rb +1 -1
  54. data/lib/rouge/version.rb +1 -1
  55. metadata +16 -6
@@ -0,0 +1,317 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Syzlang < RegexLexer
7
+ title "Syzlang"
8
+ desc "Syscall description language used by syzkaller"
9
+ tag 'syzlang'
10
+
11
+ def self.keywords
12
+ @keywords ||= Set.new %w(
13
+ align breaks_returns dec define disabled hex ignore_return in incdir
14
+ include inet inout oct opt out packed parent prog_timeout pseudo
15
+ resource size syscall timeout type varlen
16
+ )
17
+ end
18
+
19
+ def self.keywords_type
20
+ @keywords_type ||= Set.new %w(
21
+ array bitsize bool16 bool32 bool64 bool8 boolptr buffer bytesize
22
+ bytesize2 bytesize4 bytesize8 const csum filename fileoff flags fmt
23
+ int16 int16be int32 int32be int64 int64be int8 int8be intptr len
24
+ offsetof optional proc ptr ptr64 string stringnoz text vma vma64 void
25
+ )
26
+ end
27
+
28
+ comment = /#.*$/
29
+ inline_spaces = /[ \t]+/
30
+ eol_spaces = /[\n\r]+/
31
+ spaces = /\s+/
32
+
33
+ state :inline_break do
34
+ rule inline_spaces, Text
35
+ rule %r//, Text, :pop!
36
+ end
37
+
38
+ state :space_break do
39
+ rule spaces, Text
40
+ rule comment, Comment
41
+ rule %r//, Text, :pop!
42
+ end
43
+
44
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
45
+ num_id = /[a-zA-Z0-9_]+/
46
+
47
+ state :mixin_name do
48
+ rule id, Name
49
+ end
50
+
51
+ state :mixin_number do
52
+ rule %r/-?0x[\da-f]+/i, Num::Hex
53
+ rule %r/-?\d+/, Num::Integer
54
+ rule %r/'[^']?'/, Str::Char
55
+ end
56
+
57
+ state :mixin_string do
58
+ rule %r/"[^"]*"/, Str::Double
59
+ rule %r/`[^`]*`/, Str::Backtick
60
+ end
61
+
62
+ state :mixin_term do
63
+ mixin :mixin_number
64
+ mixin :mixin_string
65
+
66
+ # Keywords.
67
+ rule id do |m|
68
+ if self.class.keywords.include?(m[0])
69
+ token Keyword
70
+ elsif self.class.keywords_type.include?(m[0])
71
+ token Keyword::Type
72
+ else
73
+ token Name
74
+ end
75
+ end
76
+
77
+ # Ranges.
78
+ rule %r/:/, Punctuation
79
+
80
+ # "struct$type" struct name format.
81
+ rule %r/\$/, Name
82
+ end
83
+
84
+ state :term_list do
85
+ rule spaces, Text
86
+ rule comment, Comment
87
+ mixin :mixin_term
88
+ rule %r/\[/, Punctuation, :term_list
89
+ rule %r/,/, Punctuation
90
+ rule %r/[\]\)]/, Punctuation, :pop!
91
+ end
92
+
93
+ state :arg_type do
94
+ mixin :mixin_term
95
+ rule %r/\[/, Punctuation, :term_list
96
+ rule %r//, Text, :pop!
97
+ end
98
+
99
+ state :include do
100
+ rule %r/(<)([^>]+)(>)/ do |m|
101
+ groups Punctuation, Str, Punctuation
102
+ end
103
+ rule %r//, Text, :pop!
104
+ end
105
+
106
+ state :define_name do
107
+ mixin :mixin_name
108
+ rule %r//, Text, :pop!
109
+ end
110
+
111
+ state :define_exp do
112
+ mixin :mixin_name
113
+ mixin :mixin_number
114
+ mixin :mixin_string
115
+ rule %r/[~!%\^&\*\-\+\/\|<>\?:]/, Operator
116
+ rule %r/[\(\){}\[\];,]/, Punctuation
117
+ rule inline_spaces, Text
118
+ rule %r//, Text, :pop!
119
+ end
120
+
121
+ state :resource_name do
122
+ mixin :mixin_name
123
+ rule %r//, Text, :pop!
124
+ end
125
+
126
+ state :resource_type do
127
+ rule %r/\[/, Punctuation, :arg_type
128
+ rule %r/\]/, Punctuation, :pop!
129
+ end
130
+
131
+ state :resource_values do
132
+ rule %r/:/ do
133
+ token Punctuation
134
+ push :resource_values_list
135
+ push :space_break
136
+ end
137
+ rule %r//, Text, :pop!
138
+ end
139
+
140
+ state :resource_values_list do
141
+ rule inline_spaces, Text
142
+ mixin :mixin_name
143
+ mixin :mixin_number
144
+ mixin :mixin_string
145
+ rule %r/,/, Punctuation, :space_break
146
+ rule %r//, Text, :pop!
147
+ end
148
+
149
+ state :flags_list do
150
+ rule inline_spaces, Text
151
+ rule %r/\./, Punctuation
152
+ mixin :mixin_name
153
+ mixin :mixin_number
154
+ mixin :mixin_string
155
+ rule %r/,/, Punctuation, :space_break
156
+ rule %r//, Punctuation, :pop!
157
+ end
158
+
159
+ state :syscall_args do
160
+ rule spaces, Text
161
+ rule comment, Comment
162
+ rule %r/\./, Punctuation
163
+ rule id do
164
+ token Name
165
+ push :arg_type
166
+ push :space_break
167
+ end
168
+ rule %r/,/, Punctuation
169
+ rule %r/\)/, Punctuation, :pop!
170
+ end
171
+
172
+ state :syscall_retval do
173
+ mixin :mixin_name
174
+ rule %r//, Text, :pop!
175
+ end
176
+
177
+ state :syscall_mods do
178
+ rule %r/\(/, Punctuation, :term_list
179
+ rule %r//, Text, :pop!
180
+ end
181
+
182
+ state :struct_fields do
183
+ rule id do
184
+ token Name
185
+ push :space_break
186
+ push :struct_field_mods
187
+ push :inline_break
188
+ push :arg_type
189
+ push :space_break
190
+ end
191
+ rule %r/[}\]]/, Punctuation, :pop!
192
+ end
193
+
194
+ state :struct_field_mods do
195
+ rule %r/\(/, Punctuation, :term_list
196
+ rule %r//, Text, :pop!
197
+ end
198
+
199
+ state :struct_mods do
200
+ rule %r/\[/, Punctuation, :term_list
201
+ rule %r//, Text, :pop!
202
+ end
203
+
204
+ state :type_name do
205
+ mixin :mixin_name
206
+ rule %r//, Text, :pop!
207
+ end
208
+
209
+ state :type_args do
210
+ rule %r/\[/, Punctuation, :type_args_list
211
+ rule %r//, Text, :pop!
212
+ end
213
+
214
+ state :type_args_list do
215
+ rule spaces, Text
216
+ rule comment, Comment
217
+ mixin :mixin_name
218
+ rule %r/,/, Punctuation
219
+ rule %r/\]/, Punctuation, :pop!
220
+ end
221
+
222
+ state :type_body do
223
+ rule %r/[{\[]/ do
224
+ token Punctuation
225
+ pop!
226
+ push :space_break
227
+ push :struct_mods
228
+ push :inline_break
229
+ push :struct_fields
230
+ push :space_break
231
+ end
232
+ rule %r// do
233
+ pop!
234
+ push :arg_type
235
+ end
236
+ end
237
+
238
+ state :root do
239
+ # Whitespace.
240
+ rule spaces, Text
241
+
242
+ # Comments.
243
+ rule comment, Comment
244
+
245
+ # Includes.
246
+ rule %r/(include|incdir)/ do
247
+ token Keyword
248
+ push :include
249
+ push :space_break
250
+ end
251
+
252
+ # Defines.
253
+ rule %r/define/ do
254
+ token Keyword
255
+ push :define_exp
256
+ push :space_break
257
+ push :define_name
258
+ push :space_break
259
+ end
260
+
261
+ # Resources.
262
+ rule %r/resource/ do
263
+ token Keyword
264
+ push :resource_values
265
+ push :inline_break
266
+ push :resource_type
267
+ push :inline_break
268
+ push :resource_name
269
+ push :space_break
270
+ end
271
+
272
+ # Flags and strings.
273
+ rule %r/(#{id}|_)(#{spaces})(=)/ do |m|
274
+ if m[1] == "_"
275
+ groups Keyword, Text, Punctuation
276
+ else
277
+ groups Name, Text, Punctuation
278
+ end
279
+ push :flags_list
280
+ push :space_break
281
+ end
282
+
283
+ # Syscalls.
284
+ rule %r/(#{id})(\$)?(#{num_id})?(#{spaces})?(\()/ do |m|
285
+ groups Name::Function, Punctuation, Name::Function::Magic, Text, Punctuation
286
+ push :syscall_mods
287
+ push :inline_break
288
+ push :syscall_retval
289
+ push :inline_break
290
+ push :syscall_args
291
+ push :space_break
292
+ end
293
+
294
+ # Structs and unions.
295
+ rule %r/(#{id}|#{id}\$#{num_id})(#{spaces})?([{\[])/ do |m|
296
+ groups Name, Text, Punctuation
297
+ push :inline_break
298
+ push :struct_mods
299
+ push :inline_break
300
+ push :struct_fields
301
+ push :space_break
302
+ end
303
+
304
+ # Types.
305
+ rule %r/type/ do
306
+ token Keyword
307
+ push :type_body
308
+ push :space_break
309
+ push :type_args
310
+ push :type_name
311
+ push :space_break
312
+ end
313
+ end
314
+
315
+ end
316
+ end
317
+ end
@@ -0,0 +1,122 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Syzprog < RegexLexer
7
+ title "Syzprog"
8
+ desc "Program description language used by syzkaller"
9
+ tag 'syzprog'
10
+
11
+ def self.keywords
12
+ @keywords ||= Set.new %w(
13
+ ANY ANYBLOB ANYPTR ANYPTR64 ANYPTRS ANYRES16 ANYRES32 ANYRES64
14
+ ANYRESDEC ANYRESHEX ANYRESOCT ANYUNION AUTO false nil true void
15
+ async fail_nth rerun
16
+ )
17
+ end
18
+
19
+ comment = /#.*$/
20
+ inline_spaces = /[ \t]+/
21
+ eol_spaces = /[\n\r]+/
22
+ spaces = /\s+/
23
+
24
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
25
+ num_id = /[a-zA-Z0-9_]+/
26
+ res_id = /r[0-9]+/
27
+
28
+ state :inline_break do
29
+ rule inline_spaces, Text
30
+ rule %r//, Text, :pop!
31
+ end
32
+
33
+ state :eol_break do
34
+ rule eol_spaces, Text
35
+ rule comment, Comment
36
+ rule %r//, Text, :pop!
37
+ end
38
+
39
+ state :space_break do
40
+ rule spaces, Text
41
+ rule comment, Comment
42
+ rule %r//, Text, :pop!
43
+ end
44
+
45
+ state :mixin_number do
46
+ rule %r/-?0x[\da-f]+/i, Num::Hex
47
+ rule %r/-?\d+/, Num::Integer
48
+ end
49
+
50
+ state :mixin_string do
51
+ rule %r/"[^"]*"/, Str::Double
52
+ rule %r/`[^`]*`/, Str::Backtick
53
+ rule %r/'[^']*'/, Str::Single
54
+ end
55
+
56
+ state :mixin_term do
57
+ mixin :mixin_number
58
+ mixin :mixin_string
59
+
60
+ rule %r/#{res_id}/, Keyword::Pseudo
61
+ rule id do |m|
62
+ if self.class.keywords.include?(m[0])
63
+ token Keyword
64
+ else
65
+ token Name
66
+ end
67
+ end
68
+ end
69
+
70
+ state :mods_list do
71
+ rule spaces, Text
72
+ rule comment, Comment
73
+ mixin :mixin_term
74
+ rule %r/[,:]/, Punctuation
75
+ rule %r/\)/, Punctuation, :pop!
76
+ end
77
+
78
+ state :syscall_mods do
79
+ rule %r/\(/, Punctuation, :mods_list
80
+ rule %r//, Text, :pop!
81
+ end
82
+
83
+ state :syscall_args do
84
+ rule spaces, Text
85
+ rule comment, Comment
86
+ mixin :mixin_term
87
+ mixin :mixin_number
88
+ mixin :mixin_string
89
+ # This punctuation is a part of the syntax:
90
+ rule %r/[@&=,<>{}\[\]]/, Punctuation
91
+ # This punctuation is not, highlight just in case:
92
+ rule %r/[!#\$%\^\*\-\+\/\|~:;.\?]/, Punctuation
93
+ rule %r/\(/, Punctuation, :syscall_args
94
+ rule %r/\)/, Punctuation, :pop!
95
+ end
96
+
97
+ state :root do
98
+ # Whitespace.
99
+ rule spaces, Text
100
+
101
+ # Comments.
102
+ rule comment, Comment
103
+
104
+ # Return values.
105
+ rule %r/(#{res_id})(#{spaces})(=)/ do
106
+ groups Keyword::Pseudo, Text, Punctuation
107
+ end
108
+
109
+ # Syscalls.
110
+ rule %r/(#{id})(\$)?(#{num_id})?(#{spaces})?(\()/ do |m|
111
+ groups Name::Function, Punctuation, Name::Function::Magic, Text, Punctuation
112
+ push :syscall_mods
113
+ push :inline_break
114
+ push :syscall_args
115
+ push :space_break
116
+ end
117
+
118
+ end
119
+
120
+ end
121
+ end
122
+ end
@@ -86,4 +86,3 @@ module Rouge
86
86
  end
87
87
  end
88
88
  end
89
-
@@ -24,4 +24,3 @@ module Rouge
24
24
  end
25
25
  end
26
26
  end
27
-
@@ -105,4 +105,3 @@ module Rouge
105
105
  end
106
106
  end
107
107
  end
108
-
@@ -18,4 +18,4 @@ module Rouge
18
18
  end
19
19
  end
20
20
  end
21
- end
21
+ end
data/lib/rouge/version.rb CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  module Rouge
5
5
  def self.version
6
- "3.28.0"
6
+ "3.29.0"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rouge
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.28.0
4
+ version: 3.29.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeanine Adkisson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-03 00:00:00.000000000 Z
11
+ date: 2022-06-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
14
14
  email:
@@ -106,6 +106,7 @@ files:
106
106
  - lib/rouge/demos/http
107
107
  - lib/rouge/demos/hylang
108
108
  - lib/rouge/demos/idlang
109
+ - lib/rouge/demos/idris
109
110
  - lib/rouge/demos/igorpro
110
111
  - lib/rouge/demos/ini
111
112
  - lib/rouge/demos/io
@@ -126,6 +127,7 @@ files:
126
127
  - lib/rouge/demos/julia
127
128
  - lib/rouge/demos/kotlin
128
129
  - lib/rouge/demos/lasso
130
+ - lib/rouge/demos/lean
129
131
  - lib/rouge/demos/liquid
130
132
  - lib/rouge/demos/literate_coffeescript
131
133
  - lib/rouge/demos/literate_haskell
@@ -162,6 +164,7 @@ files:
162
164
  - lib/rouge/demos/php
163
165
  - lib/rouge/demos/plaintext
164
166
  - lib/rouge/demos/plist
167
+ - lib/rouge/demos/plsql
165
168
  - lib/rouge/demos/pony
166
169
  - lib/rouge/demos/postscript
167
170
  - lib/rouge/demos/powershell
@@ -205,6 +208,8 @@ files:
205
208
  - lib/rouge/demos/supercollider
206
209
  - lib/rouge/demos/swift
207
210
  - lib/rouge/demos/systemd
211
+ - lib/rouge/demos/syzlang
212
+ - lib/rouge/demos/syzprog
208
213
  - lib/rouge/demos/tap
209
214
  - lib/rouge/demos/tcl
210
215
  - lib/rouge/demos/terraform
@@ -339,6 +344,7 @@ files:
339
344
  - lib/rouge/lexers/http.rb
340
345
  - lib/rouge/lexers/hylang.rb
341
346
  - lib/rouge/lexers/idlang.rb
347
+ - lib/rouge/lexers/idris.rb
342
348
  - lib/rouge/lexers/igorpro.rb
343
349
  - lib/rouge/lexers/ini.rb
344
350
  - lib/rouge/lexers/io.rb
@@ -360,6 +366,7 @@ files:
360
366
  - lib/rouge/lexers/kotlin.rb
361
367
  - lib/rouge/lexers/lasso.rb
362
368
  - lib/rouge/lexers/lasso/keywords.rb
369
+ - lib/rouge/lexers/lean.rb
363
370
  - lib/rouge/lexers/liquid.rb
364
371
  - lib/rouge/lexers/literate_coffeescript.rb
365
372
  - lib/rouge/lexers/literate_haskell.rb
@@ -404,6 +411,7 @@ files:
404
411
  - lib/rouge/lexers/php/keywords.rb
405
412
  - lib/rouge/lexers/plain_text.rb
406
413
  - lib/rouge/lexers/plist.rb
414
+ - lib/rouge/lexers/plsql.rb
407
415
  - lib/rouge/lexers/pony.rb
408
416
  - lib/rouge/lexers/postscript.rb
409
417
  - lib/rouge/lexers/powershell.rb
@@ -449,6 +457,8 @@ files:
449
457
  - lib/rouge/lexers/supercollider.rb
450
458
  - lib/rouge/lexers/swift.rb
451
459
  - lib/rouge/lexers/systemd.rb
460
+ - lib/rouge/lexers/syzlang.rb
461
+ - lib/rouge/lexers/syzprog.rb
452
462
  - lib/rouge/lexers/tap.rb
453
463
  - lib/rouge/lexers/tcl.rb
454
464
  - lib/rouge/lexers/terraform.rb
@@ -510,7 +520,7 @@ metadata:
510
520
  changelog_uri: https://github.com/rouge-ruby/rouge/blob/master/CHANGELOG.md
511
521
  documentation_uri: https://rouge-ruby.github.io/docs/
512
522
  source_code_uri: https://github.com/rouge-ruby/rouge
513
- post_install_message:
523
+ post_install_message:
514
524
  rdoc_options: []
515
525
  require_paths:
516
526
  - lib
@@ -525,8 +535,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
525
535
  - !ruby/object:Gem::Version
526
536
  version: '0'
527
537
  requirements: []
528
- rubygems_version: 3.2.22
529
- signing_key:
538
+ rubygems_version: 3.1.6
539
+ signing_key:
530
540
  specification_version: 4
531
541
  summary: A pure-ruby colorizer based on pygments
532
542
  test_files: []