rouge 3.2.0 → 3.18.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class MsgTrans < RegexLexer
|
7
|
+
title "MessageTrans"
|
8
|
+
desc "RISC OS message translator messages file"
|
9
|
+
tag 'msgtrans'
|
10
|
+
filenames 'Messages', 'Message[0-9]', 'Message[1-9][0-9]', 'Message[1-9][0-9][0-9]'
|
11
|
+
|
12
|
+
state :root do
|
13
|
+
rule %r/^#[^\n]*/, Comment
|
14
|
+
rule %r/[^\t\n\r ,):?\/]+/, Name::Variable
|
15
|
+
rule %r/[\n\/?]/, Operator
|
16
|
+
rule %r/:/, Operator, :value
|
17
|
+
end
|
18
|
+
|
19
|
+
state :value do
|
20
|
+
rule %r/\n/, Text, :pop!
|
21
|
+
rule %r/%[0-3%]/, Operator
|
22
|
+
rule %r/[^\n%]/, Literal::String
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/rouge/lexers/mxml.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
|
@@ -10,56 +11,56 @@ module Rouge
|
|
10
11
|
mimetypes 'application/xv+xml'
|
11
12
|
|
12
13
|
state :root do
|
13
|
-
rule /[^<&]+/, Text
|
14
|
-
rule /&\S*?;/, Name::Entity
|
14
|
+
rule %r/[^<&]+/, Text
|
15
|
+
rule %r/&\S*?;/, Name::Entity
|
15
16
|
|
16
|
-
rule /<!\[CDATA\[/m do
|
17
|
+
rule %r/<!\[CDATA\[/m do
|
17
18
|
token Comment::Preproc
|
18
19
|
push :actionscript_content
|
19
20
|
end
|
20
21
|
|
21
|
-
rule /<!--/, Comment, :comment
|
22
|
-
rule /<\?.*?\?>/, Comment::Preproc
|
23
|
-
rule /<![^>]*>/, Comment::Preproc
|
22
|
+
rule %r/<!--/, Comment, :comment
|
23
|
+
rule %r/<\?.*?\?>/, Comment::Preproc
|
24
|
+
rule %r/<![^>]*>/, Comment::Preproc
|
24
25
|
|
25
26
|
rule %r(<\s*[\w:.-]+)m, Name::Tag, :tag # opening tags
|
26
27
|
rule %r(<\s*/\s*[\w:.-]+\s*>)m, Name::Tag # closing tags
|
27
28
|
end
|
28
29
|
|
29
30
|
state :comment do
|
30
|
-
rule /[^-]+/m, Comment
|
31
|
-
rule /-->/, Comment, :pop!
|
32
|
-
rule /-/, Comment
|
31
|
+
rule %r/[^-]+/m, Comment
|
32
|
+
rule %r/-->/, Comment, :pop!
|
33
|
+
rule %r/-/, Comment
|
33
34
|
end
|
34
35
|
|
35
36
|
state :tag do
|
36
|
-
rule /\s+/m, Text
|
37
|
-
rule /[\w.:-]+\s*=/m, Name::Attribute, :attribute
|
37
|
+
rule %r/\s+/m, Text
|
38
|
+
rule %r/[\w.:-]+\s*=/m, Name::Attribute, :attribute
|
38
39
|
rule %r(/?\s*>), Name::Tag, :root
|
39
40
|
end
|
40
41
|
|
41
42
|
state :attribute do
|
42
|
-
rule /\s+/m, Text
|
43
|
-
rule /(")({|@{)/m do
|
43
|
+
rule %r/\s+/m, Text
|
44
|
+
rule %r/(")({|@{)/m do
|
44
45
|
groups Str, Punctuation
|
45
46
|
push :actionscript_attribute
|
46
47
|
end
|
47
|
-
rule /".*?"|'.*?'|[^\s>]+/, Str, :tag
|
48
|
+
rule %r/".*?"|'.*?'|[^\s>]+/, Str, :tag
|
48
49
|
end
|
49
50
|
|
50
51
|
state :actionscript_content do
|
51
|
-
rule /\]\]\>/m, Comment::Preproc, :pop!
|
52
|
-
rule /.*?(?=\]\]\>)/m do
|
52
|
+
rule %r/\]\]\>/m, Comment::Preproc, :pop!
|
53
|
+
rule %r/.*?(?=\]\]\>)/m do
|
53
54
|
delegate Actionscript
|
54
55
|
end
|
55
56
|
end
|
56
57
|
|
57
58
|
state :actionscript_attribute do
|
58
|
-
rule /(})(")/m do
|
59
|
+
rule %r/(})(")/m do
|
59
60
|
groups Punctuation, Str
|
60
61
|
push :tag
|
61
62
|
end
|
62
|
-
rule /.*?(?=}")/m do
|
63
|
+
rule %r/.*?(?=}")/m do
|
63
64
|
delegate Actionscript
|
64
65
|
end
|
65
66
|
end
|
data/lib/rouge/lexers/nasm.rb
CHANGED
@@ -1,197 +1,71 @@
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
4
|
+
# Based on Chroma's NASM lexer implementation
|
5
|
+
# https://github.com/alecthomas/chroma/blob/498eaa690f5ac6ab0e3d6f46237e547a8935cdc7/lexers/n/nasm.go
|
3
6
|
module Rouge
|
4
7
|
module Lexers
|
5
8
|
class Nasm < RegexLexer
|
6
|
-
tag 'nasm'
|
7
|
-
filenames '*.asm'
|
8
|
-
#mimetypes 'text/x-chdr', 'text/x-csrc'
|
9
|
-
|
10
9
|
title "Nasm"
|
11
10
|
desc "Netwide Assembler"
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
#todo: pull more instructions from: http://www.nasm.us/doc/nasmdocb.html
|
17
|
-
#so far, we have sections 1.1 and 1.2
|
18
|
-
|
19
|
-
def self.keywords
|
20
|
-
@keywords ||= Set.new %w(
|
21
|
-
aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts
|
22
|
-
call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg
|
23
|
-
cmpxchg16b cmpxchg486 cmpxchg8b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div
|
24
|
-
dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove
|
25
|
-
fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp
|
26
|
-
fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr
|
27
|
-
fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e
|
28
|
-
fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw
|
29
|
-
fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos
|
30
|
-
fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip
|
31
|
-
fucomp fucompp fwait fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc
|
32
|
-
incbin insb insd insw int int01 int03 int1 int3 into invd invlpg invlpga invpcid iret
|
33
|
-
iretd iretq iretw jcxz jecxz jmp jmpe jrcxz lahf lar lds lea leave les lfence lfs
|
34
|
-
lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne
|
35
|
-
loopnz loopz lsl lss ltr mfence monitor monitorx mov movd movq movsb movsd movsq movsw
|
36
|
-
movsx movsxd movzx mul mwait mwaitx neg nop not or out outsb outsd outsw packssdw
|
37
|
-
packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn
|
38
|
-
pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc
|
39
|
-
pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt
|
40
|
-
pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw
|
41
|
-
pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch
|
42
|
-
prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw
|
43
|
-
psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd
|
44
|
-
push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdm rdmsr rdpmc rdshr
|
45
|
-
rdtsc rdtscp ret retf retn rol ror rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd
|
46
|
-
scasq scasw sfence sgdt shl shld shr shrd sidt skinit sldt smi smint smintold smsw
|
47
|
-
stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter
|
48
|
-
sysexit sysret test ud0 ud1 ud2 ud2a ud2b umov verr verw wbinvd wrmsr wrshr xadd xbts
|
49
|
-
xchg xlat xlatb xor
|
50
|
-
|
51
|
-
cmova cmovae cmovb cmovbe cmovc cmove cmovg cmovge cmovl cmovle cmovna cmovnae cmovnb cmovnbe cmovnc cmovne cmovng cmovnge cmovnl cmovnle cmovno cmovnp cmovns cmovnz cmovo cmovp cmovpe cmovpo cmovs cmovz
|
52
|
-
|
53
|
-
ja jae jb jbe jc jcxz jecxz je jg jge jl jle jna jnae jnb jnbe jnc jne jng jnge jnl jnle jno jnp jns jnz jo jp jpe jpo js jz
|
54
|
-
|
55
|
-
seta setae setb setbe setc sete setg setge setl setle setna setnae setnb setnbe setnc setne setng setnge setnl setnle setno setnp setns setnz seto setp setpe setpo sets setz
|
56
|
-
|
57
|
-
AAA AAD AAM AAS ADC ADD AND ARPL BB0_RESET BB1_RESET BOUND BSF BSR BSWAP BT BTC BTR BTS
|
58
|
-
CALL CBW CDQ CDQE CLC CLD CLI CLTS CMC CMP CMPSB CMPSD CMPSQ CMPSW CMPXCHG
|
59
|
-
CMPXCHG16B CMPXCHG486 CMPXCHG8B CPUID CPU_READ CPU_WRITE CQO CWD CWDE DAA DAS DEC DIV
|
60
|
-
DMINT EMMS ENTER EQU F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX FCMOVB FCMOVBE FCMOVE
|
61
|
-
FCMOVNB FCMOVNBE FCMOVNE FCMOVNU FCMOVU FCOM FCOMI FCOMIP FCOMP FCOMPP FCOS FDECSTP
|
62
|
-
FDISI FDIV FDIVP FDIVR FDIVRP FEMMS FENI FFREE FFREEP FIADD FICOM FICOMP FIDIV FIDIVR
|
63
|
-
FILD FIMUL FINCSTP FINIT FIST FISTP FISTTP FISUB FISUBR FLD FLD1 FLDCW FLDENV FLDL2E
|
64
|
-
FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE FNSTCW
|
65
|
-
FNSTENV FNSTSW FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FSCALE FSETPM FSIN FSINCOS
|
66
|
-
FSQRT FST FSTCW FSTENV FSTP FSTSW FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI FUCOMIP
|
67
|
-
FUCOMP FUCOMPP FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 HLT IBTS ICEBP IDIV IMUL IN INC
|
68
|
-
INCBIN INSB INSD INSW INT INT01 INT03 INT1 INT3 INTO INVD INVLPG INVLPGA INVPCID IRET
|
69
|
-
IRETD IRETQ IRETW JCXZ JECXZ JMP JMPE JRCXZ LAHF LAR LDS LEA LEAVE LES LFENCE LFS
|
70
|
-
LGDT LGS LIDT LLDT LMSW LOADALL LOADALL286 LODSB LODSD LODSQ LODSW LOOP LOOPE LOOPNE
|
71
|
-
LOOPNZ LOOPZ LSL LSS LTR MFENCE MONITOR MONITORX MOV MOVD MOVQ MOVSB MOVSD MOVSQ MOVSW
|
72
|
-
MOVSX MOVSXD MOVZX MUL MWAIT MWAITX NEG NOP NOT OR OUT OUTSB OUTSD OUTSW PACKSSDW
|
73
|
-
PACKSSWB PACKUSWB PADDB PADDD PADDSB PADDSIW PADDSW PADDUSB PADDUSW PADDW PAND PANDN
|
74
|
-
PAUSE PAVEB PAVGUSB PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW PDISTIB PF2ID PFACC
|
75
|
-
PFADD PFCMPEQ PFCMPGE PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1 PFRCPIT2 PFRSQIT1 PFRSQRT
|
76
|
-
PFSUB PFSUBR PI2FD PMACHRIW PMADDWD PMAGW PMULHRIW PMULHRWA PMULHRWC PMULHW PMULLW
|
77
|
-
PMVGEZB PMVLZB PMVNZB PMVZB POP POPA POPAD POPAW POPF POPFD POPFQ POPFW POR PREFETCH
|
78
|
-
PREFETCHW PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD PSUBSB PSUBSIW
|
79
|
-
PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW PUNPCKHDQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD
|
80
|
-
PUSH PUSHA PUSHAD PUSHAW PUSHF PUSHFD PUSHFQ PUSHFW PXOR RCL RCR RDM RDMSR RDPMC RDSHR
|
81
|
-
RDTSC RDTSCP RET RETF RETN ROL ROR RSDC RSLDT RSM RSTS SAHF SAL SALC SAR SBB SCASB SCASD
|
82
|
-
SCASQ SCASW SFENCE SGDT SHL SHLD SHR SHRD SIDT SKINIT SLDT SMI SMINT SMINTOLD SMSW
|
83
|
-
STC STD STI STOSB STOSD STOSQ STOSW STR SUB SVDC SVLDT SVTS SWAPGS SYSCALL SYSENTER
|
84
|
-
SYSEXIT SYSRET TEST UD0 UD1 UD2 UD2A UD2B UMOV VERR VERW WBINVD WRMSR WRSHR XADD XBTS
|
85
|
-
XCHG XLAT XLATB XOR
|
86
|
-
|
87
|
-
CMOVA CMOVAE CMOVB CMOVBE CMOVC CMOVE CMOVG CMOVGE CMOVL CMOVLE CMOVNA CMOVNAE CMOVNB CMOVNBE CMOVNC CMOVNE CMOVNG CMOVNGE CMOVNL CMOVNLE CMOVNO CMOVNP CMOVNS CMOVNZ CMOVO CMOVP CMOVPE CMOVPO CMOVS CMOVZ
|
12
|
+
tag 'nasm'
|
13
|
+
filenames '*.asm'
|
14
|
+
mimetypes 'text/x-nasm'
|
88
15
|
|
89
|
-
|
16
|
+
state :root do
|
17
|
+
rule %r/^\s*%/, Comment::Preproc, :preproc
|
90
18
|
|
91
|
-
|
92
|
-
)
|
93
|
-
end
|
19
|
+
mixin :whitespace
|
94
20
|
|
95
|
-
|
96
|
-
@keywords_type ||= Set.new %w(
|
97
|
-
DB DW DD DQ DT DO DY DZ RESB RESW RESD RESQ REST RESO RESY RESZ
|
98
|
-
db dq dd dq dt do dy dz resb resw resd resq rest reso resy resz
|
99
|
-
)
|
100
|
-
end
|
21
|
+
rule %r/[a-z$._?][\w$.?#@~]*:/i, Name::Label
|
101
22
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
23
|
+
rule %r/([a-z$._?][\w$.?#@~]*)(\s+)(equ)/i do
|
24
|
+
groups Name::Constant, Keyword::Declaration, Keyword::Declaration
|
25
|
+
push :instruction_args
|
26
|
+
end
|
27
|
+
rule %r/BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|EXPORT|LIBRARY|MODULE/, Keyword, :instruction_args
|
28
|
+
rule %r/(?:res|d)[bwdqt]|times/i, Keyword::Declaration, :instruction_args
|
29
|
+
rule %r/[a-z$._?][\w$.?#@~]*/i, Name::Function, :instruction_args
|
108
30
|
|
109
|
-
|
110
|
-
@builtins ||= []
|
31
|
+
rule %r/[\r\n]+/, Text
|
111
32
|
end
|
112
33
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
rule
|
118
|
-
|
34
|
+
state :instruction_args do
|
35
|
+
rule %r/"(\\\\"|[^"\\n])*"|'(\\\\'|[^'\\n])*'|`(\\\\`|[^`\\n])*`/, Str
|
36
|
+
rule %r/(?:0x[\da-f]+|$0[\da-f]*|\d+[\da-f]*h)/i, Num::Hex
|
37
|
+
rule %r/[0-7]+q/i, Num::Oct
|
38
|
+
rule %r/[01]+b/i, Num::Bin
|
39
|
+
rule %r/\d+\.e?\d+/i, Num::Float
|
40
|
+
rule %r/\d+/, Num::Integer
|
119
41
|
|
120
|
-
|
121
|
-
rule /[ \t\r]+/, Text
|
122
|
-
end
|
42
|
+
mixin :punctuation
|
123
43
|
|
124
|
-
|
125
|
-
rule
|
126
|
-
rule %r
|
127
|
-
mixin :inline_whitespace
|
128
|
-
end
|
44
|
+
rule %r/r\d[0-5]?[bwd]|[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]/i, Name::Builtin
|
45
|
+
rule %r/[a-z$._?][\w$.?#@~]*/i, Name::Variable
|
46
|
+
rule %r/[\r\n]+/, Text, :pop!
|
129
47
|
|
130
|
-
state :expr_whitespace do
|
131
|
-
rule /\n+/m, Text, :expr_bol
|
132
48
|
mixin :whitespace
|
133
49
|
end
|
134
50
|
|
135
|
-
state :
|
136
|
-
|
137
|
-
rule
|
138
|
-
rule
|
139
|
-
|
140
|
-
rule(
|
141
|
-
%r(&=|[*]=|/=|\\=|\^=|\+=|-=|<<=|>>=|<<|>>|:=|<=|>=|<>|[-&*/\\^+=<>.]),
|
142
|
-
Operator
|
143
|
-
)
|
144
|
-
rule /;.*/, Comment, :statement
|
145
|
-
rule /^[a-zA-Z]+[a-zA-Z0-9]*:/, Name::Function
|
146
|
-
rule /;.*/, Comment
|
51
|
+
state :preproc do
|
52
|
+
rule %r/[^;\n]+/, Comment::Preproc
|
53
|
+
rule %r/;.*?\n/, Comment::Single, :pop!
|
54
|
+
rule %r/\n/, Comment::Preproc, :pop!
|
147
55
|
end
|
148
56
|
|
149
|
-
state :
|
150
|
-
|
151
|
-
|
152
|
-
rule /;.*/, Comment
|
153
|
-
rule /^%[a-zA-Z0-9]+/, Comment::Preproc
|
154
|
-
rule /[a-zA-Z]+%[0-9]+:/, Name::Function
|
155
|
-
end
|
156
|
-
|
157
|
-
state :statements do
|
158
|
-
mixin :whitespace
|
159
|
-
rule /L?"/, Str, :string
|
160
|
-
rule /[a-zA-Z]+%[0-9]+:/, Name::Function #labels/subroutines/functions
|
161
|
-
rule %r(L?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
|
162
|
-
rule /0x[0-9a-f]+[lu]*/i, Num::Hex
|
163
|
-
rule /\d+[lu]*/i, Num::Integer
|
164
|
-
rule %r(\*/), Error
|
165
|
-
rule %r([~&*+=\|?:<>/-]), Operator
|
166
|
-
rule /[(),.]/, Punctuation
|
167
|
-
rule /\[[a-zA-Z0-9]*\]/, Punctuation
|
168
|
-
rule /%[0-9]+/, Keyword::Reserved
|
169
|
-
rule /[a-zA-Z]+%[0-9]+/, Name::Function #labels/subroutines/functions
|
170
|
-
|
171
|
-
#rule /(?<!\.)#{id}/ do |m|
|
172
|
-
rule id do |m|
|
173
|
-
name = m[0]
|
174
|
-
|
175
|
-
if self.class.keywords.include? name
|
176
|
-
token Keyword
|
177
|
-
elsif self.class.keywords_type.include? name
|
178
|
-
token Keyword::Type
|
179
|
-
elsif self.class.reserved.include? name
|
180
|
-
token Keyword::Reserved
|
181
|
-
elsif self.class.builtins.include? name
|
182
|
-
token Name::Builtin
|
183
|
-
else
|
184
|
-
token Name
|
185
|
-
end
|
186
|
-
end
|
57
|
+
state :whitespace do
|
58
|
+
rule %r/\n/, Text
|
59
|
+
rule %r/[ \t]+/, Text
|
60
|
+
rule %r/;.*/, Comment::Single
|
187
61
|
end
|
188
62
|
|
189
|
-
state :
|
190
|
-
rule /
|
191
|
-
rule
|
192
|
-
rule
|
193
|
-
rule
|
194
|
-
rule
|
63
|
+
state :punctuation do
|
64
|
+
rule %r/[,():\[\]]+/, Punctuation
|
65
|
+
rule %r/[&|^<>+*\/%~-]+/, Operator
|
66
|
+
rule %r/\$+/, Keyword::Constant
|
67
|
+
rule %r/seg|wrt|strict/i, Operator::Word
|
68
|
+
rule %r/byte|[dq]?word/i, Keyword::Type
|
195
69
|
end
|
196
70
|
end
|
197
71
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class NesAsm < RegexLexer
|
7
|
+
title "NesAsm"
|
8
|
+
desc "Nesasm3 assembly (6502 asm)"
|
9
|
+
tag 'nesasm'
|
10
|
+
aliases 'nes'
|
11
|
+
filenames '*.nesasm'
|
12
|
+
|
13
|
+
def self.keywords
|
14
|
+
@keywords ||= %w(
|
15
|
+
ADC AND ASL BIT BRK CMP CPX CPY DEC EOR INC JMP JSR LDA LDX LDY LSR
|
16
|
+
NOP ORA ROL ROR RTI RTS SBC STA STX STY TAX TXA DEX INX TAY TYA DEY
|
17
|
+
INY BPL BMI BVC BVS BCC BCS BNE BEQ CLC SEC CLI SEI CLV CLD SED TXS
|
18
|
+
TSX PHA PLA PHP PLP
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.keywords_type
|
23
|
+
@keywords_type ||= %w(
|
24
|
+
DB DW BYTE WORD
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.keywords_reserved
|
29
|
+
@keywords_reserved ||= %w(
|
30
|
+
INCBIN INCLUDE ORG BANK RSSET RS MACRO ENDM DS PROC ENDP PROCGROUP
|
31
|
+
ENDPROCGROUP INCCHR DEFCHR ZP BSS CODE DATA IF IFDEF IFNDEF ELSE
|
32
|
+
ENDIF FAIL INESPRG INESCHR INESMAP INESMIR FUNC
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
state :root do
|
37
|
+
rule %r/\s+/m, Text
|
38
|
+
rule %r(;.*), Comment::Single
|
39
|
+
|
40
|
+
rule %r/[\(\)\,\.\[\]]/, Punctuation
|
41
|
+
rule %r/\#?\%[0-1]+/, Num::Bin # #%00110011 %00110011
|
42
|
+
rule %r/\#?\$\h+/, Num::Hex # $1f #$1f
|
43
|
+
rule %r/\#?\d+/, Num # 10 #10
|
44
|
+
rule %r([~&*+=\|?:<>/-]), Operator
|
45
|
+
|
46
|
+
rule %r/\#?\w+:?/i do |m|
|
47
|
+
name = m[0].upcase
|
48
|
+
|
49
|
+
if self.class.keywords.include? name
|
50
|
+
token Keyword
|
51
|
+
elsif self.class.keywords_type.include? name
|
52
|
+
token Keyword::Type
|
53
|
+
elsif self.class.keywords_reserved.include? name
|
54
|
+
token Keyword::Reserved
|
55
|
+
else
|
56
|
+
token Name::Function
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
rule %r/\#?(?:LOW|HIGH)\(.*\)/i, Keyword::Reserved # LOW() #HIGH()
|
61
|
+
|
62
|
+
rule %r/\#\(/, Punctuation # #()
|
63
|
+
|
64
|
+
rule %r/"/, Str, :string
|
65
|
+
|
66
|
+
rule %r/'\w'/, Str::Char # 'A' for example
|
67
|
+
|
68
|
+
rule %r/\\\??[\d@#]/, Name::Builtin # builtin parameters for use inside macros and functions: \1-\9 , \?1-\?9 , \# , \@
|
69
|
+
end
|
70
|
+
|
71
|
+
state :string do
|
72
|
+
rule %r/"/, Str, :pop!
|
73
|
+
rule %r/\\"?/, Str::Escape
|
74
|
+
rule %r/[^"\\]+/m, Str
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/lib/rouge/lexers/nginx.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
|
@@ -12,7 +13,7 @@ module Rouge
|
|
12
13
|
id = /[^\s$;{}()#]+/
|
13
14
|
|
14
15
|
state :root do
|
15
|
-
rule /(include)(\s+)([^\s;]+)/ do
|
16
|
+
rule %r/(include)(\s+)([^\s;]+)/ do
|
16
17
|
groups Keyword, Text, Name
|
17
18
|
end
|
18
19
|
|
@@ -22,49 +23,49 @@ module Rouge
|
|
22
23
|
end
|
23
24
|
|
24
25
|
state :block do
|
25
|
-
rule /}/, Punctuation, :pop!
|
26
|
+
rule %r/}/, Punctuation, :pop!
|
26
27
|
rule id, Keyword::Namespace, :statement
|
27
28
|
mixin :base
|
28
29
|
end
|
29
30
|
|
30
31
|
state :statement do
|
31
|
-
rule /{/ do
|
32
|
+
rule %r/{/ do
|
32
33
|
token Punctuation; pop!; push :block
|
33
34
|
end
|
34
35
|
|
35
|
-
rule /;/, Punctuation, :pop!
|
36
|
+
rule %r/;/, Punctuation, :pop!
|
36
37
|
|
37
38
|
mixin :base
|
38
39
|
end
|
39
40
|
|
40
41
|
state :base do
|
41
|
-
rule /\s+/, Text
|
42
|
+
rule %r/\s+/, Text
|
42
43
|
|
43
|
-
rule
|
44
|
-
rule /(?:on|off)\b/, Name::Constant
|
45
|
-
rule /[$][\w-]+/, Name::Variable
|
44
|
+
rule %r/#.*/, Comment::Single
|
45
|
+
rule %r/(?:on|off)\b/, Name::Constant
|
46
|
+
rule %r/[$][\w-]+/, Name::Variable
|
46
47
|
|
47
48
|
# host/port
|
48
|
-
rule /([a-z0-9.-]+)(:)([0-9]+)/i do
|
49
|
+
rule %r/([a-z0-9.-]+)(:)([0-9]+)/i do
|
49
50
|
groups Name::Function, Punctuation, Num::Integer
|
50
51
|
end
|
51
52
|
|
52
53
|
# mimetype
|
53
54
|
rule %r([a-z-]+/[a-z-]+)i, Name::Class
|
54
55
|
|
55
|
-
rule /[0-9]+[kmg]?\b/i, Num::Integer
|
56
|
-
rule /(~)(\s*)([^\s{]+)/ do
|
56
|
+
rule %r/[0-9]+[kmg]?\b/i, Num::Integer
|
57
|
+
rule %r/(~)(\s*)([^\s{]+)/ do
|
57
58
|
groups Punctuation, Text, Str::Regex
|
58
59
|
end
|
59
60
|
|
60
|
-
rule /[:=~]/, Punctuation
|
61
|
+
rule %r/[:=~]/, Punctuation
|
61
62
|
|
62
63
|
# pathname
|
63
64
|
rule %r(/#{id}?), Name
|
64
65
|
|
65
|
-
rule /[^#\s;{}$\\]+/, Str # catchall
|
66
|
+
rule %r/[^#\s;{}$\\]+/, Str # catchall
|
66
67
|
|
67
|
-
rule /[$;]/, Text
|
68
|
+
rule %r/[$;]/, Text
|
68
69
|
end
|
69
70
|
end
|
70
71
|
end
|