rouge 3.9.0 → 3.13.0

Sign up to get free protection for your applications and to get access to all the features.
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