rouge 4.2.0 → 4.3.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/Gemfile +7 -7
- data/lib/rouge/cli.rb +2 -4
- data/lib/rouge/demos/iecst +21 -0
- data/lib/rouge/guessers/disambiguation.rb +6 -1
- data/lib/rouge/lexers/ada.rb +1 -1
- data/lib/rouge/lexers/brainfuck.rb +1 -0
- data/lib/rouge/lexers/clean.rb +4 -4
- data/lib/rouge/lexers/cpp.rb +1 -1
- data/lib/rouge/lexers/crystal.rb +17 -17
- data/lib/rouge/lexers/ecl.rb +2 -2
- data/lib/rouge/lexers/eiffel.rb +1 -1
- data/lib/rouge/lexers/elixir.rb +1 -1
- data/lib/rouge/lexers/gdscript.rb +4 -4
- data/lib/rouge/lexers/ghc_cmm.rb +3 -3
- data/lib/rouge/lexers/hcl.rb +1 -0
- data/lib/rouge/lexers/iecst.rb +92 -0
- data/lib/rouge/lexers/javascript.rb +1 -1
- data/lib/rouge/lexers/julia.rb +3 -2
- data/lib/rouge/lexers/kotlin.rb +1 -1
- data/lib/rouge/lexers/make.rb +1 -1
- data/lib/rouge/lexers/markdown.rb +2 -1
- data/lib/rouge/lexers/mathematica.rb +1 -1
- data/lib/rouge/lexers/meson.rb +0 -1
- data/lib/rouge/lexers/nasm.rb +5 -4
- data/lib/rouge/lexers/nginx.rb +1 -0
- data/lib/rouge/lexers/objective_c/common.rb +0 -2
- data/lib/rouge/lexers/objective_c.rb +1 -1
- data/lib/rouge/lexers/ocl.rb +2 -2
- data/lib/rouge/lexers/openedge.rb +0 -2
- data/lib/rouge/lexers/plsql.rb +5 -5
- data/lib/rouge/lexers/ruby.rb +19 -19
- data/lib/rouge/lexers/scala.rb +5 -2
- data/lib/rouge/lexers/sql.rb +1 -1
- data/lib/rouge/lexers/syzlang.rb +0 -1
- data/lib/rouge/lexers/tcl.rb +7 -2
- data/lib/rouge/lexers/toml.rb +13 -12
- data/lib/rouge/lexers/ttcn3.rb +0 -2
- data/lib/rouge/lexers/typescript/common.rb +9 -0
- data/lib/rouge/lexers/xojo.rb +1 -1
- data/lib/rouge/lexers/yang.rb +1 -1
- data/lib/rouge/tex_theme_renderer.rb +1 -1
- data/lib/rouge/themes/base16.rb +23 -18
- data/lib/rouge/themes/bw.rb +1 -0
- data/lib/rouge/themes/colorful.rb +1 -0
- data/lib/rouge/themes/github.rb +1 -0
- data/lib/rouge/themes/gruvbox.rb +4 -1
- data/lib/rouge/themes/igor_pro.rb +3 -0
- data/lib/rouge/themes/magritte.rb +1 -0
- data/lib/rouge/themes/molokai.rb +2 -1
- data/lib/rouge/themes/monokai.rb +2 -1
- data/lib/rouge/themes/monokai_sublime.rb +4 -3
- data/lib/rouge/themes/pastie.rb +1 -0
- data/lib/rouge/themes/thankful_eyes.rb +1 -0
- data/lib/rouge/themes/tulip.rb +1 -0
- data/lib/rouge/token.rb +2 -1
- data/lib/rouge/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de3a38233be791cfb87fbcee4e092afc1731ed4c2ac0bd9f4e8eb8d889a262c4
|
4
|
+
data.tar.gz: 81d1cf226f514155b861b1f127e55ffdf7cf9d40e2a8c8fa1ee5cd211052aeb0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ba279624b6990706218bced834a373cd4d5a15a487c862b07cc7042a924b429cad7518bea407f8ca85bda087395f1fa15abb231f0dd9ff0faa3b2b5e7cb108a
|
7
|
+
data.tar.gz: 93021b4af8761ddc54e22038b6926b7522f67c70c1ba0e7ebdb76ccb21375760f23efe4ebc9c4000bf3bba73499476fb9832596ac3f8eeca5f6f6f626e15069d
|
data/Gemfile
CHANGED
@@ -10,22 +10,22 @@ gem 'minitest', '>= 5.0'
|
|
10
10
|
gem 'minitest-power_assert'
|
11
11
|
gem 'power_assert', '~> 2.0'
|
12
12
|
|
13
|
-
gem 'rubocop', '~> 1.0', '<= 1.11'
|
14
|
-
gem 'rubocop-performance'
|
15
|
-
|
16
13
|
# don't try to install redcarpet under jruby
|
17
14
|
gem 'redcarpet', platforms: :ruby
|
18
15
|
|
19
16
|
# Profiling
|
20
17
|
gem 'memory_profiler', require: false
|
21
18
|
|
22
|
-
# Needed for a Rake task
|
23
|
-
gem 'git'
|
24
|
-
gem 'yard'
|
25
|
-
|
26
19
|
group :development do
|
27
20
|
gem 'pry'
|
28
21
|
|
22
|
+
# Needed for a Rake task
|
23
|
+
gem 'git'
|
24
|
+
gem 'yard'
|
25
|
+
|
26
|
+
gem 'rubocop', '~> 1.0', '<= 1.11'
|
27
|
+
gem 'rubocop-performance'
|
28
|
+
|
29
29
|
# docs
|
30
30
|
gem 'github-markup'
|
31
31
|
|
data/lib/rouge/cli.rb
CHANGED
@@ -347,8 +347,7 @@ module Rouge
|
|
347
347
|
formatter.format(lexer.lex(input), &method(:print))
|
348
348
|
end
|
349
349
|
|
350
|
-
private_class_method
|
351
|
-
def self.parse_cgi(str)
|
350
|
+
private_class_method def self.parse_cgi(str)
|
352
351
|
pairs = CGI.parse(str).map { |k, v| [k.to_sym, v.first] }
|
353
352
|
Hash[pairs]
|
354
353
|
end
|
@@ -511,8 +510,7 @@ module Rouge
|
|
511
510
|
end
|
512
511
|
|
513
512
|
|
514
|
-
private_class_method
|
515
|
-
def self.normalize_syntax(argv)
|
513
|
+
private_class_method def self.normalize_syntax(argv)
|
516
514
|
out = []
|
517
515
|
argv.each do |arg|
|
518
516
|
case arg
|
@@ -0,0 +1,21 @@
|
|
1
|
+
// first-order lag derivative term
|
2
|
+
(*
|
3
|
+
Parameter K must be set to T / (T + T1)
|
4
|
+
*)
|
5
|
+
FUNCTION_BLOCK DT2
|
6
|
+
|
7
|
+
VAR_INPUT
|
8
|
+
IN : REAL;
|
9
|
+
K : REAL;
|
10
|
+
END_VAR
|
11
|
+
VAR_OUTPUT
|
12
|
+
Q : REAL;
|
13
|
+
END_VAR
|
14
|
+
VAR
|
15
|
+
H : REAL := 0.0;
|
16
|
+
END_VAR
|
17
|
+
|
18
|
+
BEGIN
|
19
|
+
Q := IN - H;
|
20
|
+
H := H + K * Q;
|
21
|
+
END_FUNCTION_BLOCK
|
@@ -140,12 +140,17 @@ module Rouge
|
|
140
140
|
|
141
141
|
Puppet
|
142
142
|
end
|
143
|
-
|
143
|
+
|
144
144
|
disambiguate '*.p' do
|
145
145
|
next Prolog if contains?(':-')
|
146
146
|
next Prolog if matches?(/\A\w+(\(\w+\,\s*\w+\))*\./)
|
147
147
|
next OpenEdge
|
148
148
|
end
|
149
|
+
|
150
|
+
disambiguate '*.st' do
|
151
|
+
next IecST if matches?(/^\s*END_/i)
|
152
|
+
next Smalltalk
|
153
|
+
end
|
149
154
|
end
|
150
155
|
end
|
151
156
|
end
|
data/lib/rouge/lexers/ada.rb
CHANGED
data/lib/rouge/lexers/clean.rb
CHANGED
@@ -79,7 +79,7 @@ module Rouge
|
|
79
79
|
|
80
80
|
rule %r/code(\s+inline)?\s*{/, Comment::Preproc, :abc
|
81
81
|
|
82
|
-
rule %r/_*[a-z][\
|
82
|
+
rule %r/_*[a-z][\w`]*/ do |m|
|
83
83
|
if self.class.keywords.include?(m[0])
|
84
84
|
token Keyword
|
85
85
|
else
|
@@ -87,7 +87,7 @@ module Rouge
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
rule %r/_*[A-Z][\
|
90
|
+
rule %r/_*[A-Z][\w`]*/ do |m|
|
91
91
|
if m[0]=='True' || m[0]=='False'
|
92
92
|
token Keyword::Constant
|
93
93
|
else
|
@@ -95,7 +95,7 @@ module Rouge
|
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
|
-
rule %r/[^\
|
98
|
+
rule %r/[^\w\s`]/, Punctuation
|
99
99
|
rule %r/_\b/, Punctuation
|
100
100
|
end
|
101
101
|
|
@@ -136,7 +136,7 @@ module Rouge
|
|
136
136
|
|
137
137
|
rule %r/}/, Comment::Preproc, :pop!
|
138
138
|
rule %r/\.\w*/, Keyword, :abc_rest_of_line
|
139
|
-
rule %r/[\
|
139
|
+
rule %r/[\w]+/, Name::Builtin, :abc_rest_of_line
|
140
140
|
end
|
141
141
|
|
142
142
|
state :abc_rest_of_line do
|
data/lib/rouge/lexers/cpp.rb
CHANGED
@@ -27,7 +27,7 @@ module Rouge
|
|
27
27
|
delete dynamic_cast explicit export friend
|
28
28
|
mutable namespace new operator private protected public
|
29
29
|
reinterpret_cast requires restrict size_of static_cast this throw throws
|
30
|
-
typeid typename using virtual final override
|
30
|
+
typeid typename using virtual final override import module
|
31
31
|
|
32
32
|
alignas alignof decltype noexcept static_assert
|
33
33
|
thread_local try
|
data/lib/rouge/lexers/crystal.rb
CHANGED
@@ -21,7 +21,7 @@ module Rouge
|
|
21
21
|
rule %r(
|
22
22
|
: # initial :
|
23
23
|
@{0,2} # optional ivar, for :@foo and :@@foo
|
24
|
-
[
|
24
|
+
[\p{Ll}_]\p{Word}*[!?]? # the symbol
|
25
25
|
)xi, Str::Symbol
|
26
26
|
|
27
27
|
# special symbols
|
@@ -35,7 +35,7 @@ module Rouge
|
|
35
35
|
# %-sigiled strings
|
36
36
|
# %(abc), %[abc], %<abc>, %.abc., %r.abc., etc
|
37
37
|
delimiter_map = { '{' => '}', '[' => ']', '(' => ')', '<' => '>' }
|
38
|
-
rule %r/%([rqswQWxiI])?([^\
|
38
|
+
rule %r/%([rqswQWxiI])?([^\p{Word}\s}])/ do |m|
|
39
39
|
open = Regexp.escape(m[2])
|
40
40
|
close = Regexp.escape(delimiter_map[m[2]] || m[2])
|
41
41
|
interp = /[rQWxI]/ === m[1]
|
@@ -77,7 +77,7 @@ module Rouge
|
|
77
77
|
|
78
78
|
state :strings do
|
79
79
|
mixin :symbols
|
80
|
-
rule %r/\b[
|
80
|
+
rule %r/\b[\p{Ll}_]\p{Word}*?[?!]?:\s+/, Str::Symbol, :expr_start
|
81
81
|
rule %r/"/, Str::Double, :simple_string
|
82
82
|
rule %r/(?<!\.)`/, Str::Backtick, :simple_backtick
|
83
83
|
rule %r/(')(\\u[a-fA-F0-9]{4}|\\u\{[a-fA-F0-9]{1,6}\}|\\[abefnrtv])?(\\\\|\\'|[^'])*(')/ do
|
@@ -166,9 +166,9 @@ module Rouge
|
|
166
166
|
rule %r/@\[([^\]]+)\]/, Name::Decorator
|
167
167
|
|
168
168
|
# names
|
169
|
-
rule %r/@@[
|
170
|
-
rule %r/@[
|
171
|
-
rule %r/\$\
|
169
|
+
rule %r/@@[\p{Ll}_]\p{Word}*/i, Name::Variable::Class
|
170
|
+
rule %r/@[\p{Ll}_]\p{Word}*/i, Name::Variable::Instance
|
171
|
+
rule %r/\$\p{Word}+/, Name::Variable::Global
|
172
172
|
rule %r(\$[!@&`'+~=/\\,;.<>_*\$?:"]), Name::Variable::Global
|
173
173
|
rule %r/\$-[0adFiIlpvw]/, Name::Variable::Global
|
174
174
|
rule %r/::/, Operator
|
@@ -181,7 +181,7 @@ module Rouge
|
|
181
181
|
rule %r(
|
182
182
|
(module)
|
183
183
|
(\s+)
|
184
|
-
([
|
184
|
+
([\p{L}_][\p{L}0-9_]*(::[\p{L}_][\p{L}0-9_]*)*)
|
185
185
|
)x do
|
186
186
|
groups Keyword, Text, Name::Namespace
|
187
187
|
end
|
@@ -207,14 +207,14 @@ module Rouge
|
|
207
207
|
# Otherwise, they will be parsed as :method_call
|
208
208
|
rule %r/\.{2,3}/, Operator, :expr_start
|
209
209
|
|
210
|
-
rule %r/[
|
211
|
-
rule %r/(\.|::)(\s*)([
|
210
|
+
rule %r/[\p{Lu}][\p{L}0-9_]*/, Name::Constant, :method_call
|
211
|
+
rule %r/(\.|::)(\s*)([\p{Ll}_]\p{Word}*[!?]?|[*%&^`~+-\/\[<>=])/ do
|
212
212
|
groups Punctuation, Text, Name::Function
|
213
213
|
push :method_call
|
214
214
|
end
|
215
215
|
|
216
|
-
rule %r/[
|
217
|
-
rule %r/[
|
216
|
+
rule %r/[\p{L}_]\p{Word}*[?!]/, Name, :expr_start
|
217
|
+
rule %r/[\p{L}_]\p{Word}*/, Name, :method_call
|
218
218
|
rule %r/\*\*|\/\/|>=|<=|<=>|<<?|>>?|=~|={3}|!~|&&?|\|\||\./,
|
219
219
|
Operator, :expr_start
|
220
220
|
rule %r/{%|%}/, Punctuation
|
@@ -225,7 +225,7 @@ module Rouge
|
|
225
225
|
end
|
226
226
|
|
227
227
|
state :has_heredocs do
|
228
|
-
rule %r/(?<!\
|
228
|
+
rule %r/(?<!\p{Word})(<<[-~]?)(["`']?)([\p{L}_]\p{Word}*)(\2)/ do |m|
|
229
229
|
token Operator, m[1]
|
230
230
|
token Name::Constant, "#{m[2]}#{m[3]}#{m[4]}"
|
231
231
|
@heredoc_queue << [['<<-', '<<~'].include?(m[1]), m[3]]
|
@@ -282,9 +282,9 @@ module Rouge
|
|
282
282
|
rule %r/\s+/, Text
|
283
283
|
rule %r/\(/, Punctuation, :defexpr
|
284
284
|
rule %r(
|
285
|
-
(?:([
|
285
|
+
(?:([\p{L}_]\p{Word}*)(\.))?
|
286
286
|
(
|
287
|
-
[
|
287
|
+
[\p{L}_]\p{Word}*[!?]? |
|
288
288
|
\*\*? | [-+]@? | [/%&\|^`~] | \[\]=? |
|
289
289
|
<<? | >>? | <=>? | >= | ===?
|
290
290
|
)
|
@@ -311,7 +311,7 @@ module Rouge
|
|
311
311
|
goto :expr_start
|
312
312
|
end
|
313
313
|
|
314
|
-
rule %r/[
|
314
|
+
rule %r/[\p{Lu}_]\p{Word}*/, Name::Class, :pop!
|
315
315
|
|
316
316
|
rule(//) { pop! }
|
317
317
|
end
|
@@ -343,7 +343,7 @@ module Rouge
|
|
343
343
|
|
344
344
|
state :string_intp do
|
345
345
|
rule %r/[#][{]/, Str::Interpol, :in_interp
|
346
|
-
rule %r/#(@@?|\$)[
|
346
|
+
rule %r/#(@@?|\$)[\p{Ll}_]\p{Word}*/i, Str::Interpol
|
347
347
|
end
|
348
348
|
|
349
349
|
state :string_intp_escaped do
|
@@ -399,7 +399,7 @@ module Rouge
|
|
399
399
|
rule %r(
|
400
400
|
[?](\\[MC]-)* # modifiers
|
401
401
|
(\\([\\abefnrstv\#"']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)
|
402
|
-
(?!\
|
402
|
+
(?!\p{Word})
|
403
403
|
)x, Str::Char, :pop!
|
404
404
|
|
405
405
|
# special case for using a single space. Ruby demands that
|
data/lib/rouge/lexers/ecl.rb
CHANGED
@@ -114,8 +114,8 @@ module Rouge
|
|
114
114
|
mixin :single_quote
|
115
115
|
|
116
116
|
rule %r(\b(?i:(and|not|or|in))\b), Operator::Word
|
117
|
-
rule %r(
|
118
|
-
rule %r([\[\]{}()
|
117
|
+
rule %r(:=|>|<|<>|/|\\|\+|-|=), Operator
|
118
|
+
rule %r([\[\]{}();,\&\.\%]), Punctuation
|
119
119
|
|
120
120
|
rule %r(\b(?i:(beginc\+\+.*?endc\+\+)))m, Str::Single
|
121
121
|
rule %r(\b(?i:(embed.*?endembed)))m, Str::Single
|
data/lib/rouge/lexers/eiffel.rb
CHANGED
@@ -44,7 +44,7 @@ module Rouge
|
|
44
44
|
rule %r/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/, Num::Float
|
45
45
|
|
46
46
|
rule %r/:=|<<|>>|\(\||\|\)|->|\.|[{}\[\];(),:?]/, Punctuation::Indicator
|
47
|
-
rule %r/\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[
|
47
|
+
rule %r/\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~≤≥−∀∃¦⟳⟲]/, Operator
|
48
48
|
|
49
49
|
rule %r/[A-Z][\dA-Z_]*/, Name::Class
|
50
50
|
rule %r/[A-Za-z][\dA-Za-z_]*/, Name
|
data/lib/rouge/lexers/elixir.rb
CHANGED
@@ -12,7 +12,7 @@ module Rouge
|
|
12
12
|
mimetypes 'text/x-gdscript', 'application/x-gdscript'
|
13
13
|
|
14
14
|
def self.keywords
|
15
|
-
@keywords
|
15
|
+
@keywords ||= %w(
|
16
16
|
and in not or as breakpoint class class_name extends is func setget
|
17
17
|
signal tool const enum export onready static var break continue
|
18
18
|
if elif else for pass return match while remote master puppet
|
@@ -22,13 +22,13 @@ module Rouge
|
|
22
22
|
|
23
23
|
# Reserved for future implementation
|
24
24
|
def self.keywords_reserved
|
25
|
-
@keywords_reserved
|
25
|
+
@keywords_reserved ||= %w(
|
26
26
|
do switch case
|
27
27
|
).join('|')
|
28
28
|
end
|
29
29
|
|
30
30
|
def self.builtins
|
31
|
-
builtins
|
31
|
+
@builtins ||= %w(
|
32
32
|
Color8 ColorN abs acos asin assert atan atan2 bytes2var ceil char
|
33
33
|
clamp convert cos cosh db2linear decimals dectime deg2rad dict2inst
|
34
34
|
ease exp floor fmod fposmod funcref hash inst2dict instance_from_id
|
@@ -41,7 +41,7 @@ module Rouge
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def self.builtins_type
|
44
|
-
@builtins_type
|
44
|
+
@builtins_type ||= %w(
|
45
45
|
bool int float String Vector2 Rect2 Transform2D Vector3 AABB
|
46
46
|
Plane Quat Basis Transform Color RID Object NodePath Dictionary
|
47
47
|
Array PoolByteArray PoolIntArray PoolRealArray PoolStringArray
|
data/lib/rouge/lexers/ghc_cmm.rb
CHANGED
@@ -22,11 +22,11 @@ module Rouge
|
|
22
22
|
ws = %r(\s|//.*?\n|/[*](?:[^*]|(?:[*][^/]))*[*]+/)mx
|
23
23
|
|
24
24
|
# Make sure that this is not a preprocessor macro, e.g. `#if` or `#define`.
|
25
|
-
id = %r((?!\#[a-zA-Z])[\w#\$%
|
25
|
+
id = %r((?!\#[a-zA-Z])[\w#\$%']+)
|
26
26
|
|
27
27
|
complex_id = %r(
|
28
|
-
(?:[\w#$%
|
29
|
-
(?:[\w#$%
|
28
|
+
(?:[\w#$%']|\(\)|\(,\)|\[\]|[0-9])*
|
29
|
+
(?:[\w#$%']+)
|
30
30
|
)mx
|
31
31
|
|
32
32
|
state :root do
|
data/lib/rouge/lexers/hcl.rb
CHANGED
@@ -26,6 +26,7 @@ module Rouge
|
|
26
26
|
state :primitives do
|
27
27
|
rule %r/[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?([kKmMgG]b?)?/, Num::Float
|
28
28
|
rule %r/[0-9]+([kKmMgG]b?)?/, Num::Integer
|
29
|
+
rule %r/[-+*\/!%&<>|=:?]/, Operator
|
29
30
|
|
30
31
|
rule %r/"/, Str::Double, :dq
|
31
32
|
rule %r/'/, Str::Single, :sq
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class IecST < RegexLexer
|
7
|
+
tag 'iecst'
|
8
|
+
title "IEC 61131-3 Structured Text"
|
9
|
+
desc 'Structured text is a programming language for PLCs (programmable logic controllers).'
|
10
|
+
filenames '*.awl', '*.scl', '*.st'
|
11
|
+
|
12
|
+
mimetypes 'text/x-iecst'
|
13
|
+
|
14
|
+
def self.keywords
|
15
|
+
blocks = %w(
|
16
|
+
PROGRAM CONFIGURATION INITIAL_STEP INTERFACE FUNCTION_BLOCK FUNCTION ACTION TRANSITION
|
17
|
+
TYPE STRUCT STEP NAMESPACE LIBRARY CHANNEL FOLDER RESOURCE
|
18
|
+
VAR_ACCESS VAR_CONFIG VAR_EXTERNAL VAR_GLOBAL VAR_INPUT VAR_IN_OUT VAR_OUTPUT VAR_TEMP VAR
|
19
|
+
CONST METHOD PROPERTY
|
20
|
+
CASE FOR IF REPEAT WHILE
|
21
|
+
)
|
22
|
+
@keywords ||= Set.new %w(
|
23
|
+
AT BEGIN BY CONSTANT CONTINUE DO ELSE ELSIF EXIT EXTENDS FROM GET GOTO IMPLEMENTS JMP
|
24
|
+
NON_RETAIN OF PRIVATE PROTECTED PUBLIC RETAIN RETURN SET TASK THEN TO UNTIL USING WITH
|
25
|
+
__CATCH __ENDTRY __FINALLY __TRY
|
26
|
+
) + blocks + blocks.map {|kw| "END_" + kw}
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.types
|
30
|
+
@types ||= Set.new %w(
|
31
|
+
ANY ARRAY BOOL BYTE POINTER STRING
|
32
|
+
DATE DATE_AND_TIME DT TIME TIME_OF_DAY TOD
|
33
|
+
INT DINT LINT SINT UINT UDINT ULINT USINT
|
34
|
+
WORD DWORD LWORD
|
35
|
+
REAL LREAL
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.literals
|
40
|
+
@literals ||= Set.new %w(TRUE FALSE NULL)
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.operators
|
44
|
+
@operators ||= Set.new %w(AND EQ EXPT GE GT LE LT MOD NE NOT OR XOR)
|
45
|
+
end
|
46
|
+
|
47
|
+
state :whitespace do
|
48
|
+
# Spaces
|
49
|
+
rule %r/\s+/m, Text
|
50
|
+
# // Comments
|
51
|
+
rule %r((//).*$\n?), Comment::Single
|
52
|
+
# (* Comments *)
|
53
|
+
rule %r(\(\*.*?\*\))m, Comment::Multiline
|
54
|
+
# { Comments }
|
55
|
+
rule %r(\{.*?\})m, Comment::Special
|
56
|
+
end
|
57
|
+
|
58
|
+
state :root do
|
59
|
+
mixin :whitespace
|
60
|
+
|
61
|
+
rule %r/'[^']+'/, Literal::String::Single
|
62
|
+
rule %r/"[^"]+"/, Literal::String::Symbol
|
63
|
+
rule %r/%[IQM][XBWDL][\d.]*|%[IQ][\d.]*/, Name::Variable::Magic
|
64
|
+
rule %r/\b(?:D|DT|T|TOD)#[\d_shmd:]*/i, Literal::Date
|
65
|
+
rule %r/\b(?:16#[\d_a-f]+|0x[\d_a-f]+)\b/i, Literal::Number::Hex
|
66
|
+
rule %r/\b2#[01_]+/, Literal::Number::Bin
|
67
|
+
rule %r/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i, Literal::Number::Float
|
68
|
+
rule %r/\b[\d.,_]+/, Literal::Number
|
69
|
+
|
70
|
+
rule %r/\b[A-Z_]+\b/i do |m|
|
71
|
+
name = m[0].upcase
|
72
|
+
if self.class.keywords.include?(name)
|
73
|
+
token Keyword
|
74
|
+
elsif self.class.types.include?(name)
|
75
|
+
token Keyword::Type
|
76
|
+
elsif self.class.literals.include?(name)
|
77
|
+
token Literal
|
78
|
+
elsif self.class.operators.include?(name)
|
79
|
+
token Operator
|
80
|
+
else
|
81
|
+
token Name
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
rule %r/S?R?:?=>?|&&?|\*\*?|<[=>]?|>=?|[-:^\/+#]/, Operator
|
86
|
+
rule %r/\b[a-z_]\w*(?=\s*\()/i, Name::Function
|
87
|
+
rule %r/\b[a-z_]\w*\b/i, Name
|
88
|
+
rule %r/[()\[\].,;]/, Punctuation
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -100,7 +100,7 @@ module Rouge
|
|
100
100
|
|
101
101
|
def self.keywords
|
102
102
|
@keywords ||= Set.new %w(
|
103
|
-
|
103
|
+
async await break case catch continue debugger default delete
|
104
104
|
do else export finally from for if import in instanceof new of
|
105
105
|
return super switch this throw try typeof void while yield
|
106
106
|
)
|
data/lib/rouge/lexers/julia.rb
CHANGED
@@ -252,15 +252,16 @@ module Rouge
|
|
252
252
|
rule %r/\d+/, Literal::Number::Integer
|
253
253
|
end
|
254
254
|
|
255
|
+
NAME_RE = %r/[\p{L}\p{Nl}\p{S}_][\p{Word}\p{S}\p{Po}!]*/
|
255
256
|
|
256
257
|
state :funcname do
|
257
|
-
rule
|
258
|
+
rule NAME_RE, Name::Function, :pop!
|
258
259
|
rule %r/\([^\s\w{]{1,2}\)/, Operator, :pop!
|
259
260
|
rule %r/[^\s\w{]{1,2}/, Operator, :pop!
|
260
261
|
end
|
261
262
|
|
262
263
|
state :typename do
|
263
|
-
rule
|
264
|
+
rule NAME_RE, Name::Class, :pop!
|
264
265
|
end
|
265
266
|
|
266
267
|
state :stringescape do
|
data/lib/rouge/lexers/kotlin.rb
CHANGED
@@ -24,7 +24,7 @@ module Rouge
|
|
24
24
|
while yield
|
25
25
|
)
|
26
26
|
|
27
|
-
name_chars = %r'[
|
27
|
+
name_chars = %r'[-\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Nl}\p{Nd}\p{Pc}\p{Cf}\p{Mn}\p{Mc}]*'
|
28
28
|
|
29
29
|
class_name = %r'`?[\p{Lu}]#{name_chars}`?'
|
30
30
|
name = %r'`?[_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Nl}]#{name_chars}`?'
|
data/lib/rouge/lexers/make.rb
CHANGED
@@ -107,7 +107,8 @@ module Rouge
|
|
107
107
|
push :link
|
108
108
|
end
|
109
109
|
|
110
|
-
rule %r/[*]
|
110
|
+
rule %r/[*]{2}[^* \n][^*\n]*[*]{2}/, Generic::Strong
|
111
|
+
rule %r/[*]{3}[^* \n][^*\n]*[*]{3}/, Generic::EmphStrong
|
111
112
|
rule %r/__#{edot}*?__/, Generic::Strong
|
112
113
|
|
113
114
|
rule %r/[*]#{edot}*?[*]/, Generic::Emph
|
@@ -7,7 +7,7 @@ module Rouge
|
|
7
7
|
title "Mathematica"
|
8
8
|
desc "Wolfram Mathematica, the world's definitive system for modern technical computing."
|
9
9
|
tag 'mathematica'
|
10
|
-
aliases 'wl'
|
10
|
+
aliases 'wl', 'wolfram'
|
11
11
|
filenames '*.m', '*.wl'
|
12
12
|
mimetypes 'application/vnd.wolfram.mathematica.package', 'application/vnd.wolfram.wl'
|
13
13
|
|
data/lib/rouge/lexers/meson.rb
CHANGED
data/lib/rouge/lexers/nasm.rb
CHANGED
@@ -14,11 +14,12 @@ module Rouge
|
|
14
14
|
mimetypes 'text/x-nasm'
|
15
15
|
|
16
16
|
state :root do
|
17
|
-
|
17
|
+
rule %r/^\s*%/, Comment::Preproc, :preproc
|
18
18
|
|
19
|
-
|
19
|
+
mixin :whitespace
|
20
|
+
mixin :punctuation
|
20
21
|
|
21
|
-
|
22
|
+
rule %r/[a-z$._?][\w$.?#@~]*:/i, Name::Label
|
22
23
|
|
23
24
|
rule %r/([a-z$._?][\w$.?#@~]*)(\s+)(equ)/i do
|
24
25
|
groups Name::Constant, Keyword::Declaration, Keyword::Declaration
|
@@ -32,7 +33,7 @@ module Rouge
|
|
32
33
|
end
|
33
34
|
|
34
35
|
state :instruction_args do
|
35
|
-
|
36
|
+
rule %r/"(\\\\"|[^"\\n])*"|'(\\\\'|[^'\\n])*'|`(\\\\`|[^`\\n])*`/, Str
|
36
37
|
rule %r/(?:0x[\da-f]+|$0[\da-f]*|\d+[\da-f]*h)/i, Num::Hex
|
37
38
|
rule %r/[0-7]+q/i, Num::Oct
|
38
39
|
rule %r/[01]+b/i, Num::Bin
|
data/lib/rouge/lexers/nginx.rb
CHANGED
@@ -12,7 +12,7 @@ module Rouge
|
|
12
12
|
tag 'objective_c'
|
13
13
|
title "Objective-C"
|
14
14
|
desc 'an extension of C commonly used to write Apple software'
|
15
|
-
aliases 'objc', 'obj-c', 'obj_c', 'objectivec'
|
15
|
+
aliases 'objc', 'obj-c', 'obj_c', 'objectivec', 'objective-c'
|
16
16
|
filenames '*.m', '*.h'
|
17
17
|
|
18
18
|
mimetypes 'text/x-objective_c', 'application/x-objective_c'
|
data/lib/rouge/lexers/ocl.rb
CHANGED
@@ -61,9 +61,9 @@ module Rouge
|
|
61
61
|
rule %r/--.*/, Comment::Single
|
62
62
|
rule %r/\d+/, Num::Integer
|
63
63
|
rule %r/'/, Str::Single, :single_string
|
64
|
-
rule %r([
|
64
|
+
rule %r([-|+*/<>=~!@#%&?^]), Operator
|
65
65
|
rule %r/[;:()\[\],.]/, Punctuation
|
66
|
-
rule %r
|
66
|
+
rule %r/[a-zA-Z]\w*/ do |m|
|
67
67
|
if self.class.operators.include? m[0]
|
68
68
|
token Operator
|
69
69
|
elsif self.class.keywords_type.include? m[0]
|