rouge 3.4.1 → 3.5.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/lib/rouge.rb +3 -0
- data/lib/rouge/cli.rb +19 -2
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/magik +6 -0
- data/lib/rouge/formatter.rb +2 -2
- data/lib/rouge/formatters/tex.rb +90 -0
- data/lib/rouge/guessers/glob_mapping.rb +1 -1
- data/lib/rouge/lexer.rb +22 -10
- data/lib/rouge/lexers/abap.rb +11 -11
- data/lib/rouge/lexers/actionscript.rb +34 -34
- data/lib/rouge/lexers/apache.rb +8 -8
- data/lib/rouge/lexers/apple_script.rb +15 -14
- data/lib/rouge/lexers/awk.rb +25 -25
- data/lib/rouge/lexers/biml.rb +4 -4
- data/lib/rouge/lexers/bpf.rb +104 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +12 -12
- data/lib/rouge/lexers/c.rb +30 -30
- data/lib/rouge/lexers/ceylon.rb +1 -29
- data/lib/rouge/lexers/cfscript.rb +26 -26
- data/lib/rouge/lexers/clojure.rb +14 -14
- data/lib/rouge/lexers/cmake.rb +14 -14
- data/lib/rouge/lexers/coffeescript.rb +30 -30
- data/lib/rouge/lexers/common_lisp.rb +36 -36
- data/lib/rouge/lexers/conf.rb +6 -6
- data/lib/rouge/lexers/coq.rb +18 -18
- data/lib/rouge/lexers/cpp.rb +8 -8
- data/lib/rouge/lexers/crystal.rb +70 -70
- data/lib/rouge/lexers/csharp.rb +28 -28
- data/lib/rouge/lexers/css.rb +23 -23
- data/lib/rouge/lexers/d.rb +59 -59
- data/lib/rouge/lexers/dart.rb +33 -33
- data/lib/rouge/lexers/digdag.rb +1 -1
- data/lib/rouge/lexers/docker.rb +10 -10
- data/lib/rouge/lexers/dot.rb +16 -16
- data/lib/rouge/lexers/eiffel.rb +20 -20
- data/lib/rouge/lexers/elixir.rb +29 -28
- data/lib/rouge/lexers/elm.rb +29 -29
- data/lib/rouge/lexers/erb.rb +4 -4
- data/lib/rouge/lexers/factor.rb +40 -40
- data/lib/rouge/lexers/fortran.rb +32 -32
- data/lib/rouge/lexers/fsharp.rb +26 -26
- data/lib/rouge/lexers/gherkin.rb +13 -13
- data/lib/rouge/lexers/glsl.rb +0 -4
- data/lib/rouge/lexers/go.rb +1 -1
- data/lib/rouge/lexers/graphql.rb +62 -62
- data/lib/rouge/lexers/groovy.rb +23 -25
- data/lib/rouge/lexers/hack.rb +1 -1
- data/lib/rouge/lexers/haml.rb +25 -29
- data/lib/rouge/lexers/handlebars.rb +18 -18
- data/lib/rouge/lexers/haskell.rb +66 -65
- data/lib/rouge/lexers/hcl.rb +25 -25
- data/lib/rouge/lexers/html.rb +31 -31
- data/lib/rouge/lexers/http.rb +4 -4
- data/lib/rouge/lexers/hylang.rb +14 -14
- data/lib/rouge/lexers/idlang.rb +32 -32
- data/lib/rouge/lexers/igorpro.rb +30 -30
- data/lib/rouge/lexers/ini.rb +12 -12
- data/lib/rouge/lexers/io.rb +7 -7
- data/lib/rouge/lexers/irb.rb +5 -5
- data/lib/rouge/lexers/java.rb +24 -24
- data/lib/rouge/lexers/javascript.rb +51 -51
- data/lib/rouge/lexers/jinja.rb +22 -22
- data/lib/rouge/lexers/json.rb +11 -10
- data/lib/rouge/lexers/json_doc.rb +2 -2
- data/lib/rouge/lexers/jsonnet.rb +18 -18
- data/lib/rouge/lexers/jsp.rb +28 -28
- data/lib/rouge/lexers/jsx.rb +16 -16
- data/lib/rouge/lexers/julia.rb +44 -44
- data/lib/rouge/lexers/kotlin.rb +3 -3
- data/lib/rouge/lexers/lasso.rb +50 -50
- data/lib/rouge/lexers/liquid.rb +53 -53
- data/lib/rouge/lexers/literate_coffeescript.rb +2 -2
- data/lib/rouge/lexers/literate_haskell.rb +5 -5
- data/lib/rouge/lexers/llvm.rb +23 -16
- data/lib/rouge/lexers/lua.rb +3 -3
- data/lib/rouge/lexers/m68k.rb +18 -19
- data/lib/rouge/lexers/magik.rb +126 -0
- data/lib/rouge/lexers/make.rb +22 -28
- data/lib/rouge/lexers/markdown.rb +37 -37
- data/lib/rouge/lexers/mathematica.rb +11 -11
- data/lib/rouge/lexers/matlab.rb +20 -20
- data/lib/rouge/lexers/moonscript.rb +3 -3
- data/lib/rouge/lexers/mosel.rb +17 -17
- data/lib/rouge/lexers/mxml.rb +18 -18
- data/lib/rouge/lexers/nasm.rb +24 -25
- data/lib/rouge/lexers/nginx.rb +14 -14
- data/lib/rouge/lexers/nim.rb +1 -1
- data/lib/rouge/lexers/nix.rb +42 -42
- data/lib/rouge/lexers/objective_c.rb +38 -38
- data/lib/rouge/lexers/ocaml.rb +29 -29
- data/lib/rouge/lexers/pascal.rb +4 -4
- data/lib/rouge/lexers/perl.rb +68 -68
- data/lib/rouge/lexers/php.rb +38 -38
- data/lib/rouge/lexers/plist.rb +14 -14
- data/lib/rouge/lexers/pony.rb +19 -19
- data/lib/rouge/lexers/powershell.rb +25 -25
- data/lib/rouge/lexers/praat.rb +75 -75
- data/lib/rouge/lexers/prolog.rb +26 -20
- data/lib/rouge/lexers/prometheus.rb +30 -30
- data/lib/rouge/lexers/properties.rb +12 -12
- data/lib/rouge/lexers/protobuf.rb +22 -22
- data/lib/rouge/lexers/puppet.rb +31 -31
- data/lib/rouge/lexers/python.rb +52 -52
- data/lib/rouge/lexers/q.rb +12 -12
- data/lib/rouge/lexers/qml.rb +12 -12
- data/lib/rouge/lexers/r.rb +12 -12
- data/lib/rouge/lexers/racket.rb +22 -22
- data/lib/rouge/lexers/ruby.rb +71 -69
- data/lib/rouge/lexers/rust.rb +30 -30
- data/lib/rouge/lexers/sass.rb +8 -8
- data/lib/rouge/lexers/sass/common.rb +40 -40
- data/lib/rouge/lexers/scala.rb +43 -43
- data/lib/rouge/lexers/scheme.rb +18 -18
- data/lib/rouge/lexers/scss.rb +3 -3
- data/lib/rouge/lexers/sed.rb +29 -29
- data/lib/rouge/lexers/shell.rb +61 -52
- data/lib/rouge/lexers/sieve.rb +8 -8
- data/lib/rouge/lexers/slim.rb +24 -24
- data/lib/rouge/lexers/smalltalk.rb +33 -33
- data/lib/rouge/lexers/smarty.rb +12 -12
- data/lib/rouge/lexers/sml.rb +67 -67
- data/lib/rouge/lexers/sqf.rb +1 -1
- data/lib/rouge/lexers/sql.rb +21 -21
- data/lib/rouge/lexers/supercollider.rb +19 -19
- data/lib/rouge/lexers/swift.rb +42 -39
- data/lib/rouge/lexers/tap.rb +20 -20
- data/lib/rouge/lexers/tcl.rb +27 -27
- data/lib/rouge/lexers/terraform.rb +13 -13
- data/lib/rouge/lexers/tex.rb +19 -19
- data/lib/rouge/lexers/toml.rb +18 -18
- data/lib/rouge/lexers/tulip.rb +36 -36
- data/lib/rouge/lexers/turtle.rb +35 -38
- data/lib/rouge/lexers/vala.rb +17 -17
- data/lib/rouge/lexers/vb.rb +27 -27
- data/lib/rouge/lexers/verilog.rb +25 -27
- data/lib/rouge/lexers/vhdl.rb +10 -10
- data/lib/rouge/lexers/viml.rb +14 -14
- data/lib/rouge/lexers/vue.rb +9 -9
- data/lib/rouge/lexers/wollok.rb +25 -25
- data/lib/rouge/lexers/xml.rb +17 -21
- data/lib/rouge/lexers/xojo.rb +15 -15
- data/lib/rouge/lexers/yaml.rb +61 -61
- data/lib/rouge/plugins/redcarpet.rb +1 -1
- data/lib/rouge/tex_theme_renderer.rb +128 -0
- data/lib/rouge/theme.rb +4 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/version.rb +1 -1
- metadata +11 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6a707581ace0d0f142f14737abd3518c84efef2d858e3cc725b823fbfd766a98
|
|
4
|
+
data.tar.gz: fbfcc168600d0d5258cb9e1d8cf96fb640ee8f4fcb22b54742131bed418480ff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 28e0f79ea4d22e21a0d2feb1eca347e64f8fba09cf9091db5081a16b97ecdeadef1d9705a33fb03be7c0c0589ba9d17b6aa38254d0ee2a00389b80e76d04705f
|
|
7
|
+
data.tar.gz: c3a44152f51d67607b4c3cb465277ccee8100af5b9ca0b88121b8e0f0f7b558bdb8141c03a9b8b0e1c1c9ad5549ab6912a92e4a9496d02fd6e5a0d5551255150
|
data/lib/rouge.rb
CHANGED
|
@@ -71,9 +71,11 @@ load_relative 'rouge/formatters/html_legacy'
|
|
|
71
71
|
load_relative 'rouge/formatters/html_linewise'
|
|
72
72
|
load_relative 'rouge/formatters/html_inline'
|
|
73
73
|
load_relative 'rouge/formatters/terminal256'
|
|
74
|
+
load_relative 'rouge/formatters/tex'
|
|
74
75
|
load_relative 'rouge/formatters/null'
|
|
75
76
|
|
|
76
77
|
load_relative 'rouge/theme'
|
|
78
|
+
load_relative 'rouge/tex_theme_renderer'
|
|
77
79
|
load_relative 'rouge/themes/thankful_eyes'
|
|
78
80
|
load_relative 'rouge/themes/colorful'
|
|
79
81
|
load_relative 'rouge/themes/base16'
|
|
@@ -86,3 +88,4 @@ load_relative 'rouge/themes/gruvbox'
|
|
|
86
88
|
load_relative 'rouge/themes/tulip'
|
|
87
89
|
load_relative 'rouge/themes/pastie'
|
|
88
90
|
load_relative 'rouge/themes/bw'
|
|
91
|
+
load_relative 'rouge/themes/magritte'
|
data/lib/rouge/cli.rb
CHANGED
|
@@ -299,6 +299,7 @@ module Rouge
|
|
|
299
299
|
when 'html-inline' then Formatters::HTMLInline.new(theme)
|
|
300
300
|
when 'html-table' then Formatters::HTMLTable.new(Formatters::HTML.new)
|
|
301
301
|
when 'null', 'raw', 'tokens' then Formatters::Null.new
|
|
302
|
+
when 'tex' then Formatters::Tex.new
|
|
302
303
|
else
|
|
303
304
|
error! "unknown formatter preset #{opts[:formatter]}"
|
|
304
305
|
end
|
|
@@ -334,18 +335,30 @@ module Rouge
|
|
|
334
335
|
yield %|respectively. Theme defaults to thankful_eyes.|
|
|
335
336
|
yield %||
|
|
336
337
|
yield %|options:|
|
|
337
|
-
yield %| --scope
|
|
338
|
+
yield %| --scope (default: .highlight) a css selector to scope by|
|
|
339
|
+
yield %| --tex (default: false) render as TeX|
|
|
340
|
+
yield %| --tex-prefix (default: RG) a command prefix for TeX|
|
|
341
|
+
yield %| implies --tex if specified|
|
|
338
342
|
yield %||
|
|
339
343
|
yield %|available themes:|
|
|
340
344
|
yield %| #{Theme.registry.keys.sort.join(', ')}|
|
|
341
345
|
end
|
|
342
346
|
|
|
343
347
|
def self.parse(argv)
|
|
344
|
-
opts = {
|
|
348
|
+
opts = {
|
|
349
|
+
:theme_name => 'thankful_eyes',
|
|
350
|
+
:tex => false,
|
|
351
|
+
:tex_prefix => 'RG'
|
|
352
|
+
}
|
|
345
353
|
|
|
346
354
|
until argv.empty?
|
|
347
355
|
arg = argv.shift
|
|
348
356
|
case arg
|
|
357
|
+
when '--tex'
|
|
358
|
+
opts[:tex] = true
|
|
359
|
+
when '--tex-prefix'
|
|
360
|
+
opts[:tex] = true
|
|
361
|
+
opts[:tex_prefix] = argv.shift
|
|
349
362
|
when /--(\w+)/
|
|
350
363
|
opts[$1.tr('-', '_').to_sym] = argv.shift
|
|
351
364
|
else
|
|
@@ -362,6 +375,10 @@ module Rouge
|
|
|
362
375
|
or error! "unknown theme: #{theme_name}"
|
|
363
376
|
|
|
364
377
|
@theme = theme_class.new(opts)
|
|
378
|
+
if opts[:tex]
|
|
379
|
+
tex_prefix = opts[:tex_prefix]
|
|
380
|
+
@theme = TexThemeRenderer.new(@theme, prefix: tex_prefix)
|
|
381
|
+
end
|
|
365
382
|
end
|
|
366
383
|
|
|
367
384
|
def run
|
data/lib/rouge/demos/bpf
ADDED
data/lib/rouge/formatter.rb
CHANGED
|
@@ -29,7 +29,7 @@ module Rouge
|
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def self.escape_enabled?
|
|
32
|
-
!!(@escape_enabled || Thread.current[:'rouge/with-escape'])
|
|
32
|
+
!!(((defined? @escape_enabled) && @escape_enabled) || Thread.current[:'rouge/with-escape'])
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def self.enable_escape!
|
|
@@ -94,7 +94,7 @@ module Rouge
|
|
|
94
94
|
|
|
95
95
|
out = []
|
|
96
96
|
tokens.each do |tok, val|
|
|
97
|
-
val.scan /\n|[^\n]+/ do |s|
|
|
97
|
+
val.scan %r/\n|[^\n]+/ do |s|
|
|
98
98
|
if s == "\n"
|
|
99
99
|
yield out
|
|
100
100
|
out = []
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
module Rouge
|
|
2
|
+
module Formatters
|
|
3
|
+
class Tex < Formatter
|
|
4
|
+
tag 'tex'
|
|
5
|
+
|
|
6
|
+
# A map of TeX escape characters.
|
|
7
|
+
# Newlines are handled specially by using #token_lines
|
|
8
|
+
# spaces are preserved as long as they aren't at the beginning
|
|
9
|
+
# of a line. see #tag_first for our initial-space strategy
|
|
10
|
+
ESCAPE = {
|
|
11
|
+
'&' => '\&',
|
|
12
|
+
'%' => '\%',
|
|
13
|
+
'$' => '\$',
|
|
14
|
+
'#' => '\#',
|
|
15
|
+
'_' => '\_',
|
|
16
|
+
'{' => '\{',
|
|
17
|
+
'}' => '\}',
|
|
18
|
+
'~' => '{\textasciitilde}',
|
|
19
|
+
'^' => '{\textasciicircum}',
|
|
20
|
+
'|' => '{\textbar}',
|
|
21
|
+
'\\' => '{\textbackslash}',
|
|
22
|
+
"\t" => '{\tab}',
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
ESCAPE_REGEX = /[#{ESCAPE.keys.map(&Regexp.method(:escape)).join}]/om
|
|
26
|
+
|
|
27
|
+
def initialize(opts={})
|
|
28
|
+
@prefix = opts.fetch(:prefix) { 'RG' }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def escape_tex(str)
|
|
32
|
+
str.gsub(ESCAPE_REGEX, ESCAPE)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def stream(tokens, &b)
|
|
36
|
+
# surround the output with \begin{RG*}...\end{RG*}
|
|
37
|
+
yield "\\begin{#{@prefix}*}%\n"
|
|
38
|
+
|
|
39
|
+
# we strip the newline off the last line to avoid
|
|
40
|
+
# an extra line being rendered. we do this by yielding
|
|
41
|
+
# the \newline tag *before* every line group except
|
|
42
|
+
# the first.
|
|
43
|
+
first = true
|
|
44
|
+
|
|
45
|
+
token_lines tokens do |line|
|
|
46
|
+
if first
|
|
47
|
+
first = false
|
|
48
|
+
else
|
|
49
|
+
yield "\\newline%\n"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
render_line(line, &b)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
yield "%\n\\end{#{@prefix}*}%\n"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def render_line(line, &b)
|
|
59
|
+
head, *rest = line
|
|
60
|
+
return unless head
|
|
61
|
+
|
|
62
|
+
tag_first(*head, &b)
|
|
63
|
+
rest.each do |(tok, val)|
|
|
64
|
+
yield tag(tok, val)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# special handling for the first token
|
|
69
|
+
# of a line. we replace all initial spaces
|
|
70
|
+
# with \hphantom{xxxx}, which renders an
|
|
71
|
+
# empty space equal to the size of the x's.
|
|
72
|
+
def tag_first(tok, val)
|
|
73
|
+
leading = nil
|
|
74
|
+
val.sub!(/^[ ]+/) { leading = $&.size; '' }
|
|
75
|
+
yield "\\hphantom{#{'x' * leading}}" if leading
|
|
76
|
+
yield tag(tok, val)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def tag(tok, val)
|
|
80
|
+
if escape?(tok)
|
|
81
|
+
val
|
|
82
|
+
elsif tok == Token::Tokens::Text
|
|
83
|
+
escape_tex(val)
|
|
84
|
+
else
|
|
85
|
+
"\\#@prefix{#{tok.shortname}}{#{escape_tex(val)}}"
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -32,7 +32,7 @@ module Rouge
|
|
|
32
32
|
basename = File.basename(filename)
|
|
33
33
|
|
|
34
34
|
collect_best(lexers) do |lexer|
|
|
35
|
-
|
|
35
|
+
(@glob_map[lexer.name] || []).map do |pattern|
|
|
36
36
|
if test_glob(pattern, basename)
|
|
37
37
|
# specificity is better the fewer wildcards there are
|
|
38
38
|
-pattern.scan(/[*?\[]/).size
|
data/lib/rouge/lexer.rb
CHANGED
|
@@ -114,7 +114,7 @@ module Rouge
|
|
|
114
114
|
def demo_file(arg=:absent)
|
|
115
115
|
return @demo_file = Pathname.new(arg) unless arg == :absent
|
|
116
116
|
|
|
117
|
-
@demo_file = Pathname.new(
|
|
117
|
+
@demo_file = Pathname.new(File.join(__dir__, 'demos', tag))
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
# Specify or get a small demo string for this lexer
|
|
@@ -196,7 +196,7 @@ module Rouge
|
|
|
196
196
|
end
|
|
197
197
|
|
|
198
198
|
def disable_debug!
|
|
199
|
-
remove_instance_variable :@debug_enabled
|
|
199
|
+
remove_instance_variable :@debug_enabled if defined? @debug_enabled
|
|
200
200
|
end
|
|
201
201
|
|
|
202
202
|
def debug_enabled?
|
|
@@ -213,7 +213,7 @@ module Rouge
|
|
|
213
213
|
# @private
|
|
214
214
|
def register(name, lexer)
|
|
215
215
|
# reset an existing list of lexers
|
|
216
|
-
@all = nil if @all
|
|
216
|
+
@all = nil if defined?(@all)
|
|
217
217
|
registry[name.to_s] = lexer
|
|
218
218
|
end
|
|
219
219
|
|
|
@@ -421,17 +421,29 @@ module Rouge
|
|
|
421
421
|
# @option opts :continue
|
|
422
422
|
# Continue the lex from the previous state (i.e. don't call #reset!)
|
|
423
423
|
#
|
|
424
|
-
# @note The use of
|
|
425
|
-
#
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
424
|
+
# @note The use of :continue => true has been deprecated. A warning is
|
|
425
|
+
# issued if run with `$VERBOSE` set to true.
|
|
426
|
+
#
|
|
427
|
+
# @note The use of arbitrary `opts` has never been supported, but we
|
|
428
|
+
# previously ignored them with no error. We now warn unconditionally.
|
|
429
|
+
def lex(string, opts=nil, &b)
|
|
430
|
+
if opts
|
|
431
|
+
if (opts.keys - [:continue]).size > 0
|
|
432
|
+
# improper use of options hash
|
|
433
|
+
warn('Improper use of Lexer#lex - this method does not receive options.' +
|
|
434
|
+
' This will become an error in a future version.')
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
if opts[:continue]
|
|
438
|
+
warn '`lex :continue => true` is deprecated, please use #continue_lex instead'
|
|
439
|
+
return continue_lex(string, &b)
|
|
440
|
+
end
|
|
429
441
|
end
|
|
430
442
|
|
|
431
|
-
return enum_for(:lex, string
|
|
443
|
+
return enum_for(:lex, string) unless block_given?
|
|
432
444
|
|
|
433
445
|
Lexer.assert_utf8!(string)
|
|
434
|
-
reset!
|
|
446
|
+
reset!
|
|
435
447
|
|
|
436
448
|
continue_lex(string, &b)
|
|
437
449
|
end
|
data/lib/rouge/lexers/abap.rb
CHANGED
|
@@ -182,16 +182,16 @@ module Rouge
|
|
|
182
182
|
end
|
|
183
183
|
|
|
184
184
|
state :root do
|
|
185
|
-
rule /\s+/m, Text
|
|
185
|
+
rule %r/\s+/m, Text
|
|
186
186
|
|
|
187
|
-
rule /".*/, Comment::Single
|
|
187
|
+
rule %r/".*/, Comment::Single
|
|
188
188
|
rule %r(^\*.*), Comment::Multiline
|
|
189
|
-
rule /\d+/, Num::Integer
|
|
190
|
-
rule /('|`)/, Str::Single, :single_string
|
|
191
|
-
rule /[\[\]\(\)\{\}
|
|
189
|
+
rule %r/\d+/, Num::Integer
|
|
190
|
+
rule %r/('|`)/, Str::Single, :single_string
|
|
191
|
+
rule %r/[\[\]\(\)\{\}\.,:\|]/, Punctuation
|
|
192
192
|
|
|
193
193
|
# builtins / new ABAP 7.40 keywords (@DATA(), ...)
|
|
194
|
-
rule /(->|=>)?([A-Za-z][A-Za-z0-9_\-]*)(\()/ do |m|
|
|
194
|
+
rule %r/(->|=>)?([A-Za-z][A-Za-z0-9_\-]*)(\()/ do |m|
|
|
195
195
|
if m[1] != ''
|
|
196
196
|
token Operator, m[1]
|
|
197
197
|
end
|
|
@@ -207,7 +207,7 @@ module Rouge
|
|
|
207
207
|
end
|
|
208
208
|
|
|
209
209
|
# keywords, types and normal text
|
|
210
|
-
rule /\w
|
|
210
|
+
rule %r/\w\w*/ do |m|
|
|
211
211
|
if self.class.keywords.include? m[0].upcase
|
|
212
212
|
token Keyword
|
|
213
213
|
elsif self.class.types.include? m[0].downcase
|
|
@@ -229,10 +229,10 @@ module Rouge
|
|
|
229
229
|
end
|
|
230
230
|
|
|
231
231
|
state :single_string do
|
|
232
|
-
rule /\\./, Str::Escape
|
|
233
|
-
rule /(''|``)/, Str::Escape
|
|
234
|
-
rule /['`]/, Str::Single, :pop!
|
|
235
|
-
rule /[^\\'`]+/, Str::Single
|
|
232
|
+
rule %r/\\./, Str::Escape
|
|
233
|
+
rule %r/(''|``)/, Str::Escape
|
|
234
|
+
rule %r/['`]/, Str::Single, :pop!
|
|
235
|
+
rule %r/[^\\'`]+/, Str::Single
|
|
236
236
|
end
|
|
237
237
|
|
|
238
238
|
end
|
|
@@ -13,7 +13,7 @@ module Rouge
|
|
|
13
13
|
mimetypes 'application/x-actionscript'
|
|
14
14
|
|
|
15
15
|
state :comments_and_whitespace do
|
|
16
|
-
rule /\s+/, Text
|
|
16
|
+
rule %r/\s+/, Text
|
|
17
17
|
rule %r(//.*?$), Comment::Single
|
|
18
18
|
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
19
19
|
end
|
|
@@ -26,9 +26,9 @@ module Rouge
|
|
|
26
26
|
goto :regex
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
rule /[{]/, Punctuation, :object
|
|
29
|
+
rule %r/[{]/, Punctuation, :object
|
|
30
30
|
|
|
31
|
-
rule //, Text, :pop!
|
|
31
|
+
rule %r//, Text, :pop!
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
state :regex do
|
|
@@ -39,38 +39,38 @@ module Rouge
|
|
|
39
39
|
|
|
40
40
|
rule %r([^/]\n), Error, :pop!
|
|
41
41
|
|
|
42
|
-
rule /\n/, Error, :pop!
|
|
43
|
-
rule /\[\^/, Str::Escape, :regex_group
|
|
44
|
-
rule /\[/, Str::Escape, :regex_group
|
|
45
|
-
rule /\\./, Str::Escape
|
|
42
|
+
rule %r/\n/, Error, :pop!
|
|
43
|
+
rule %r/\[\^/, Str::Escape, :regex_group
|
|
44
|
+
rule %r/\[/, Str::Escape, :regex_group
|
|
45
|
+
rule %r/\\./, Str::Escape
|
|
46
46
|
rule %r{[(][?][:=<!]}, Str::Escape
|
|
47
|
-
rule /[{][\d,]+[}]/, Str::Escape
|
|
48
|
-
rule /[()?]/, Str::Escape
|
|
49
|
-
rule /./, Str::Regex
|
|
47
|
+
rule %r/[{][\d,]+[}]/, Str::Escape
|
|
48
|
+
rule %r/[()?]/, Str::Escape
|
|
49
|
+
rule %r/./, Str::Regex
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
state :regex_end do
|
|
53
|
-
rule /[gim]+/, Str::Regex, :pop!
|
|
53
|
+
rule %r/[gim]+/, Str::Regex, :pop!
|
|
54
54
|
rule(//) { pop! }
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
state :regex_group do
|
|
58
58
|
# specially highlight / in a group to indicate that it doesn't
|
|
59
59
|
# close the regex
|
|
60
|
-
rule
|
|
60
|
+
rule %r(/), Str::Escape
|
|
61
61
|
|
|
62
62
|
rule %r([^/]\n) do
|
|
63
63
|
token Error
|
|
64
64
|
pop! 2
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
rule /\]/, Str::Escape, :pop!
|
|
68
|
-
rule /\\./, Str::Escape
|
|
69
|
-
rule /./, Str::Regex
|
|
67
|
+
rule %r/\]/, Str::Escape, :pop!
|
|
68
|
+
rule %r/\\./, Str::Escape
|
|
69
|
+
rule %r/./, Str::Regex
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
state :bad_regex do
|
|
73
|
-
rule /[^\n]+/, Error, :pop!
|
|
73
|
+
rule %r/[^\n]+/, Error, :pop!
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
def self.keywords
|
|
@@ -109,25 +109,25 @@ module Rouge
|
|
|
109
109
|
id = /[$a-zA-Z_][a-zA-Z0-9_]*/
|
|
110
110
|
|
|
111
111
|
state :root do
|
|
112
|
-
rule /\A\s*#!.*?\n/m, Comment::Preproc, :statement
|
|
113
|
-
rule /\n/, Text, :statement
|
|
112
|
+
rule %r/\A\s*#!.*?\n/m, Comment::Preproc, :statement
|
|
113
|
+
rule %r/\n/, Text, :statement
|
|
114
114
|
rule %r((?<=\n)(?=\s|/|<!--)), Text, :expr_start
|
|
115
115
|
mixin :comments_and_whitespace
|
|
116
116
|
rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | ===
|
|
117
117
|
| !== )x,
|
|
118
118
|
Operator, :expr_start
|
|
119
119
|
rule %r([:-<>+*%&|\^/!=]=?), Operator, :expr_start
|
|
120
|
-
rule /[(\[,]/, Punctuation, :expr_start
|
|
121
|
-
rule /;/, Punctuation, :statement
|
|
122
|
-
rule /[)\].]/, Punctuation
|
|
120
|
+
rule %r/[(\[,]/, Punctuation, :expr_start
|
|
121
|
+
rule %r/;/, Punctuation, :statement
|
|
122
|
+
rule %r/[)\].]/, Punctuation
|
|
123
123
|
|
|
124
|
-
rule /[?]/ do
|
|
124
|
+
rule %r/[?]/ do
|
|
125
125
|
token Punctuation
|
|
126
126
|
push :ternary
|
|
127
127
|
push :expr_start
|
|
128
128
|
end
|
|
129
129
|
|
|
130
|
-
rule /[{}]/, Punctuation, :statement
|
|
130
|
+
rule %r/[{}]/, Punctuation, :statement
|
|
131
131
|
|
|
132
132
|
rule id do |m|
|
|
133
133
|
if self.class.keywords.include? m[0]
|
|
@@ -147,20 +147,20 @@ module Rouge
|
|
|
147
147
|
end
|
|
148
148
|
end
|
|
149
149
|
|
|
150
|
-
rule /\-?[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
|
|
151
|
-
rule /0x[0-9a-fA-F]+/, Num::Hex
|
|
152
|
-
rule /\-?[0-9]+/, Num::Integer
|
|
153
|
-
rule /"(\\\\|\\"|[^"])*"/, Str::Double
|
|
154
|
-
rule /'(\\\\|\\'|[^'])*'/, Str::Single
|
|
150
|
+
rule %r/\-?[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
|
|
151
|
+
rule %r/0x[0-9a-fA-F]+/, Num::Hex
|
|
152
|
+
rule %r/\-?[0-9]+/, Num::Integer
|
|
153
|
+
rule %r/"(\\\\|\\"|[^"])*"/, Str::Double
|
|
154
|
+
rule %r/'(\\\\|\\'|[^'])*'/, Str::Single
|
|
155
155
|
end
|
|
156
156
|
|
|
157
157
|
# braced parts that aren't object literals
|
|
158
158
|
state :statement do
|
|
159
|
-
rule /(#{id})(\s*)(:)/ do
|
|
159
|
+
rule %r/(#{id})(\s*)(:)/ do
|
|
160
160
|
groups Name::Label, Text, Punctuation
|
|
161
161
|
end
|
|
162
162
|
|
|
163
|
-
rule /[{}]/, Punctuation
|
|
163
|
+
rule %r/[{}]/, Punctuation
|
|
164
164
|
|
|
165
165
|
mixin :expr_start
|
|
166
166
|
end
|
|
@@ -168,23 +168,23 @@ module Rouge
|
|
|
168
168
|
# object literals
|
|
169
169
|
state :object do
|
|
170
170
|
mixin :comments_and_whitespace
|
|
171
|
-
rule /[}]/ do
|
|
171
|
+
rule %r/[}]/ do
|
|
172
172
|
token Punctuation
|
|
173
173
|
goto :statement
|
|
174
174
|
end
|
|
175
175
|
|
|
176
|
-
rule /(#{id})(\s*)(:)/ do
|
|
176
|
+
rule %r/(#{id})(\s*)(:)/ do
|
|
177
177
|
groups Name::Attribute, Text, Punctuation
|
|
178
178
|
push :expr_start
|
|
179
179
|
end
|
|
180
180
|
|
|
181
|
-
rule /:/, Punctuation
|
|
181
|
+
rule %r/:/, Punctuation
|
|
182
182
|
mixin :root
|
|
183
183
|
end
|
|
184
184
|
|
|
185
185
|
# ternary expressions, where <id>: is not a label!
|
|
186
186
|
state :ternary do
|
|
187
|
-
rule /:/ do
|
|
187
|
+
rule %r/:/ do
|
|
188
188
|
token Punctuation
|
|
189
189
|
goto :expr_start
|
|
190
190
|
end
|