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
|
|
@@ -13,38 +14,38 @@ module Rouge
|
|
|
13
14
|
identifier = /[\w.-]+/
|
|
14
15
|
|
|
15
16
|
state :basic do
|
|
16
|
-
rule /[!#].*?\n/, Comment
|
|
17
|
-
rule /\s+/, Text
|
|
18
|
-
rule /\\\n/, Str::Escape
|
|
17
|
+
rule %r/[!#].*?\n/, Comment
|
|
18
|
+
rule %r/\s+/, Text
|
|
19
|
+
rule %r/\\\n/, Str::Escape
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
state :root do
|
|
22
23
|
mixin :basic
|
|
23
24
|
|
|
24
|
-
rule /(#{identifier})(\s*)([=:])/ do
|
|
25
|
+
rule %r/(#{identifier})(\s*)([=:])/ do
|
|
25
26
|
groups Name::Property, Text, Punctuation
|
|
26
27
|
push :value
|
|
27
28
|
end
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
state :value do
|
|
31
|
-
rule /\n/, Text, :pop!
|
|
32
|
+
rule %r/\n/, Text, :pop!
|
|
32
33
|
mixin :basic
|
|
33
|
-
rule /"/, Str, :dq
|
|
34
|
-
rule /'.*?'/, Str
|
|
34
|
+
rule %r/"/, Str, :dq
|
|
35
|
+
rule %r/'.*?'/, Str
|
|
35
36
|
mixin :esc_str
|
|
36
|
-
rule /[^\\\n]+/, Str
|
|
37
|
+
rule %r/[^\\\n]+/, Str
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
state :dq do
|
|
40
|
-
rule /"/, Str, :pop!
|
|
41
|
+
rule %r/"/, Str, :pop!
|
|
41
42
|
mixin :esc_str
|
|
42
|
-
rule /[^\\"]+/m, Str
|
|
43
|
+
rule %r/[^\\"]+/m, Str
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
state :esc_str do
|
|
46
|
-
rule /\\u[0-9]{4}/, Str::Escape
|
|
47
|
-
rule /\\./m, Str::Escape
|
|
47
|
+
rule %r/\\u[0-9]{4}/, Str::Escape
|
|
48
|
+
rule %r/\\./m, Str::Escape
|
|
48
49
|
end
|
|
49
50
|
end
|
|
50
51
|
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -14,55 +15,55 @@ module Rouge
|
|
|
14
15
|
datatype = /\b(bool|bytes|double|fixed32|fixed64|float|int32|int64|sfixed32|sfixed64|sint32|sint64|string|uint32|uint64)\b/
|
|
15
16
|
|
|
16
17
|
state :root do
|
|
17
|
-
rule /[\s]+/, Text
|
|
18
|
-
rule /[,;{}\[\]()]/, Punctuation
|
|
19
|
-
rule /\/(\\\n)?\/(
|
|
20
|
-
rule /\/(\\\n)?\*(.|\n)*?\*(\\\n)?\//, Comment::Multiline
|
|
18
|
+
rule %r/[\s]+/, Text
|
|
19
|
+
rule %r/[,;{}\[\]()]/, Punctuation
|
|
20
|
+
rule %r/\/(\\\n)?\/($|(.|\n)*?[^\\]$)/, Comment::Single
|
|
21
|
+
rule %r/\/(\\\n)?\*(.|\n)*?\*(\\\n)?\//, Comment::Multiline
|
|
21
22
|
rule kw, Keyword
|
|
22
23
|
rule datatype, Keyword::Type
|
|
23
|
-
rule /true|false/, Keyword::Constant
|
|
24
|
-
rule /(package)(\s+)/ do
|
|
24
|
+
rule %r/true|false/, Keyword::Constant
|
|
25
|
+
rule %r/(package)(\s+)/ do
|
|
25
26
|
groups Keyword::Namespace, Text
|
|
26
27
|
push :package
|
|
27
28
|
end
|
|
28
29
|
|
|
29
|
-
rule /(message|extend)(\s+)/ do
|
|
30
|
+
rule %r/(message|extend)(\s+)/ do
|
|
30
31
|
groups Keyword::Declaration, Text
|
|
31
32
|
push :message
|
|
32
33
|
end
|
|
33
34
|
|
|
34
|
-
rule /(enum|group|service)(\s+)/ do
|
|
35
|
+
rule %r/(enum|group|service)(\s+)/ do
|
|
35
36
|
groups Keyword::Declaration, Text
|
|
36
37
|
push :type
|
|
37
38
|
end
|
|
38
39
|
|
|
39
|
-
rule /".*?"/, Str
|
|
40
|
-
rule /'.*?'/, Str
|
|
41
|
-
rule /(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*/, Num::Float
|
|
42
|
-
rule /(\d+\.\d*|\.\d+|\d+[fF])[fF]?/, Num::Float
|
|
43
|
-
rule /(\-?(inf|nan))\b/, Num::Float
|
|
44
|
-
rule /0x[0-9a-fA-F]+[LlUu]*/, Num::Hex
|
|
45
|
-
rule /0[0-7]+[LlUu]*/, Num::Oct
|
|
46
|
-
rule /\d+[LlUu]*/, Num::Integer
|
|
47
|
-
rule /[+-=]/, Operator
|
|
48
|
-
rule /([a-zA-Z_][\w.]*)([ \t]*)(=)/ do
|
|
40
|
+
rule %r/".*?"/, Str
|
|
41
|
+
rule %r/'.*?'/, Str
|
|
42
|
+
rule %r/(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*/, Num::Float
|
|
43
|
+
rule %r/(\d+\.\d*|\.\d+|\d+[fF])[fF]?/, Num::Float
|
|
44
|
+
rule %r/(\-?(inf|nan))\b/, Num::Float
|
|
45
|
+
rule %r/0x[0-9a-fA-F]+[LlUu]*/, Num::Hex
|
|
46
|
+
rule %r/0[0-7]+[LlUu]*/, Num::Oct
|
|
47
|
+
rule %r/\d+[LlUu]*/, Num::Integer
|
|
48
|
+
rule %r/[+-=]/, Operator
|
|
49
|
+
rule %r/([a-zA-Z_][\w.]*)([ \t]*)(=)/ do
|
|
49
50
|
groups Name::Attribute, Text, Operator
|
|
50
51
|
end
|
|
51
|
-
rule /[a-zA-Z_][\w.]*/, Name
|
|
52
|
+
rule %r/[a-zA-Z_][\w.]*/, Name
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
state :package do
|
|
55
|
-
rule /[a-zA-Z_]\w*/, Name::Namespace, :pop!
|
|
56
|
+
rule %r/[a-zA-Z_]\w*/, Name::Namespace, :pop!
|
|
56
57
|
rule(//) { pop! }
|
|
57
58
|
end
|
|
58
59
|
|
|
59
60
|
state :message do
|
|
60
|
-
rule /[a-zA-Z_]\w*/, Name::Class, :pop!
|
|
61
|
+
rule %r/[a-zA-Z_]\w*/, Name::Class, :pop!
|
|
61
62
|
rule(//) { pop! }
|
|
62
63
|
end
|
|
63
64
|
|
|
64
65
|
state :type do
|
|
65
|
-
rule /[a-zA-Z_]\w*/, Name, :pop!
|
|
66
|
+
rule %r/[a-zA-Z_]\w*/, Name, :pop!
|
|
66
67
|
rule(//) { pop! }
|
|
67
68
|
end
|
|
68
69
|
end
|
data/lib/rouge/lexers/puppet.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
|
|
@@ -38,15 +39,15 @@ module Rouge
|
|
|
38
39
|
qualname = /(::)?(#{id}::)*\w+/
|
|
39
40
|
|
|
40
41
|
state :whitespace do
|
|
41
|
-
rule /\s+/m, Text
|
|
42
|
-
rule /#.*?\n/, Comment
|
|
42
|
+
rule %r/\s+/m, Text
|
|
43
|
+
rule %r/#.*?\n/, Comment
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
state :root do
|
|
46
47
|
mixin :whitespace
|
|
47
48
|
|
|
48
|
-
rule /[$]#{qualname}/, Name::Variable
|
|
49
|
-
rule /(#{id})(?=\s*[=+]>)/m do |m|
|
|
49
|
+
rule %r/[$]#{qualname}/, Name::Variable
|
|
50
|
+
rule %r/(#{id})(?=\s*[=+]>)/m do |m|
|
|
50
51
|
if self.class.metaparameters.include? m[0]
|
|
51
52
|
token Keyword::Pseudo
|
|
52
53
|
else
|
|
@@ -54,31 +55,31 @@ module Rouge
|
|
|
54
55
|
end
|
|
55
56
|
end
|
|
56
57
|
|
|
57
|
-
rule /(#{qualname})(?=\s*[(])/m, Name::Function
|
|
58
|
+
rule %r/(#{qualname})(?=\s*[(])/m, Name::Function
|
|
58
59
|
rule cap_id, Name::Class
|
|
59
60
|
|
|
60
|
-
rule /[+=|~-]>|<[|~-]/, Punctuation
|
|
61
|
-
rule /[
|
|
61
|
+
rule %r/[+=|~-]>|<[|~-]/, Punctuation
|
|
62
|
+
rule %r/[|:}();\[\]]/, Punctuation
|
|
62
63
|
|
|
63
64
|
# HACK for case statements and selectors
|
|
64
|
-
rule /{/, Punctuation, :regex_allowed
|
|
65
|
-
rule /,/, Punctuation, :regex_allowed
|
|
65
|
+
rule %r/{/, Punctuation, :regex_allowed
|
|
66
|
+
rule %r/,/, Punctuation, :regex_allowed
|
|
66
67
|
|
|
67
|
-
rule /(in|and|or)\b/, Operator::Word
|
|
68
|
-
rule /[=!<>]=/, Operator
|
|
69
|
-
rule /[=!]~/, Operator, :regex_allowed
|
|
70
|
-
rule %r([
|
|
68
|
+
rule %r/(in|and|or)\b/, Operator::Word
|
|
69
|
+
rule %r/[=!<>]=/, Operator
|
|
70
|
+
rule %r/[=!]~/, Operator, :regex_allowed
|
|
71
|
+
rule %r([.=<>!+*/-]), Operator
|
|
71
72
|
|
|
72
|
-
rule /(class|include)(\s*)(#{qualname})/ do
|
|
73
|
+
rule %r/(class|include)(\s*)(#{qualname})/ do
|
|
73
74
|
groups Keyword, Text, Name::Class
|
|
74
75
|
end
|
|
75
76
|
|
|
76
|
-
rule /node\b/, Keyword, :regex_allowed
|
|
77
|
+
rule %r/node\b/, Keyword, :regex_allowed
|
|
77
78
|
|
|
78
|
-
rule /'(\\[\\']|[^'])*'/m, Str::Single
|
|
79
|
-
rule /"/, Str::Double, :dquotes
|
|
79
|
+
rule %r/'(\\[\\']|[^'])*'/m, Str::Single
|
|
80
|
+
rule %r/"/, Str::Double, :dquotes
|
|
80
81
|
|
|
81
|
-
rule /\d+([.]\d+)?(e[+-]\d+)?/, Num
|
|
82
|
+
rule %r/\d+([.]\d+)?(e[+-]\d+)?/, Num
|
|
82
83
|
|
|
83
84
|
# a valid regex. TODO: regexes are only allowed
|
|
84
85
|
# in certain places in puppet.
|
|
@@ -102,26 +103,26 @@ module Rouge
|
|
|
102
103
|
|
|
103
104
|
state :regex do
|
|
104
105
|
rule %r(/), Str::Regex, :pop!
|
|
105
|
-
rule /\\./, Str::Escape
|
|
106
|
-
rule /[(){}]/, Str::Interpol
|
|
107
|
-
rule /\[/, Str::Interpol, :regex_class
|
|
108
|
-
rule /./, Str::Regex
|
|
106
|
+
rule %r/\\./, Str::Escape
|
|
107
|
+
rule %r/[(){}]/, Str::Interpol
|
|
108
|
+
rule %r/\[/, Str::Interpol, :regex_class
|
|
109
|
+
rule %r/./, Str::Regex
|
|
109
110
|
end
|
|
110
111
|
|
|
111
112
|
state :regex_class do
|
|
112
|
-
rule /\]/, Str::Interpol, :pop!
|
|
113
|
-
rule /(?<!\[)-(?=\])/, Str::Regex
|
|
114
|
-
rule /-/, Str::Interpol
|
|
115
|
-
rule /\\./, Str::Escape
|
|
116
|
-
rule /[^\\\]-]+/, Str::Regex
|
|
113
|
+
rule %r/\]/, Str::Interpol, :pop!
|
|
114
|
+
rule %r/(?<!\[)-(?=\])/, Str::Regex
|
|
115
|
+
rule %r/-/, Str::Interpol
|
|
116
|
+
rule %r/\\./, Str::Escape
|
|
117
|
+
rule %r/[^\\\]-]+/, Str::Regex
|
|
117
118
|
end
|
|
118
119
|
|
|
119
120
|
state :dquotes do
|
|
120
|
-
rule /"/, Str::Double, :pop!
|
|
121
|
-
rule /[^$\\"]+/m, Str::Double
|
|
122
|
-
rule /\\./m, Str::Escape
|
|
123
|
-
rule /[$]#{qualname}/, Name::Variable
|
|
124
|
-
rule /[$][{]#{qualname}[}]/, Name::Variable
|
|
121
|
+
rule %r/"/, Str::Double, :pop!
|
|
122
|
+
rule %r/[^$\\"]+/m, Str::Double
|
|
123
|
+
rule %r/\\./m, Str::Escape
|
|
124
|
+
rule %r/[$]#{qualname}/, Name::Variable
|
|
125
|
+
rule %r/[$][{]#{qualname}[}]/, Name::Variable
|
|
125
126
|
end
|
|
126
127
|
end
|
|
127
128
|
end
|
data/lib/rouge/lexers/python.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
|
|
@@ -7,11 +8,12 @@ module Rouge
|
|
|
7
8
|
desc "The Python programming language (python.org)"
|
|
8
9
|
tag 'python'
|
|
9
10
|
aliases 'py'
|
|
10
|
-
filenames '*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac'
|
|
11
|
+
filenames '*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac',
|
|
12
|
+
'*.bzl', 'BUCK', 'BUILD', 'BUILD.bazel', 'WORKSPACE'
|
|
11
13
|
mimetypes 'text/x-python', 'application/x-python'
|
|
12
14
|
|
|
13
15
|
def self.detect?(text)
|
|
14
|
-
return true if text.shebang?(/pythonw?(
|
|
16
|
+
return true if text.shebang?(/pythonw?(?:[23](?:\.\d+)?)?/)
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
def self.keywords
|
|
@@ -19,18 +21,18 @@ module Rouge
|
|
|
19
21
|
assert break continue del elif else except exec
|
|
20
22
|
finally for global if lambda pass print raise
|
|
21
23
|
return try while yield as with from import yield
|
|
22
|
-
async await
|
|
24
|
+
async await nonlocal
|
|
23
25
|
)
|
|
24
26
|
end
|
|
25
27
|
|
|
26
28
|
def self.builtins
|
|
27
29
|
@builtins ||= %w(
|
|
28
|
-
__import__ abs all any apply basestring bin bool buffer
|
|
30
|
+
__import__ abs all any apply ascii basestring bin bool buffer
|
|
29
31
|
bytearray bytes callable chr classmethod cmp coerce compile
|
|
30
32
|
complex delattr dict dir divmod enumerate eval execfile exit
|
|
31
|
-
file filter float frozenset getattr globals hasattr hash hex id
|
|
33
|
+
file filter float format frozenset getattr globals hasattr hash hex id
|
|
32
34
|
input int intern isinstance issubclass iter len list locals
|
|
33
|
-
long map max min next object oct open ord pow property range
|
|
35
|
+
long map max memoryview min next object oct open ord pow property range
|
|
34
36
|
raw_input reduce reload repr reversed round set setattr slice
|
|
35
37
|
sorted staticmethod str sum super tuple type unichr unicode
|
|
36
38
|
vars xrange zip
|
|
@@ -44,15 +46,21 @@ module Rouge
|
|
|
44
46
|
def self.exceptions
|
|
45
47
|
@exceptions ||= %w(
|
|
46
48
|
ArithmeticError AssertionError AttributeError
|
|
47
|
-
BaseException
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
BaseException BlockingIOError BrokenPipeError BufferError
|
|
50
|
+
BytesWarning ChildProcessError ConnectionAbortedError
|
|
51
|
+
ConnectionError ConnectionRefusedError ConnectionResetError
|
|
52
|
+
DeprecationWarning EOFError EnvironmentError
|
|
53
|
+
Exception FileExistsError FileNotFoundError
|
|
54
|
+
FloatingPointError FutureWarning GeneratorExit IOError
|
|
55
|
+
ImportError ImportWarning IndentationError IndexError
|
|
56
|
+
InterruptedError IsADirectoryError KeyError KeyboardInterrupt
|
|
57
|
+
LookupError MemoryError ModuleNotFoundError NameError
|
|
58
|
+
NotADirectoryError NotImplemented NotImplementedError OSError
|
|
59
|
+
OverflowError OverflowWarning PendingDeprecationWarning
|
|
60
|
+
ProcessLookupError RecursionError ReferenceError ResourceWarning
|
|
61
|
+
RuntimeError RuntimeWarning StandardError StopAsyncIteration
|
|
62
|
+
StopIteration SyntaxError SyntaxWarning SystemError SystemExit
|
|
63
|
+
TabError TimeoutError TypeError UnboundLocalError UnicodeDecodeError
|
|
56
64
|
UnicodeEncodeError UnicodeError UnicodeTranslateError
|
|
57
65
|
UnicodeWarning UserWarning ValueError VMSError Warning
|
|
58
66
|
WindowsError ZeroDivisionError
|
|
@@ -61,22 +69,28 @@ module Rouge
|
|
|
61
69
|
|
|
62
70
|
identifier = /[a-z_][a-z0-9_]*/i
|
|
63
71
|
dotted_identifier = /[a-z_.][a-z0-9_.]*/i
|
|
72
|
+
|
|
73
|
+
def current_string
|
|
74
|
+
@string_register ||= StringRegister.new
|
|
75
|
+
end
|
|
76
|
+
|
|
64
77
|
state :root do
|
|
65
|
-
rule /\n+/m, Text
|
|
66
|
-
rule /^(:)(\s*)([ru]{,2}""".*?""")/mi do
|
|
78
|
+
rule %r/\n+/m, Text
|
|
79
|
+
rule %r/^(:)(\s*)([ru]{,2}""".*?""")/mi do
|
|
67
80
|
groups Punctuation, Text, Str::Doc
|
|
68
81
|
end
|
|
69
82
|
|
|
70
|
-
rule /[^\S\n]+/, Text
|
|
71
|
-
rule
|
|
72
|
-
rule /[\[\]{}:()
|
|
73
|
-
rule /\\\n/, Text
|
|
74
|
-
rule /\\/, Text
|
|
83
|
+
rule %r/[^\S\n]+/, Text
|
|
84
|
+
rule %r(#(.*)?\n?), Comment::Single
|
|
85
|
+
rule %r/[\[\]{}:(),;.]/, Punctuation
|
|
86
|
+
rule %r/\\\n/, Text
|
|
87
|
+
rule %r/\\/, Text
|
|
75
88
|
|
|
76
|
-
rule /(in|is|and|or|not)\b/, Operator::Word
|
|
77
|
-
rule
|
|
89
|
+
rule %r/(in|is|and|or|not)\b/, Operator::Word
|
|
90
|
+
rule %r/(<<|>>|\/\/|\*\*)=?/, Operator
|
|
91
|
+
rule %r/[-~+\/*%=<>&^|@]=?|!=/, Operator
|
|
78
92
|
|
|
79
|
-
rule /(from)((?:\\\s|\s)+)(#{dotted_identifier})((?:\\\s|\s)+)(import)/ do
|
|
93
|
+
rule %r/(from)((?:\\\s|\s)+)(#{dotted_identifier})((?:\\\s|\s)+)(import)/ do
|
|
80
94
|
groups Keyword::Namespace,
|
|
81
95
|
Text,
|
|
82
96
|
Name::Namespace,
|
|
@@ -84,35 +98,32 @@ module Rouge
|
|
|
84
98
|
Keyword::Namespace
|
|
85
99
|
end
|
|
86
100
|
|
|
87
|
-
rule /(import)(\s+)(#{dotted_identifier})/ do
|
|
101
|
+
rule %r/(import)(\s+)(#{dotted_identifier})/ do
|
|
88
102
|
groups Keyword::Namespace, Text, Name::Namespace
|
|
89
103
|
end
|
|
90
104
|
|
|
91
|
-
rule /(def)((?:\s|\\\s)+)/ do
|
|
105
|
+
rule %r/(def)((?:\s|\\\s)+)/ do
|
|
92
106
|
groups Keyword, Text
|
|
93
107
|
push :funcname
|
|
94
108
|
end
|
|
95
109
|
|
|
96
|
-
rule /(class)((?:\s|\\\s)+)/ do
|
|
110
|
+
rule %r/(class)((?:\s|\\\s)+)/ do
|
|
97
111
|
groups Keyword, Text
|
|
98
112
|
push :classname
|
|
99
113
|
end
|
|
100
114
|
|
|
101
115
|
# TODO: not in python 3
|
|
102
|
-
rule /`.*?`/, Str::Backtick
|
|
103
|
-
rule /(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
rule /
|
|
110
|
-
rule /u?'/i, Str, :sqs
|
|
111
|
-
|
|
112
|
-
rule /@#{dotted_identifier}/i, Name::Decorator
|
|
116
|
+
rule %r/`.*?`/, Str::Backtick
|
|
117
|
+
rule %r/([rfbu]{0,2})('''|"""|['"])/i do |m|
|
|
118
|
+
token Str
|
|
119
|
+
current_string.register type: m[1].downcase, delim: m[2]
|
|
120
|
+
push :generic_string
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
rule %r/@#{dotted_identifier}/i, Name::Decorator
|
|
113
124
|
|
|
114
125
|
# using negative lookbehind so we don't match property names
|
|
115
|
-
rule /(?<!\.)#{identifier}/ do |m|
|
|
126
|
+
rule %r/(?<!\.)#{identifier}/ do |m|
|
|
116
127
|
if self.class.keywords.include? m[0]
|
|
117
128
|
token Keyword
|
|
118
129
|
elsif self.class.exceptions.include? m[0]
|
|
@@ -128,12 +139,18 @@ module Rouge
|
|
|
128
139
|
|
|
129
140
|
rule identifier, Name
|
|
130
141
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
rule
|
|
135
|
-
rule
|
|
136
|
-
rule
|
|
142
|
+
digits = /[0-9](_?[0-9])*/
|
|
143
|
+
decimal = /((#{digits})?\.#{digits}|#{digits}\.)/
|
|
144
|
+
exponent = /e[+-]?#{digits}/i
|
|
145
|
+
rule %r/#{decimal}(#{exponent})?j?/i, Num::Float
|
|
146
|
+
rule %r/#{digits}#{exponent}j?/i, Num::Float
|
|
147
|
+
rule %r/#{digits}j/i, Num::Float
|
|
148
|
+
|
|
149
|
+
rule %r/0b(_?[0-1])+/i, Num::Bin
|
|
150
|
+
rule %r/0o(_?[0-7])+/i, Num::Oct
|
|
151
|
+
rule %r/0x(_?[a-f0-9])+/i, Num::Hex
|
|
152
|
+
rule %r/\d+L/, Num::Integer::Long
|
|
153
|
+
rule %r/([1-9](_?[0-9])*|0(_?0)*)/, Num::Integer
|
|
137
154
|
end
|
|
138
155
|
|
|
139
156
|
state :funcname do
|
|
@@ -145,11 +162,11 @@ module Rouge
|
|
|
145
162
|
end
|
|
146
163
|
|
|
147
164
|
state :raise do
|
|
148
|
-
rule /from\b/, Keyword
|
|
149
|
-
rule /raise\b/, Keyword
|
|
150
|
-
rule /yield\b/, Keyword
|
|
151
|
-
rule /\n/, Text, :pop!
|
|
152
|
-
rule /;/, Punctuation, :pop!
|
|
165
|
+
rule %r/from\b/, Keyword
|
|
166
|
+
rule %r/raise\b/, Keyword
|
|
167
|
+
rule %r/yield\b/, Keyword
|
|
168
|
+
rule %r/\n/, Text, :pop!
|
|
169
|
+
rule %r/;/, Punctuation, :pop!
|
|
153
170
|
mixin :root
|
|
154
171
|
end
|
|
155
172
|
|
|
@@ -157,76 +174,84 @@ module Rouge
|
|
|
157
174
|
mixin :raise
|
|
158
175
|
end
|
|
159
176
|
|
|
160
|
-
state :
|
|
161
|
-
rule
|
|
162
|
-
|
|
177
|
+
state :generic_string do
|
|
178
|
+
rule %r/[^'"\\{]+/, Str
|
|
179
|
+
rule %r/{{/, Str
|
|
163
180
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
181
|
+
rule %r/'''|"""|['"]/ do |m|
|
|
182
|
+
token Str
|
|
183
|
+
if current_string.delim? m[0]
|
|
184
|
+
current_string.remove
|
|
185
|
+
pop!
|
|
186
|
+
end
|
|
187
|
+
end
|
|
168
188
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
189
|
+
rule %r/\\/ do |m|
|
|
190
|
+
if current_string.type? "r"
|
|
191
|
+
token Str
|
|
192
|
+
else
|
|
193
|
+
token Str::Interpol
|
|
194
|
+
end
|
|
195
|
+
push :generic_escape
|
|
196
|
+
end
|
|
173
197
|
|
|
174
|
-
|
|
175
|
-
|
|
198
|
+
rule %r/{/ do |m|
|
|
199
|
+
if current_string.type? "f"
|
|
200
|
+
token Str::Interpol
|
|
201
|
+
push :generic_interpol
|
|
202
|
+
else
|
|
203
|
+
token Str
|
|
204
|
+
end
|
|
205
|
+
end
|
|
176
206
|
end
|
|
177
207
|
|
|
178
|
-
state :
|
|
179
|
-
rule %r(
|
|
208
|
+
state :generic_escape do
|
|
209
|
+
rule %r(
|
|
180
210
|
( [\\abfnrtv"']
|
|
181
211
|
| \n
|
|
182
|
-
| N{[a-zA-
|
|
212
|
+
| N{[a-zA-Z][a-zA-Z ]+[a-zA-Z]}
|
|
183
213
|
| u[a-fA-F0-9]{4}
|
|
184
214
|
| U[a-fA-F0-9]{8}
|
|
185
215
|
| x[a-fA-F0-9]{2}
|
|
186
216
|
| [0-7]{1,3}
|
|
187
217
|
)
|
|
188
|
-
)x
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
218
|
+
)x do
|
|
219
|
+
if current_string.type? "r"
|
|
220
|
+
token Str
|
|
221
|
+
else
|
|
222
|
+
token Str::Escape
|
|
223
|
+
end
|
|
224
|
+
pop!
|
|
225
|
+
end
|
|
193
226
|
end
|
|
194
227
|
|
|
195
|
-
state :
|
|
196
|
-
rule /
|
|
197
|
-
|
|
198
|
-
|
|
228
|
+
state :generic_interpol do
|
|
229
|
+
rule %r/[^{}]+/ do |m|
|
|
230
|
+
recurse m[0]
|
|
231
|
+
end
|
|
232
|
+
rule %r/{/, Str::Interpol, :generic_interpol
|
|
233
|
+
rule %r/}/, Str::Interpol, :pop!
|
|
199
234
|
end
|
|
200
235
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
end
|
|
236
|
+
class StringRegister < Array
|
|
237
|
+
def delim?(delim)
|
|
238
|
+
self.last[1] == delim
|
|
239
|
+
end
|
|
206
240
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
mixin :escape
|
|
211
|
-
mixin :strings_double
|
|
212
|
-
mixin :nl
|
|
213
|
-
end
|
|
241
|
+
def register(type: "u", delim: "'")
|
|
242
|
+
self.push [type, delim]
|
|
243
|
+
end
|
|
214
244
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
mixin :escape
|
|
219
|
-
mixin :strings_single
|
|
220
|
-
mixin :nl
|
|
221
|
-
end
|
|
245
|
+
def remove
|
|
246
|
+
self.pop
|
|
247
|
+
end
|
|
222
248
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
mixin :raw_escape
|
|
226
|
-
mixin :"#{qtype}"
|
|
249
|
+
def type?(type)
|
|
250
|
+
self.last[0].include? type
|
|
227
251
|
end
|
|
228
252
|
end
|
|
229
253
|
|
|
254
|
+
private_constant :StringRegister
|
|
230
255
|
end
|
|
231
256
|
end
|
|
232
257
|
end
|