rouge 3.2.0 → 3.18.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 +5 -5
- data/Gemfile +17 -3
- data/bin/rougify +1 -0
- data/lib/rouge.rb +67 -43
- data/lib/rouge/cli.rb +84 -17
- data/lib/rouge/demos/ada +26 -0
- data/lib/rouge/demos/apex +9 -0
- data/lib/rouge/demos/armasm +12 -0
- data/lib/rouge/demos/batchfile +3 -0
- data/lib/rouge/demos/bbcbasic +6 -0
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/clean +6 -0
- data/lib/rouge/demos/cmhg +8 -0
- data/lib/rouge/demos/csvs +8 -0
- data/lib/rouge/demos/cuda +11 -0
- data/lib/rouge/demos/cypher +5 -0
- data/lib/rouge/demos/cython +6 -0
- data/lib/rouge/demos/datastudio +21 -0
- data/lib/rouge/demos/ecl +18 -0
- data/lib/rouge/demos/eex +1 -0
- data/lib/rouge/demos/epp +4 -0
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/freefem +16 -0
- data/lib/rouge/demos/gdscript +18 -0
- data/lib/rouge/demos/ghc-cmm +23 -0
- data/lib/rouge/demos/ghc-core +26 -0
- data/lib/rouge/demos/haxe +5 -0
- data/lib/rouge/demos/hocon +8 -0
- data/lib/rouge/demos/hql +5 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/jsl +3 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/liquid +0 -1
- data/lib/rouge/demos/lustre +6 -0
- data/lib/rouge/demos/lutin +18 -0
- data/lib/rouge/demos/m68k +16 -0
- data/lib/rouge/demos/magik +6 -0
- data/lib/rouge/demos/mason +22 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/minizinc +23 -0
- data/lib/rouge/demos/msgtrans +4 -0
- data/lib/rouge/demos/nasm +6 -6
- data/lib/rouge/demos/nesasm +11 -0
- data/lib/rouge/demos/objective_cpp +17 -0
- data/lib/rouge/demos/openedge +4 -0
- data/lib/rouge/demos/opentype_feature_file +6 -0
- data/lib/rouge/demos/plist +1 -132
- data/lib/rouge/demos/powershell +12 -48
- data/lib/rouge/demos/q +6 -0
- data/lib/rouge/demos/reasonml +12 -0
- data/lib/rouge/demos/rego +8 -0
- data/lib/rouge/demos/robot_framework +27 -0
- data/lib/rouge/demos/sas +13 -0
- data/lib/rouge/demos/slice +10 -0
- data/lib/rouge/demos/solidity +13 -0
- data/lib/rouge/demos/sparql +6 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/supercollider +11 -0
- data/lib/rouge/demos/terraform +0 -15
- data/lib/rouge/demos/ttcn3 +6 -0
- data/lib/rouge/demos/vcl +12 -0
- data/lib/rouge/demos/xojo +14 -0
- data/lib/rouge/demos/xpath +2 -0
- data/lib/rouge/demos/xquery +22 -0
- data/lib/rouge/demos/yang +17 -0
- data/lib/rouge/formatter.rb +39 -2
- data/lib/rouge/formatters/html.rb +21 -2
- data/lib/rouge/formatters/html_inline.rb +1 -0
- data/lib/rouge/formatters/html_legacy.rb +1 -0
- data/lib/rouge/formatters/html_line_table.rb +53 -0
- data/lib/rouge/formatters/html_linewise.rb +7 -11
- data/lib/rouge/formatters/html_pygments.rb +2 -0
- data/lib/rouge/formatters/html_table.rb +21 -31
- data/lib/rouge/formatters/null.rb +1 -0
- data/lib/rouge/formatters/terminal256.rb +23 -5
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/formatters/tex.rb +92 -0
- data/lib/rouge/guesser.rb +2 -0
- data/lib/rouge/guessers/disambiguation.rb +35 -0
- data/lib/rouge/guessers/filename.rb +2 -0
- data/lib/rouge/guessers/glob_mapping.rb +3 -1
- data/lib/rouge/guessers/mimetype.rb +2 -0
- data/lib/rouge/guessers/modeline.rb +3 -1
- data/lib/rouge/guessers/source.rb +3 -1
- data/lib/rouge/guessers/util.rb +2 -0
- data/lib/rouge/lexer.rb +71 -15
- data/lib/rouge/lexers/abap.rb +13 -11
- data/lib/rouge/lexers/actionscript.rb +35 -34
- data/lib/rouge/lexers/ada.rb +162 -0
- data/lib/rouge/lexers/apache.rb +13 -15
- data/lib/rouge/lexers/apache/keywords.rb +15 -0
- data/lib/rouge/lexers/apex.rb +126 -0
- data/lib/rouge/lexers/apiblueprint.rb +2 -0
- data/lib/rouge/lexers/apple_script.rb +17 -14
- data/lib/rouge/lexers/armasm.rb +145 -0
- data/lib/rouge/lexers/awk.rb +26 -25
- data/lib/rouge/lexers/batchfile.rb +164 -0
- data/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/lib/rouge/lexers/biml.rb +6 -4
- data/lib/rouge/lexers/bpf.rb +118 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +13 -12
- data/lib/rouge/lexers/c.rb +35 -57
- data/lib/rouge/lexers/ceylon.rb +7 -34
- data/lib/rouge/lexers/cfscript.rb +27 -26
- data/lib/rouge/lexers/clean.rb +156 -0
- data/lib/rouge/lexers/clojure.rb +15 -14
- data/lib/rouge/lexers/cmake.rb +16 -14
- data/lib/rouge/lexers/cmhg.rb +34 -0
- data/lib/rouge/lexers/coffeescript.rb +90 -49
- data/lib/rouge/lexers/common_lisp.rb +39 -38
- data/lib/rouge/lexers/conf.rb +7 -6
- data/lib/rouge/lexers/console.rb +92 -38
- data/lib/rouge/lexers/coq.rb +27 -23
- data/lib/rouge/lexers/cpp.rb +24 -13
- data/lib/rouge/lexers/crystal.rb +71 -70
- data/lib/rouge/lexers/csharp.rb +29 -29
- data/lib/rouge/lexers/css.rb +24 -23
- data/lib/rouge/lexers/csvs.rb +44 -0
- data/lib/rouge/lexers/cuda.rb +35 -0
- data/lib/rouge/lexers/cypher.rb +108 -0
- data/lib/rouge/lexers/cython.rb +151 -0
- data/lib/rouge/lexers/d.rb +64 -63
- data/lib/rouge/lexers/dart.rb +34 -33
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/diff.rb +10 -4
- data/lib/rouge/lexers/digdag.rb +3 -1
- data/lib/rouge/lexers/docker.rb +12 -11
- data/lib/rouge/lexers/dot.rb +19 -18
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/eex.rb +52 -0
- data/lib/rouge/lexers/eiffel.rb +21 -20
- data/lib/rouge/lexers/elixir.rb +52 -36
- data/lib/rouge/lexers/elm.rb +30 -29
- data/lib/rouge/lexers/epp.rb +51 -0
- data/lib/rouge/lexers/erb.rb +5 -4
- data/lib/rouge/lexers/erlang.rb +1 -0
- data/lib/rouge/lexers/escape.rb +58 -0
- data/lib/rouge/lexers/factor.rb +41 -40
- data/lib/rouge/lexers/fortran.rb +34 -32
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/fsharp.rb +33 -31
- data/lib/rouge/lexers/gdscript.rb +171 -0
- data/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/lib/rouge/lexers/ghc_core.rb +151 -0
- data/lib/rouge/lexers/gherkin.rb +17 -14
- data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
- data/lib/rouge/lexers/glsl.rb +2 -5
- data/lib/rouge/lexers/go.rb +3 -2
- data/lib/rouge/lexers/gradle.rb +1 -0
- data/lib/rouge/lexers/graphql.rb +78 -60
- data/lib/rouge/lexers/groovy.rb +24 -25
- data/lib/rouge/lexers/hack.rb +2 -1
- data/lib/rouge/lexers/haml.rb +26 -29
- data/lib/rouge/lexers/handlebars.rb +32 -20
- data/lib/rouge/lexers/haskell.rb +67 -65
- data/lib/rouge/lexers/haxe.rb +246 -0
- data/lib/rouge/lexers/hcl.rb +26 -25
- data/lib/rouge/lexers/hocon.rb +86 -0
- data/lib/rouge/lexers/hql.rb +139 -0
- data/lib/rouge/lexers/html.rb +33 -31
- data/lib/rouge/lexers/http.rb +10 -9
- data/lib/rouge/lexers/hylang.rb +15 -14
- data/lib/rouge/lexers/idlang.rb +34 -32
- data/lib/rouge/lexers/igorpro.rb +32 -31
- data/lib/rouge/lexers/ini.rb +13 -12
- data/lib/rouge/lexers/io.rb +10 -9
- data/lib/rouge/lexers/irb.rb +6 -5
- data/lib/rouge/lexers/isbl.rb +97 -0
- data/lib/rouge/lexers/isbl/builtins.rb +17 -0
- data/lib/rouge/lexers/java.rb +29 -25
- data/lib/rouge/lexers/javascript.rb +58 -61
- data/lib/rouge/lexers/jinja.rb +39 -22
- data/lib/rouge/lexers/jsl.rb +55 -0
- data/lib/rouge/lexers/json.rb +54 -11
- data/lib/rouge/lexers/json_doc.rb +8 -5
- data/lib/rouge/lexers/jsonnet.rb +19 -18
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +18 -16
- data/lib/rouge/lexers/julia.rb +182 -58
- data/lib/rouge/lexers/kotlin.rb +78 -26
- data/lib/rouge/lexers/lasso.rb +54 -58
- data/lib/rouge/lexers/lasso/keywords.rb +14 -0
- data/lib/rouge/lexers/liquid.rb +116 -118
- data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
- data/lib/rouge/lexers/literate_haskell.rb +6 -5
- data/lib/rouge/lexers/llvm.rb +66 -49
- data/lib/rouge/lexers/lua.rb +43 -4
- data/lib/rouge/lexers/lua/builtins.rb +2 -0
- data/lib/rouge/lexers/lustre.rb +79 -0
- data/lib/rouge/lexers/lutin.rb +33 -0
- data/lib/rouge/lexers/m68k.rb +143 -0
- data/lib/rouge/lexers/magik.rb +127 -0
- data/lib/rouge/lexers/make.rb +57 -34
- data/lib/rouge/lexers/markdown.rb +67 -39
- data/lib/rouge/lexers/mason.rb +110 -0
- data/lib/rouge/lexers/mathematica.rb +96 -0
- data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
- data/lib/rouge/lexers/matlab.rb +26 -17
- data/lib/rouge/lexers/matlab/builtins.rb +4 -4
- data/lib/rouge/lexers/minizinc.rb +87 -0
- data/lib/rouge/lexers/moonscript.rb +4 -3
- data/lib/rouge/lexers/mosel.rb +64 -63
- data/lib/rouge/lexers/msgtrans.rb +26 -0
- data/lib/rouge/lexers/mxml.rb +19 -18
- data/lib/rouge/lexers/nasm.rb +43 -169
- data/lib/rouge/lexers/nesasm.rb +78 -0
- data/lib/rouge/lexers/nginx.rb +15 -14
- data/lib/rouge/lexers/nim.rb +4 -2
- data/lib/rouge/lexers/nix.rb +44 -43
- data/lib/rouge/lexers/objective_c.rb +5 -178
- data/lib/rouge/lexers/objective_c/common.rb +184 -0
- data/lib/rouge/lexers/objective_cpp.rb +31 -0
- data/lib/rouge/lexers/ocaml.rb +29 -64
- data/lib/rouge/lexers/ocaml/common.rb +53 -0
- data/lib/rouge/lexers/openedge.rb +429 -0
- data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
- data/lib/rouge/lexers/pascal.rb +6 -5
- data/lib/rouge/lexers/perl.rb +102 -67
- data/lib/rouge/lexers/php.rb +91 -53
- data/lib/rouge/lexers/php/builtins.rb +183 -174
- data/lib/rouge/lexers/plain_text.rb +2 -1
- data/lib/rouge/lexers/plist.rb +16 -14
- data/lib/rouge/lexers/pony.rb +21 -20
- data/lib/rouge/lexers/powershell.rb +190 -638
- data/lib/rouge/lexers/praat.rb +76 -75
- data/lib/rouge/lexers/prolog.rb +27 -19
- data/lib/rouge/lexers/prometheus.rb +32 -30
- data/lib/rouge/lexers/properties.rb +13 -12
- data/lib/rouge/lexers/protobuf.rb +23 -22
- data/lib/rouge/lexers/puppet.rb +33 -32
- data/lib/rouge/lexers/python.rb +124 -99
- data/lib/rouge/lexers/q.rb +17 -14
- data/lib/rouge/lexers/qml.rb +13 -12
- data/lib/rouge/lexers/r.rb +13 -13
- data/lib/rouge/lexers/racket.rb +47 -22
- data/lib/rouge/lexers/reasonml.rb +65 -0
- data/lib/rouge/lexers/rego.rb +45 -0
- data/lib/rouge/lexers/robot_framework.rb +249 -0
- data/lib/rouge/lexers/ruby.rb +88 -71
- data/lib/rouge/lexers/rust.rb +45 -44
- data/lib/rouge/lexers/sas.rb +563 -0
- data/lib/rouge/lexers/sass.rb +9 -8
- data/lib/rouge/lexers/sass/common.rb +41 -40
- data/lib/rouge/lexers/scala.rb +67 -40
- data/lib/rouge/lexers/scheme.rb +19 -18
- data/lib/rouge/lexers/scss.rb +4 -3
- data/lib/rouge/lexers/sed.rb +31 -30
- data/lib/rouge/lexers/shell.rb +67 -55
- data/lib/rouge/lexers/sieve.rb +10 -9
- data/lib/rouge/lexers/slice.rb +32 -0
- data/lib/rouge/lexers/slim.rb +27 -26
- data/lib/rouge/lexers/smalltalk.rb +34 -33
- data/lib/rouge/lexers/smarty.rb +20 -19
- data/lib/rouge/lexers/sml.rb +68 -67
- data/lib/rouge/lexers/solidity.rb +185 -0
- data/lib/rouge/lexers/sparql.rb +129 -0
- data/lib/rouge/lexers/sqf.rb +109 -0
- data/lib/rouge/lexers/sqf/commands.rb +15 -0
- data/lib/rouge/lexers/sql.rb +47 -26
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/swift.rb +49 -44
- data/lib/rouge/lexers/tap.rb +22 -20
- data/lib/rouge/lexers/tcl.rb +28 -27
- data/lib/rouge/lexers/terraform.rb +37 -13
- data/lib/rouge/lexers/tex.rb +20 -19
- data/lib/rouge/lexers/toml.rb +59 -20
- data/lib/rouge/lexers/tsx.rb +1 -0
- data/lib/rouge/lexers/ttcn3.rb +119 -0
- data/lib/rouge/lexers/tulip.rb +38 -36
- data/lib/rouge/lexers/turtle.rb +36 -38
- data/lib/rouge/lexers/twig.rb +1 -0
- data/lib/rouge/lexers/typescript.rb +12 -0
- data/lib/rouge/lexers/typescript/common.rb +1 -0
- data/lib/rouge/lexers/vala.rb +19 -18
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/vb.rb +28 -27
- data/lib/rouge/lexers/verilog.rb +27 -28
- data/lib/rouge/lexers/vhdl.rb +12 -11
- data/lib/rouge/lexers/viml.rb +15 -14
- data/lib/rouge/lexers/viml/keywords.rb +2 -0
- data/lib/rouge/lexers/vue.rb +15 -10
- data/lib/rouge/lexers/wollok.rb +27 -26
- data/lib/rouge/lexers/xml.rb +18 -21
- data/lib/rouge/lexers/xojo.rb +61 -0
- data/lib/rouge/lexers/xpath.rb +332 -0
- data/lib/rouge/lexers/xquery.rb +145 -0
- data/lib/rouge/lexers/yaml.rb +64 -61
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/plugins/redcarpet.rb +9 -2
- data/lib/rouge/regex_lexer.rb +27 -25
- data/lib/rouge/template_lexer.rb +1 -0
- data/lib/rouge/tex_theme_renderer.rb +132 -0
- data/lib/rouge/text_analyzer.rb +1 -0
- data/lib/rouge/theme.rb +5 -0
- data/lib/rouge/themes/base16.rb +1 -0
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/themes/colorful.rb +1 -0
- data/lib/rouge/themes/github.rb +1 -0
- data/lib/rouge/themes/gruvbox.rb +1 -0
- data/lib/rouge/themes/igor_pro.rb +1 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/themes/molokai.rb +1 -0
- data/lib/rouge/themes/monokai.rb +1 -0
- data/lib/rouge/themes/monokai_sublime.rb +4 -1
- data/lib/rouge/themes/pastie.rb +2 -1
- data/lib/rouge/themes/thankful_eyes.rb +2 -1
- data/lib/rouge/themes/tulip.rb +2 -1
- data/lib/rouge/token.rb +31 -22
- data/lib/rouge/util.rb +3 -2
- data/lib/rouge/version.rb +2 -1
- data/rouge.gemspec +6 -3
- metadata +130 -8
- data/lib/rouge/lexers/apache/keywords.yml +0 -764
- data/lib/rouge/lexers/lasso/keywords.yml +0 -446
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -31,8 +32,8 @@ module Rouge
|
|
|
31
32
|
end
|
|
32
33
|
|
|
33
34
|
state :comments_and_whitespace do
|
|
34
|
-
rule /\s+/, Text
|
|
35
|
-
rule /<!--/, Comment # really...?
|
|
35
|
+
rule %r/\s+/, Text
|
|
36
|
+
rule %r/<!--/, Comment # really...?
|
|
36
37
|
rule %r(//.*?$), Comment::Single
|
|
37
38
|
rule %r(/[*]), Comment::Multiline, :multiline_comment
|
|
38
39
|
end
|
|
@@ -45,12 +46,12 @@ module Rouge
|
|
|
45
46
|
goto :regex
|
|
46
47
|
end
|
|
47
48
|
|
|
48
|
-
rule /[{]/ do
|
|
49
|
+
rule %r/[{]/ do
|
|
49
50
|
token Punctuation
|
|
50
51
|
goto :object
|
|
51
52
|
end
|
|
52
53
|
|
|
53
|
-
rule //, Text, :pop!
|
|
54
|
+
rule %r//, Text, :pop!
|
|
54
55
|
end
|
|
55
56
|
|
|
56
57
|
state :regex do
|
|
@@ -61,62 +62,59 @@ module Rouge
|
|
|
61
62
|
|
|
62
63
|
rule %r([^/]\n), Error, :pop!
|
|
63
64
|
|
|
64
|
-
rule /\n/, Error, :pop!
|
|
65
|
-
rule /\[\^/, Str::Escape, :regex_group
|
|
66
|
-
rule /\[/, Str::Escape, :regex_group
|
|
67
|
-
rule /\\./, Str::Escape
|
|
65
|
+
rule %r/\n/, Error, :pop!
|
|
66
|
+
rule %r/\[\^/, Str::Escape, :regex_group
|
|
67
|
+
rule %r/\[/, Str::Escape, :regex_group
|
|
68
|
+
rule %r/\\./, Str::Escape
|
|
68
69
|
rule %r{[(][?][:=<!]}, Str::Escape
|
|
69
|
-
rule /[{][\d,]+[}]/, Str::Escape
|
|
70
|
-
rule /[()?]/, Str::Escape
|
|
71
|
-
rule /./, Str::Regex
|
|
70
|
+
rule %r/[{][\d,]+[}]/, Str::Escape
|
|
71
|
+
rule %r/[()?]/, Str::Escape
|
|
72
|
+
rule %r/./, Str::Regex
|
|
72
73
|
end
|
|
73
74
|
|
|
74
75
|
state :regex_end do
|
|
75
|
-
rule /[
|
|
76
|
+
rule %r/[gimuy]+/, Str::Regex, :pop!
|
|
76
77
|
rule(//) { pop! }
|
|
77
78
|
end
|
|
78
79
|
|
|
79
80
|
state :regex_group do
|
|
80
81
|
# specially highlight / in a group to indicate that it doesn't
|
|
81
82
|
# close the regex
|
|
82
|
-
rule
|
|
83
|
+
rule %r(/), Str::Escape
|
|
83
84
|
|
|
84
85
|
rule %r([^/]\n) do
|
|
85
86
|
token Error
|
|
86
87
|
pop! 2
|
|
87
88
|
end
|
|
88
89
|
|
|
89
|
-
rule /\]/, Str::Escape, :pop!
|
|
90
|
-
rule /\\./, Str::Escape
|
|
91
|
-
rule /./, Str::Regex
|
|
90
|
+
rule %r/\]/, Str::Escape, :pop!
|
|
91
|
+
rule %r/\\./, Str::Escape
|
|
92
|
+
rule %r/./, Str::Regex
|
|
92
93
|
end
|
|
93
94
|
|
|
94
95
|
state :bad_regex do
|
|
95
|
-
rule /[^\n]+/, Error, :pop!
|
|
96
|
+
rule %r/[^\n]+/, Error, :pop!
|
|
96
97
|
end
|
|
97
98
|
|
|
98
99
|
def self.keywords
|
|
99
100
|
@keywords ||= Set.new %w(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
as async await break case catch continue debugger default delete
|
|
102
|
+
do else export finally from for if import in instanceof new of
|
|
103
|
+
return super switch this throw try typeof void while yield
|
|
103
104
|
)
|
|
104
105
|
end
|
|
105
106
|
|
|
106
107
|
def self.declarations
|
|
107
108
|
@declarations ||= Set.new %w(
|
|
108
109
|
var let const with function class
|
|
109
|
-
extends constructor get set
|
|
110
|
+
extends constructor get set static
|
|
110
111
|
)
|
|
111
112
|
end
|
|
112
113
|
|
|
113
114
|
def self.reserved
|
|
114
115
|
@reserved ||= Set.new %w(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
long native package private protected public short static
|
|
118
|
-
synchronized throws transient volatile
|
|
119
|
-
eval arguments await
|
|
116
|
+
enum implements interface
|
|
117
|
+
package private protected public
|
|
120
118
|
)
|
|
121
119
|
end
|
|
122
120
|
|
|
@@ -146,34 +144,34 @@ module Rouge
|
|
|
146
144
|
id = self.id_regex
|
|
147
145
|
|
|
148
146
|
state :root do
|
|
149
|
-
rule /\A\s*#!.*?\n/m, Comment::Preproc, :statement
|
|
147
|
+
rule %r/\A\s*#!.*?\n/m, Comment::Preproc, :statement
|
|
150
148
|
rule %r((?<=\n)(?=\s|/|<!--)), Text, :expr_start
|
|
151
149
|
mixin :comments_and_whitespace
|
|
152
150
|
rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | ===
|
|
153
151
|
| !== )x,
|
|
154
152
|
Operator, :expr_start
|
|
155
153
|
rule %r([-<>+*%&|\^/!=]=?), Operator, :expr_start
|
|
156
|
-
rule /[(\[,]/, Punctuation, :expr_start
|
|
157
|
-
rule /;/, Punctuation, :statement
|
|
158
|
-
rule /[)\].]/, Punctuation
|
|
154
|
+
rule %r/[(\[,]/, Punctuation, :expr_start
|
|
155
|
+
rule %r/;/, Punctuation, :statement
|
|
156
|
+
rule %r/[)\].]/, Punctuation
|
|
159
157
|
|
|
160
|
-
rule /`/ do
|
|
158
|
+
rule %r/`/ do
|
|
161
159
|
token Str::Double
|
|
162
160
|
push :template_string
|
|
163
161
|
end
|
|
164
162
|
|
|
165
|
-
rule /[?]/ do
|
|
163
|
+
rule %r/[?]/ do
|
|
166
164
|
token Punctuation
|
|
167
165
|
push :ternary
|
|
168
166
|
push :expr_start
|
|
169
167
|
end
|
|
170
168
|
|
|
171
|
-
rule /(\@)(\w+)?/ do
|
|
169
|
+
rule %r/(\@)(\w+)?/ do
|
|
172
170
|
groups Punctuation, Name::Decorator
|
|
173
171
|
push :expr_start
|
|
174
172
|
end
|
|
175
173
|
|
|
176
|
-
rule /[{}]/, Punctuation, :statement
|
|
174
|
+
rule %r/[{}]/, Punctuation, :statement
|
|
177
175
|
|
|
178
176
|
rule id do |m|
|
|
179
177
|
if self.class.keywords.include? m[0]
|
|
@@ -193,42 +191,41 @@ module Rouge
|
|
|
193
191
|
end
|
|
194
192
|
end
|
|
195
193
|
|
|
196
|
-
rule /[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
|
|
197
|
-
rule /0x[0-9a-fA-F]+/i, Num::Hex
|
|
198
|
-
rule /0o[0-7][0-7_]*/i, Num::Oct
|
|
199
|
-
rule /0b[01][01_]*/i, Num::Bin
|
|
200
|
-
rule /[0-9]+/, Num::Integer
|
|
194
|
+
rule %r/[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
|
|
195
|
+
rule %r/0x[0-9a-fA-F]+/i, Num::Hex
|
|
196
|
+
rule %r/0o[0-7][0-7_]*/i, Num::Oct
|
|
197
|
+
rule %r/0b[01][01_]*/i, Num::Bin
|
|
198
|
+
rule %r/[0-9]+/, Num::Integer
|
|
201
199
|
|
|
202
|
-
rule /"/, Str::
|
|
203
|
-
rule /'/, Str::
|
|
204
|
-
rule /:/, Punctuation
|
|
200
|
+
rule %r/"/, Str::Delimiter, :dq
|
|
201
|
+
rule %r/'/, Str::Delimiter, :sq
|
|
202
|
+
rule %r/:/, Punctuation
|
|
205
203
|
end
|
|
206
204
|
|
|
207
205
|
state :dq do
|
|
208
|
-
rule
|
|
209
|
-
rule
|
|
210
|
-
rule
|
|
211
|
-
rule /"/, Str::Double, :pop!
|
|
206
|
+
rule %r/\\[\\nrt"]?/, Str::Escape
|
|
207
|
+
rule %r/[^\\"]+/, Str::Double
|
|
208
|
+
rule %r/"/, Str::Delimiter, :pop!
|
|
212
209
|
end
|
|
213
210
|
|
|
214
211
|
state :sq do
|
|
215
|
-
rule
|
|
216
|
-
rule
|
|
217
|
-
rule /'/, Str::
|
|
212
|
+
rule %r/\\[\\nrt']?/, Str::Escape
|
|
213
|
+
rule %r/[^\\']+/, Str::Single
|
|
214
|
+
rule %r/'/, Str::Delimiter, :pop!
|
|
218
215
|
end
|
|
219
216
|
|
|
220
217
|
# braced parts that aren't object literals
|
|
221
218
|
state :statement do
|
|
222
|
-
rule /case\b/ do
|
|
219
|
+
rule %r/case\b/ do
|
|
223
220
|
token Keyword
|
|
224
221
|
goto :expr_start
|
|
225
222
|
end
|
|
226
223
|
|
|
227
|
-
rule /(#{id})(\s*)(:)/ do
|
|
224
|
+
rule %r/(#{id})(\s*)(:)/ do
|
|
228
225
|
groups Name::Label, Text, Punctuation
|
|
229
226
|
end
|
|
230
227
|
|
|
231
|
-
rule /[{}]/, Punctuation
|
|
228
|
+
rule %r/[{}]/, Punctuation
|
|
232
229
|
|
|
233
230
|
mixin :expr_start
|
|
234
231
|
end
|
|
@@ -237,28 +234,28 @@ module Rouge
|
|
|
237
234
|
state :object do
|
|
238
235
|
mixin :comments_and_whitespace
|
|
239
236
|
|
|
240
|
-
rule /[{]/ do
|
|
237
|
+
rule %r/[{]/ do
|
|
241
238
|
token Punctuation
|
|
242
239
|
push
|
|
243
240
|
end
|
|
244
241
|
|
|
245
|
-
rule /[}]/ do
|
|
242
|
+
rule %r/[}]/ do
|
|
246
243
|
token Punctuation
|
|
247
244
|
goto :statement
|
|
248
245
|
end
|
|
249
246
|
|
|
250
|
-
rule /(#{id})(\s*)(:)/ do
|
|
247
|
+
rule %r/(#{id})(\s*)(:)/ do
|
|
251
248
|
groups Name::Attribute, Text, Punctuation
|
|
252
249
|
push :expr_start
|
|
253
250
|
end
|
|
254
251
|
|
|
255
|
-
rule /:/, Punctuation
|
|
252
|
+
rule %r/:/, Punctuation
|
|
256
253
|
mixin :root
|
|
257
254
|
end
|
|
258
255
|
|
|
259
256
|
# ternary expressions, where <id>: is not a label!
|
|
260
257
|
state :ternary do
|
|
261
|
-
rule /:/ do
|
|
258
|
+
rule %r/:/ do
|
|
262
259
|
token Punctuation
|
|
263
260
|
goto :expr_start
|
|
264
261
|
end
|
|
@@ -268,13 +265,13 @@ module Rouge
|
|
|
268
265
|
|
|
269
266
|
# template strings
|
|
270
267
|
state :template_string do
|
|
271
|
-
rule /\${/, Punctuation, :template_string_expr
|
|
272
|
-
rule /`/, Str::Double, :pop!
|
|
273
|
-
rule /(\\\\|\\[\$`]|[^\$`]|\$(?!{))*/, Str::Double
|
|
268
|
+
rule %r/\${/, Punctuation, :template_string_expr
|
|
269
|
+
rule %r/`/, Str::Double, :pop!
|
|
270
|
+
rule %r/(\\\\|\\[\$`]|[^\$`]|\$(?!{))*/, Str::Double
|
|
274
271
|
end
|
|
275
272
|
|
|
276
273
|
state :template_string_expr do
|
|
277
|
-
rule /}/, Punctuation, :pop!
|
|
274
|
+
rule %r/}/, Punctuation, :pop!
|
|
278
275
|
mixin :root
|
|
279
276
|
end
|
|
280
277
|
end
|
data/lib/rouge/lexers/jinja.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -36,82 +37,89 @@ module Rouge
|
|
|
36
37
|
|
|
37
38
|
state :root do
|
|
38
39
|
# Comments
|
|
39
|
-
rule /{#/, Comment, :comment
|
|
40
|
+
rule %r/{#/, Comment, :comment
|
|
41
|
+
rule %r/##.*/, Comment
|
|
40
42
|
|
|
41
43
|
# Statements
|
|
42
|
-
rule /\{\%/ do
|
|
44
|
+
rule %r/\{\%/ do
|
|
43
45
|
token Comment::Preproc
|
|
44
46
|
push :statement
|
|
45
47
|
end
|
|
46
48
|
|
|
47
49
|
# Expressions
|
|
48
|
-
rule /\{\{/ do
|
|
50
|
+
rule %r/\{\{/ do
|
|
49
51
|
token Comment::Preproc
|
|
50
52
|
push :expression
|
|
51
53
|
end
|
|
52
54
|
|
|
53
|
-
rule(/(.+?)(?=\\|{{|{%|{
|
|
55
|
+
rule(/(.+?)(?=\\|{{|{%|{#|##)/m) { delegate parent }
|
|
54
56
|
rule(/.+/m) { delegate parent }
|
|
55
57
|
end
|
|
56
58
|
|
|
57
59
|
state :filter do
|
|
58
60
|
# Filters are called like variable|foo(arg1, ...)
|
|
59
|
-
rule /(
|
|
61
|
+
rule %r/(\|\s*)(\w+)/ do
|
|
60
62
|
groups Operator, Name::Function
|
|
61
63
|
end
|
|
62
64
|
end
|
|
63
65
|
|
|
64
66
|
state :function do
|
|
65
|
-
rule /(\w+)(\()/ do
|
|
67
|
+
rule %r/(\w+)(\()/ do
|
|
66
68
|
groups Name::Function, Punctuation
|
|
67
69
|
end
|
|
68
70
|
end
|
|
69
71
|
|
|
70
72
|
state :text do
|
|
71
|
-
rule /\s+/m, Text
|
|
73
|
+
rule %r/\s+/m, Text
|
|
72
74
|
end
|
|
73
75
|
|
|
74
76
|
state :literal do
|
|
75
77
|
# Strings
|
|
76
|
-
rule /"(\\.|.)*?"/, Str::Double
|
|
77
|
-
rule /'(\\.|.)*?'/, Str::Single
|
|
78
|
+
rule %r/"(\\.|.)*?"/, Str::Double
|
|
79
|
+
rule %r/'(\\.|.)*?'/, Str::Single
|
|
78
80
|
|
|
79
81
|
# Numbers
|
|
80
|
-
rule /\d+(?=}\s)/, Num
|
|
82
|
+
rule %r/\d+(?=}\s)/, Num
|
|
81
83
|
|
|
82
84
|
# Arithmetic operators (+, -, *, **, //, /)
|
|
83
85
|
# TODO : implement modulo (%)
|
|
84
|
-
rule /(
|
|
86
|
+
rule %r/(\+|\-|\*|\/\/?|\*\*?|=)/, Operator
|
|
85
87
|
|
|
86
88
|
# Comparisons operators (<=, <, >=, >, ==, ===, !=)
|
|
87
|
-
rule /(<=?|>=?|===?|!=)/, Operator
|
|
89
|
+
rule %r/(<=?|>=?|===?|!=)/, Operator
|
|
88
90
|
|
|
89
91
|
# Punctuation (the comma, [], ())
|
|
90
|
-
rule /,/, Punctuation
|
|
91
|
-
rule /\[/, Punctuation
|
|
92
|
-
rule /\]/, Punctuation
|
|
93
|
-
rule /\(/, Punctuation
|
|
94
|
-
rule /\)/, Punctuation
|
|
92
|
+
rule %r/,/, Punctuation
|
|
93
|
+
rule %r/\[/, Punctuation
|
|
94
|
+
rule %r/\]/, Punctuation
|
|
95
|
+
rule %r/\(/, Punctuation
|
|
96
|
+
rule %r/\)/, Punctuation
|
|
95
97
|
end
|
|
96
98
|
|
|
97
99
|
state :comment do
|
|
98
|
-
rule
|
|
100
|
+
rule %r/[^#]+/m, Comment
|
|
99
101
|
rule(/#}/) { token Comment; pop! }
|
|
102
|
+
rule %r/#/, Comment
|
|
100
103
|
end
|
|
101
104
|
|
|
102
105
|
state :expression do
|
|
103
|
-
rule /\w+\.?/m, Name::Variable
|
|
106
|
+
rule %r/\w+\.?/m, Name::Variable
|
|
104
107
|
|
|
105
108
|
mixin :filter
|
|
106
109
|
mixin :function
|
|
107
110
|
mixin :literal
|
|
108
111
|
mixin :text
|
|
109
112
|
|
|
110
|
-
rule /%}|}}/, Comment::Preproc, :pop!
|
|
113
|
+
rule %r/%}|}}/, Comment::Preproc, :pop!
|
|
111
114
|
end
|
|
112
115
|
|
|
113
116
|
state :statement do
|
|
114
|
-
rule /(\
|
|
117
|
+
rule %r/(raw|verbatim)(\s+)(\%\})/ do
|
|
118
|
+
groups Keyword, Text, Comment::Preproc
|
|
119
|
+
goto :raw
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
rule %r/(\w+\.?)/ do |m|
|
|
115
123
|
if self.class.keywords.include?(m[0])
|
|
116
124
|
groups Keyword
|
|
117
125
|
elsif self.class.pseudo_keywords.include?(m[0])
|
|
@@ -130,7 +138,16 @@ module Rouge
|
|
|
130
138
|
mixin :literal
|
|
131
139
|
mixin :text
|
|
132
140
|
|
|
133
|
-
rule /\%\}/, Comment::Preproc, :pop!
|
|
141
|
+
rule %r/\%\}/, Comment::Preproc, :pop!
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
state :raw do
|
|
145
|
+
rule %r{(\{\%)(\s+)(endverbatim|endraw)(\s+)(\%\})} do
|
|
146
|
+
groups Comment::Preproc, Text, Keyword, Text, Comment::Preproc
|
|
147
|
+
pop!
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
rule %r/(.+?)/m, Text
|
|
134
151
|
end
|
|
135
152
|
end
|
|
136
153
|
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class JSL < RegexLexer
|
|
7
|
+
title "JSL"
|
|
8
|
+
desc "The JMP Scripting Language (JSL) (jmp.com)"
|
|
9
|
+
|
|
10
|
+
tag 'jsl'
|
|
11
|
+
filenames '*.jsl'
|
|
12
|
+
|
|
13
|
+
state :root do
|
|
14
|
+
rule %r/\s+/m, Text::Whitespace
|
|
15
|
+
|
|
16
|
+
rule %r(//.*?$), Comment::Single
|
|
17
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
18
|
+
|
|
19
|
+
# messages
|
|
20
|
+
rule %r/(<<)(.*?)(\(|;)/ do |m|
|
|
21
|
+
groups Operator, Name::Function, Punctuation
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# covers built-in and custom functions
|
|
25
|
+
rule %r/([a-z_][\w\s'%.\\]*)(\()/i do |m|
|
|
26
|
+
groups Keyword, Punctuation
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
rule %r/\b[+-]?(?:[0-9]+(?:\.[0-9]+)?|\.[0-9]+|\.)(?:e[+-]?[0-9]+)?i?\b/i, Num
|
|
30
|
+
|
|
31
|
+
rule %r/\d{2}(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}(\d{2})?(:\d{2}:\d{2}(:\d{2}(\.\d*)?)?)?/i, Literal::Date
|
|
32
|
+
|
|
33
|
+
rule %r/::[a-z_][\w\s'%.\\]*/i, Name::Variable
|
|
34
|
+
rule %r/:\w+/, Name
|
|
35
|
+
rule %r/[a-z_][\w\s'%.\\]*/i, Name::Variable
|
|
36
|
+
rule %r/"(?:\\!"|[^"])*?"n/m, Name::Variable
|
|
37
|
+
|
|
38
|
+
rule %r/(")(\\\[)(.*?)(\]\\)(")/m do
|
|
39
|
+
groups Str::Double, Str::Escape, Str::Double, Str::Escape, Str::Double # escaped string
|
|
40
|
+
end
|
|
41
|
+
rule %r/"/, Str::Double, :dq
|
|
42
|
+
|
|
43
|
+
rule %r/[-+*\/!%&<>\|=:]/, Operator
|
|
44
|
+
rule %r/[\[\](){},;]/, Punctuation
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
state :dq do
|
|
48
|
+
rule %r/\\![btrnNf0\\"]/, Str::Escape
|
|
49
|
+
rule %r/\\/, Str::Double
|
|
50
|
+
rule %r/"/, Str::Double, :pop!
|
|
51
|
+
rule %r/[^\\"]*/m, Str::Double
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|