rouge 3.9.0 → 3.13.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rouge/demos/apex +9 -0
  3. data/lib/rouge/demos/clean +6 -0
  4. data/lib/rouge/demos/csvs +8 -0
  5. data/lib/rouge/demos/jsl +3 -0
  6. data/lib/rouge/demos/liquid +0 -1
  7. data/lib/rouge/demos/lustre +6 -0
  8. data/lib/rouge/demos/lutin +18 -0
  9. data/lib/rouge/demos/minizinc +23 -0
  10. data/lib/rouge/demos/q +6 -0
  11. data/lib/rouge/demos/robot_framework +27 -0
  12. data/lib/rouge/demos/sparql +6 -0
  13. data/lib/rouge/demos/ttcn3 +6 -0
  14. data/lib/rouge/guessers/disambiguation.rb +5 -0
  15. data/lib/rouge/lexer.rb +3 -0
  16. data/lib/rouge/lexers/apex.rb +126 -0
  17. data/lib/rouge/lexers/bpf.rb +20 -6
  18. data/lib/rouge/lexers/clean.rb +156 -0
  19. data/lib/rouge/lexers/common_lisp.rb +1 -1
  20. data/lib/rouge/lexers/coq.rb +12 -9
  21. data/lib/rouge/lexers/csvs.rb +44 -0
  22. data/lib/rouge/lexers/eex.rb +2 -1
  23. data/lib/rouge/lexers/http.rb +1 -1
  24. data/lib/rouge/lexers/jsl.rb +55 -0
  25. data/lib/rouge/lexers/json.rb +1 -1
  26. data/lib/rouge/lexers/kotlin.rb +21 -28
  27. data/lib/rouge/lexers/liquid.rb +82 -108
  28. data/lib/rouge/lexers/lustre.rb +79 -0
  29. data/lib/rouge/lexers/lutin.rb +33 -0
  30. data/lib/rouge/lexers/markdown.rb +7 -1
  31. data/lib/rouge/lexers/mason.rb +0 -5
  32. data/lib/rouge/lexers/minizinc.rb +87 -0
  33. data/lib/rouge/lexers/perl.rb +1 -1
  34. data/lib/rouge/lexers/q.rb +2 -1
  35. data/lib/rouge/lexers/robot_framework.rb +249 -0
  36. data/lib/rouge/lexers/shell.rb +5 -3
  37. data/lib/rouge/lexers/sparql.rb +129 -0
  38. data/lib/rouge/lexers/swift.rb +1 -1
  39. data/lib/rouge/lexers/ttcn3.rb +119 -0
  40. data/lib/rouge/plugins/redcarpet.rb +7 -1
  41. data/lib/rouge/version.rb +1 -1
  42. metadata +22 -2
@@ -9,10 +9,12 @@ module Rouge
9
9
 
10
10
  tag 'shell'
11
11
  aliases 'bash', 'zsh', 'ksh', 'sh'
12
- filenames '*.sh', '*.bash', '*.zsh', '*.ksh',
13
- '.bashrc', '.zshrc', '.kshrc', '.profile', 'APKBUILD', 'PKGBUILD'
12
+ filenames '*.sh', '*.bash', '*.zsh', '*.ksh', '.bashrc', '.zshrc',
13
+ '.kshrc', '.profile', 'APKBUILD', 'PKGBUILD', '*.ebuild',
14
+ '*.eclass', '*.exheres-0', '*.exlib'
14
15
 
15
- mimetypes 'application/x-sh', 'application/x-shellscript'
16
+ mimetypes 'application/x-sh', 'application/x-shellscript', 'text/x-sh',
17
+ 'text/x-shellscript'
16
18
 
17
19
  def self.detect?(text)
18
20
  return true if text.shebang?(/(ba|z|k)?sh/)
@@ -0,0 +1,129 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class SPARQL < RegexLexer
7
+ title "SPARQL"
8
+ desc "Semantic Query Language, for RDF data"
9
+ tag 'sparql'
10
+ filenames '*.rq'
11
+ mimetypes 'application/sparql-query'
12
+
13
+ def self.builtins
14
+ @builtins = Set.new %w[
15
+ ABS AVG BNODE BOUND CEIL COALESCE CONCAT CONTAINS COUNT DATATYPE DAY
16
+ ENCODE_FOR_URI FLOOR GROUP_CONCAT HOURS IF IRI isBLANK isIRI
17
+ isLITERAL isNUMERIC isURI LANG LANGMATCHES LCASE MAX MD5 MIN MINUTES
18
+ MONTH NOW RAND REGEX REPLACE ROUND SAMETERM SAMPLE SECONDS SEPARATOR
19
+ SHA1 SHA256 SHA384 SHA512 STR STRAFTER STRBEFORE STRDT STRENDS
20
+ STRLANG STRLEN STRSTARTS STRUUID SUBSTR SUM TIMEZONE TZ UCASE URI
21
+ UUID YEAR
22
+ ]
23
+ end
24
+
25
+ def self.keywords
26
+ @keywords = Set.new %w[
27
+ ADD ALL AS ASC ASK BASE BIND BINDINGS BY CLEAR CONSTRUCT COPY CREATE
28
+ DATA DEFAULT DELETE DESC DESCRIBE DISTINCT DROP EXISTS FILTER FROM
29
+ GRAPH GROUP BY HAVING IN INSERT LIMIT LOAD MINUS MOVE NAMED NOT
30
+ OFFSET OPTIONAL ORDER PREFIX SELECT REDUCED SERVICE SILENT TO UNDEF
31
+ UNION USING VALUES WHERE WITH
32
+ ]
33
+ end
34
+
35
+ state :root do
36
+ rule %r(\s+)m, Text::Whitespace
37
+ rule %r(#.*), Comment::Single
38
+
39
+ rule %r("""), Str::Double, :string_double_literal
40
+ rule %r("), Str::Double, :string_double
41
+ rule %r('''), Str::Single, :string_single_literal
42
+ rule %r('), Str::Single, :string_single
43
+
44
+ rule %r([$?]\w+), Name::Variable
45
+ rule %r((\w*:)(\w+)?) do |m|
46
+ token Name::Namespace, m[1]
47
+ token Str::Symbol, m[2]
48
+ end
49
+ rule %r(<[^>]*>), Name::Namespace
50
+ rule %r(true|false)i, Keyword::Constant
51
+
52
+ rule %r([A-Z]\w+\b)i do |m|
53
+ if self.class.builtins.include? m[0].upcase
54
+ token Name::Builtin
55
+ elsif self.class.keywords.include? m[0].upcase
56
+ token Keyword
57
+ else
58
+ token Error
59
+ end
60
+ end
61
+
62
+ rule %r([+\-]?(?:\d+\.\d*|\.\d+)(?:[e][+\-]?[0-9]+)?)i, Num::Float
63
+ rule %r([+\-]?\d+), Num::Integer
64
+ rule %r([\]\[(){}.,;=]), Punctuation
65
+ rule %r([/?*+=!<>]|&&|\|\||\^\^), Operator
66
+ end
67
+
68
+ state :string_double_common do
69
+ mixin :string_escapes
70
+ rule %r(\\), Str::Double
71
+ rule %r([^"\\]+), Str::Double
72
+ end
73
+
74
+ state :string_double do
75
+ rule %r(") do
76
+ token Str::Double
77
+ goto :string_end
78
+ end
79
+ mixin :string_double_common
80
+ end
81
+
82
+ state :string_double_literal do
83
+ rule %r(""") do
84
+ token Str::Double
85
+ goto :string_end
86
+ end
87
+ rule %r("), Str::Double
88
+ mixin :string_double_common
89
+ end
90
+
91
+ state :string_single_common do
92
+ mixin :string_escapes
93
+ rule %r(\\), Str::Single
94
+ rule %r([^'\\]+), Str::Single
95
+ end
96
+
97
+ state :string_single do
98
+ rule %r(') do
99
+ token Str::Single
100
+ goto :string_end
101
+ end
102
+ mixin :string_single_common
103
+ end
104
+
105
+ state :string_single_literal do
106
+ rule %r(''') do
107
+ token Str::Single
108
+ goto :string_end
109
+ end
110
+ rule %r('), Str::Single
111
+ mixin :string_single_common
112
+ end
113
+
114
+ state :string_escapes do
115
+ rule %r(\\[tbnrf"'\\]), Str::Escape
116
+ rule %r(\\u\h{4}), Str::Escape
117
+ rule %r(\\U\h{8}), Str::Escape
118
+ end
119
+
120
+ state :string_end do
121
+ rule %r((@)([a-zA-Z]+(?:-[a-zA-Z0-9]+)*)) do
122
+ groups Operator, Name::Property
123
+ end
124
+ rule %r(\^\^), Operator
125
+ rule(//) { pop! }
126
+ end
127
+ end
128
+ end
129
+ end
@@ -80,7 +80,7 @@ module Rouge
80
80
  rule %r/0b[01]+(?:_[01]+)*/, Num::Bin
81
81
  rule %r{[\d]+(?:_\d+)*}, Num::Integer
82
82
 
83
- rule %r/@#{id}(\([^)]+\))?/, Keyword::Declaration
83
+ rule %r/@#{id}/, Keyword::Declaration
84
84
 
85
85
  rule %r/(private|internal)(\([ ]*)(\w+)([ ]*\))/ do |m|
86
86
  if m[3] == 'set'
@@ -0,0 +1,119 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class TTCN3 < RegexLexer
7
+ title "TTCN3"
8
+ desc "The TTCN3 programming language (ttcn-3.org)"
9
+
10
+ tag 'ttcn3'
11
+ filenames '*.ttcn', '*.ttcn3'
12
+ mimetypes 'text/x-ttcn3', 'text/x-ttcn'
13
+
14
+ def self.keywords
15
+ @keywords ||= %w(
16
+ module import group type port component signature external
17
+ execute const template function altstep testcase var timer if
18
+ else select case for while do label goto start stop return
19
+ break int2char int2unichar int2bit int2enum int2hex int2oct
20
+ int2str int2float float2int char2int char2oct unichar2int
21
+ unichar2oct bit2int bit2hex bit2oct bit2str hex2int hex2bit
22
+ hex2oct hex2str oct2int oct2bit oct2hex oct2str oct2char
23
+ oct2unichar str2int str2hex str2oct str2float enum2int
24
+ any2unistr lengthof sizeof ispresent ischosen isvalue isbound
25
+ istemplatekind regexp substr replace encvalue decvalue
26
+ encvalue_unichar decvalue_unichar encvalue_o decvalue_o
27
+ get_stringencoding remove_bom rnd hostid send receive
28
+ setverdict
29
+ )
30
+ end
31
+
32
+ def self.reserved
33
+ @reserved ||= %w(
34
+ all alt apply assert at configuration conjunct const control
35
+ delta deterministic disjunct duration fail finished fuzzy from
36
+ history implies inconc inv lazy mod mode notinv now omit
37
+ onentry onexit par pass prev realtime seq setstate static
38
+ stepsize stream timestamp until values wait
39
+ )
40
+ end
41
+
42
+ def self.types
43
+ @types ||= %w(
44
+ anytype address boolean bitstring charstring hexstring octetstring
45
+ component enumerated float integer port record set of union universal
46
+ )
47
+ end
48
+
49
+ # optional comment or whitespace
50
+ ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
51
+ id = /[a-zA-Z_]\w*/
52
+ digit = /\d_+\d|\d/
53
+ bin_digit = /[01]_+[01]|[01]/
54
+ oct_digit = /[0-7]_+[0-7]|[0-7]/
55
+ hex_digit = /\h_+\h|\h/
56
+
57
+ state :statements do
58
+ rule %r/\n+/m, Text
59
+ rule %r/[ \t\r]+/, Text
60
+ rule %r/\\\n/, Text # line continuation
61
+
62
+ rule %r(//(\\.|.)*?$), Comment::Single
63
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
64
+
65
+ rule %r/"/, Str, :string
66
+ rule %r/'(?:\\.|[^\\]|\\u[0-9a-f]{4})'/, Str::Char
67
+
68
+ rule %r/#{digit}+\.#{digit}+([eE]#{digit}+)?[fd]?/i, Num::Float
69
+ rule %r/'#{bin_digit}+'B/i, Num::Bin
70
+ rule %r/'#{hex_digit}+'H/i, Num::Hex
71
+ rule %r/'#{oct_digit}+'O/i, Num::Oct
72
+ rule %r/#{digit}+/i, Num::Integer
73
+
74
+ rule %r([~!%^&*+:=\|?<>/-]), Operator
75
+ rule %r/[()\[\]{},.;:]/, Punctuation
76
+
77
+ rule %r/(?:true|false|null)\b/, Name::Builtin
78
+
79
+ rule id do |m|
80
+ name = m[0]
81
+ if self.class.keywords.include? name
82
+ token Keyword
83
+ elsif self.class.types.include? name
84
+ token Keyword::Type
85
+ elsif self.class.reserved.include? name
86
+ token Keyword::Reserved
87
+ else
88
+ token Name
89
+ end
90
+ end
91
+ end
92
+
93
+ state :root do
94
+ rule %r/module\b/, Keyword::Declaration, :module
95
+ rule %r/import\b/, Keyword::Namespace, :import
96
+
97
+ mixin :statements
98
+ end
99
+
100
+ state :string do
101
+ rule %r/"/, Str, :pop!
102
+ rule %r/\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
103
+ rule %r/[^\\"\n]+/, Str
104
+ rule %r/\\\n/, Str
105
+ rule %r/\\/, Str # stray backslash
106
+ end
107
+
108
+ state :module do
109
+ rule %r/\s+/m, Text
110
+ rule id, Name::Class, :pop!
111
+ end
112
+
113
+ state :import do
114
+ rule %r/\s+/m, Text
115
+ rule %r/[\w.]+\*?/, Name::Namespace, :pop!
116
+ end
117
+ end
118
+ end
119
+ end
@@ -9,7 +9,13 @@ module Rouge
9
9
  module Plugins
10
10
  module Redcarpet
11
11
  def block_code(code, language)
12
- lexer = Lexer.find_fancy(language, code) || Lexers::PlainText
12
+ lexer =
13
+ begin
14
+ Lexer.find_fancy(language, code)
15
+ rescue Guesser::Ambiguous => e
16
+ e.alternatives.first
17
+ end
18
+ lexer ||= Lexers::PlainText
13
19
 
14
20
  # XXX HACK: Redcarpet strips hard tabs out of code blocks,
15
21
  # so we assume you're not using leading spaces that aren't tabs,
@@ -3,6 +3,6 @@
3
3
 
4
4
  module Rouge
5
5
  def self.version
6
- "3.9.0"
6
+ "3.13.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.9.0
4
+ version: 3.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeanine Adkisson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-20 00:00:00.000000000 Z
11
+ date: 2019-11-12 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:
@@ -27,6 +27,7 @@ files:
27
27
  - lib/rouge/demos/actionscript
28
28
  - lib/rouge/demos/ada
29
29
  - lib/rouge/demos/apache
30
+ - lib/rouge/demos/apex
30
31
  - lib/rouge/demos/apiblueprint
31
32
  - lib/rouge/demos/applescript
32
33
  - lib/rouge/demos/armasm
@@ -40,6 +41,7 @@ files:
40
41
  - lib/rouge/demos/c
41
42
  - lib/rouge/demos/ceylon
42
43
  - lib/rouge/demos/cfscript
44
+ - lib/rouge/demos/clean
43
45
  - lib/rouge/demos/clojure
44
46
  - lib/rouge/demos/cmake
45
47
  - lib/rouge/demos/cmhg
@@ -52,6 +54,7 @@ files:
52
54
  - lib/rouge/demos/crystal
53
55
  - lib/rouge/demos/csharp
54
56
  - lib/rouge/demos/css
57
+ - lib/rouge/demos/csvs
55
58
  - lib/rouge/demos/cuda
56
59
  - lib/rouge/demos/cython
57
60
  - lib/rouge/demos/d
@@ -98,6 +101,7 @@ files:
98
101
  - lib/rouge/demos/java
99
102
  - lib/rouge/demos/javascript
100
103
  - lib/rouge/demos/jinja
104
+ - lib/rouge/demos/jsl
101
105
  - lib/rouge/demos/json
102
106
  - lib/rouge/demos/json-doc
103
107
  - lib/rouge/demos/jsonnet
@@ -111,6 +115,8 @@ files:
111
115
  - lib/rouge/demos/literate_haskell
112
116
  - lib/rouge/demos/llvm
113
117
  - lib/rouge/demos/lua
118
+ - lib/rouge/demos/lustre
119
+ - lib/rouge/demos/lutin
114
120
  - lib/rouge/demos/m68k
115
121
  - lib/rouge/demos/magik
116
122
  - lib/rouge/demos/make
@@ -118,6 +124,7 @@ files:
118
124
  - lib/rouge/demos/mason
119
125
  - lib/rouge/demos/mathematica
120
126
  - lib/rouge/demos/matlab
127
+ - lib/rouge/demos/minizinc
121
128
  - lib/rouge/demos/moonscript
122
129
  - lib/rouge/demos/mosel
123
130
  - lib/rouge/demos/msgtrans
@@ -149,6 +156,7 @@ files:
149
156
  - lib/rouge/demos/r
150
157
  - lib/rouge/demos/racket
151
158
  - lib/rouge/demos/reasonml
159
+ - lib/rouge/demos/robot_framework
152
160
  - lib/rouge/demos/ruby
153
161
  - lib/rouge/demos/rust
154
162
  - lib/rouge/demos/sas
@@ -163,6 +171,7 @@ files:
163
171
  - lib/rouge/demos/smalltalk
164
172
  - lib/rouge/demos/smarty
165
173
  - lib/rouge/demos/sml
174
+ - lib/rouge/demos/sparql
166
175
  - lib/rouge/demos/sqf
167
176
  - lib/rouge/demos/sql
168
177
  - lib/rouge/demos/supercollider
@@ -173,6 +182,7 @@ files:
173
182
  - lib/rouge/demos/tex
174
183
  - lib/rouge/demos/toml
175
184
  - lib/rouge/demos/tsx
185
+ - lib/rouge/demos/ttcn3
176
186
  - lib/rouge/demos/tulip
177
187
  - lib/rouge/demos/turtle
178
188
  - lib/rouge/demos/twig
@@ -214,6 +224,7 @@ files:
214
224
  - lib/rouge/lexers/ada.rb
215
225
  - lib/rouge/lexers/apache.rb
216
226
  - lib/rouge/lexers/apache/keywords.yml
227
+ - lib/rouge/lexers/apex.rb
217
228
  - lib/rouge/lexers/apiblueprint.rb
218
229
  - lib/rouge/lexers/apple_script.rb
219
230
  - lib/rouge/lexers/armasm.rb
@@ -227,6 +238,7 @@ files:
227
238
  - lib/rouge/lexers/c.rb
228
239
  - lib/rouge/lexers/ceylon.rb
229
240
  - lib/rouge/lexers/cfscript.rb
241
+ - lib/rouge/lexers/clean.rb
230
242
  - lib/rouge/lexers/clojure.rb
231
243
  - lib/rouge/lexers/cmake.rb
232
244
  - lib/rouge/lexers/cmhg.rb
@@ -239,6 +251,7 @@ files:
239
251
  - lib/rouge/lexers/crystal.rb
240
252
  - lib/rouge/lexers/csharp.rb
241
253
  - lib/rouge/lexers/css.rb
254
+ - lib/rouge/lexers/csvs.rb
242
255
  - lib/rouge/lexers/cuda.rb
243
256
  - lib/rouge/lexers/cython.rb
244
257
  - lib/rouge/lexers/d.rb
@@ -285,6 +298,7 @@ files:
285
298
  - lib/rouge/lexers/java.rb
286
299
  - lib/rouge/lexers/javascript.rb
287
300
  - lib/rouge/lexers/jinja.rb
301
+ - lib/rouge/lexers/jsl.rb
288
302
  - lib/rouge/lexers/json.rb
289
303
  - lib/rouge/lexers/json_doc.rb
290
304
  - lib/rouge/lexers/jsonnet.rb
@@ -300,6 +314,8 @@ files:
300
314
  - lib/rouge/lexers/llvm.rb
301
315
  - lib/rouge/lexers/lua.rb
302
316
  - lib/rouge/lexers/lua/builtins.rb
317
+ - lib/rouge/lexers/lustre.rb
318
+ - lib/rouge/lexers/lutin.rb
303
319
  - lib/rouge/lexers/m68k.rb
304
320
  - lib/rouge/lexers/magik.rb
305
321
  - lib/rouge/lexers/make.rb
@@ -309,6 +325,7 @@ files:
309
325
  - lib/rouge/lexers/mathematica/builtins.rb
310
326
  - lib/rouge/lexers/matlab.rb
311
327
  - lib/rouge/lexers/matlab/builtins.yml
328
+ - lib/rouge/lexers/minizinc.rb
312
329
  - lib/rouge/lexers/moonscript.rb
313
330
  - lib/rouge/lexers/mosel.rb
314
331
  - lib/rouge/lexers/msgtrans.rb
@@ -342,6 +359,7 @@ files:
342
359
  - lib/rouge/lexers/r.rb
343
360
  - lib/rouge/lexers/racket.rb
344
361
  - lib/rouge/lexers/reasonml.rb
362
+ - lib/rouge/lexers/robot_framework.rb
345
363
  - lib/rouge/lexers/ruby.rb
346
364
  - lib/rouge/lexers/rust.rb
347
365
  - lib/rouge/lexers/sas.rb
@@ -357,6 +375,7 @@ files:
357
375
  - lib/rouge/lexers/smalltalk.rb
358
376
  - lib/rouge/lexers/smarty.rb
359
377
  - lib/rouge/lexers/sml.rb
378
+ - lib/rouge/lexers/sparql.rb
360
379
  - lib/rouge/lexers/sqf.rb
361
380
  - lib/rouge/lexers/sqf/commands.rb
362
381
  - lib/rouge/lexers/sql.rb
@@ -368,6 +387,7 @@ files:
368
387
  - lib/rouge/lexers/tex.rb
369
388
  - lib/rouge/lexers/toml.rb
370
389
  - lib/rouge/lexers/tsx.rb
390
+ - lib/rouge/lexers/ttcn3.rb
371
391
  - lib/rouge/lexers/tulip.rb
372
392
  - lib/rouge/lexers/turtle.rb
373
393
  - lib/rouge/lexers/twig.rb