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
data/lib/rouge/lexers/yaml.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
|
|
@@ -77,38 +78,38 @@ module Rouge
|
|
|
77
78
|
start { reset_indent }
|
|
78
79
|
|
|
79
80
|
state :basic do
|
|
80
|
-
rule /#.*$/, Comment::Single
|
|
81
|
+
rule %r/#.*$/, Comment::Single
|
|
81
82
|
end
|
|
82
83
|
|
|
83
84
|
state :root do
|
|
84
85
|
mixin :basic
|
|
85
86
|
|
|
86
|
-
rule /\n+/, Text
|
|
87
|
+
rule %r/\n+/, Text
|
|
87
88
|
|
|
88
89
|
# trailing or pre-comment whitespace
|
|
89
|
-
rule /[ ]+(?=#|$)/, Text
|
|
90
|
+
rule %r/[ ]+(?=#|$)/, Text
|
|
90
91
|
|
|
91
|
-
rule /^%YAML\b/ do
|
|
92
|
+
rule %r/^%YAML\b/ do
|
|
92
93
|
token Name::Tag
|
|
93
94
|
reset_indent
|
|
94
95
|
push :yaml_directive
|
|
95
96
|
end
|
|
96
97
|
|
|
97
|
-
rule /^%TAG\b/ do
|
|
98
|
+
rule %r/^%TAG\b/ do
|
|
98
99
|
token Name::Tag
|
|
99
100
|
reset_indent
|
|
100
101
|
push :tag_directive
|
|
101
102
|
end
|
|
102
103
|
|
|
103
104
|
# doc-start and doc-end indicators
|
|
104
|
-
rule /^(?:---|\.\.\.)(?= |$)/ do
|
|
105
|
+
rule %r/^(?:---|\.\.\.)(?= |$)/ do
|
|
105
106
|
token Name::Namespace
|
|
106
107
|
reset_indent
|
|
107
108
|
push :block_line
|
|
108
109
|
end
|
|
109
110
|
|
|
110
111
|
# indentation spaces
|
|
111
|
-
rule /[ ]*(?!\s|$)/ do |m|
|
|
112
|
+
rule %r/[ ]*(?!\s|$)/ do |m|
|
|
112
113
|
text, err = save_indent(m[0])
|
|
113
114
|
token Text, text
|
|
114
115
|
token Error, err
|
|
@@ -119,7 +120,7 @@ module Rouge
|
|
|
119
120
|
state :indentation do
|
|
120
121
|
rule(/\s*?\n/) { token Text; pop! 2 }
|
|
121
122
|
# whitespace preceding block collection indicators
|
|
122
|
-
rule /[ ]+(?=[-:?](?:[ ]|$))/ do |m|
|
|
123
|
+
rule %r/[ ]+(?=[-:?](?:[ ]|$))/ do |m|
|
|
123
124
|
token Text
|
|
124
125
|
continue_indent(m[0])
|
|
125
126
|
end
|
|
@@ -137,8 +138,8 @@ module Rouge
|
|
|
137
138
|
# indented line in the block context
|
|
138
139
|
state :block_line do
|
|
139
140
|
# line end
|
|
140
|
-
rule /[ ]*(?=#|$)/, Text, :pop!
|
|
141
|
-
rule /[ ]+/, Text
|
|
141
|
+
rule %r/[ ]*(?=#|$)/, Text, :pop!
|
|
142
|
+
rule %r/[ ]+/, Text
|
|
142
143
|
# tags, anchors, and aliases
|
|
143
144
|
mixin :descriptors
|
|
144
145
|
# block collections and scalars
|
|
@@ -147,7 +148,7 @@ module Rouge
|
|
|
147
148
|
mixin :flow_nodes
|
|
148
149
|
|
|
149
150
|
# a plain scalar
|
|
150
|
-
rule /(?=#{plain_scalar_start}|[?:-][^ \t\n\r\f\v])/ do
|
|
151
|
+
rule %r/(?=#{plain_scalar_start}|[?:-][^ \t\n\r\f\v])/ do
|
|
151
152
|
token Name::Variable
|
|
152
153
|
push :plain_scalar_in_block_context
|
|
153
154
|
end
|
|
@@ -155,7 +156,7 @@ module Rouge
|
|
|
155
156
|
|
|
156
157
|
state :descriptors do
|
|
157
158
|
# a full-form tag
|
|
158
|
-
rule /!<[0-9A-Za-z;\/?:@&=+$,_.!~*'()\[\]%-]+>/, Keyword::Type
|
|
159
|
+
rule %r/!<[0-9A-Za-z;\/?:@&=+$,_.!~*'()\[\]%-]+>/, Keyword::Type
|
|
159
160
|
|
|
160
161
|
# a tag in the form '!', '!suffix' or '!handle!suffix'
|
|
161
162
|
rule %r(
|
|
@@ -164,21 +165,21 @@ module Rouge
|
|
|
164
165
|
)x, Keyword::Type
|
|
165
166
|
|
|
166
167
|
# an anchor
|
|
167
|
-
rule /&[\w-]+/, Name::Label
|
|
168
|
+
rule %r/&[\w-]+/, Name::Label
|
|
168
169
|
|
|
169
170
|
# an alias
|
|
170
|
-
rule /\*[\w-]+/, Name::Variable
|
|
171
|
+
rule %r/\*[\w-]+/, Name::Variable
|
|
171
172
|
end
|
|
172
173
|
|
|
173
174
|
state :block_nodes do
|
|
174
175
|
# implicit key
|
|
175
|
-
rule /((?:\w[\w -]*)?)(:)(?=\s|$)/ do |m|
|
|
176
|
+
rule %r/((?:\w[\w -]*)?)(:)(?=\s|$)/ do |m|
|
|
176
177
|
groups Name::Attribute, Punctuation::Indicator
|
|
177
178
|
set_indent m[0], :implicit => true
|
|
178
179
|
end
|
|
179
180
|
|
|
180
181
|
# literal and folded scalars
|
|
181
|
-
rule /[\|>]
|
|
182
|
+
rule %r/[\|>][+-]?/ do
|
|
182
183
|
token Punctuation::Indicator
|
|
183
184
|
push :block_scalar_content
|
|
184
185
|
push :block_scalar_header
|
|
@@ -186,39 +187,39 @@ module Rouge
|
|
|
186
187
|
end
|
|
187
188
|
|
|
188
189
|
state :flow_nodes do
|
|
189
|
-
rule /\[/, Punctuation::Indicator, :flow_sequence
|
|
190
|
-
rule /\{/, Punctuation::Indicator, :flow_mapping
|
|
191
|
-
rule /'/, Str::Single, :single_quoted_scalar
|
|
192
|
-
rule /"/, Str::Double, :double_quoted_scalar
|
|
190
|
+
rule %r/\[/, Punctuation::Indicator, :flow_sequence
|
|
191
|
+
rule %r/\{/, Punctuation::Indicator, :flow_mapping
|
|
192
|
+
rule %r/'/, Str::Single, :single_quoted_scalar
|
|
193
|
+
rule %r/"/, Str::Double, :double_quoted_scalar
|
|
193
194
|
end
|
|
194
195
|
|
|
195
196
|
state :flow_collection do
|
|
196
|
-
rule /\s+/m, Text
|
|
197
|
+
rule %r/\s+/m, Text
|
|
197
198
|
mixin :basic
|
|
198
|
-
rule /[?:,]/, Punctuation::Indicator
|
|
199
|
+
rule %r/[?:,]/, Punctuation::Indicator
|
|
199
200
|
mixin :descriptors
|
|
200
201
|
mixin :flow_nodes
|
|
201
202
|
|
|
202
|
-
rule /(?=#{plain_scalar_start})/ do
|
|
203
|
+
rule %r/(?=#{plain_scalar_start})/ do
|
|
203
204
|
push :plain_scalar_in_flow_context
|
|
204
205
|
end
|
|
205
206
|
end
|
|
206
207
|
|
|
207
208
|
state :flow_sequence do
|
|
208
|
-
rule /\]/, Punctuation::Indicator, :pop!
|
|
209
|
+
rule %r/\]/, Punctuation::Indicator, :pop!
|
|
209
210
|
mixin :flow_collection
|
|
210
211
|
end
|
|
211
212
|
|
|
212
213
|
state :flow_mapping do
|
|
213
|
-
rule /\}/, Punctuation::Indicator, :pop!
|
|
214
|
+
rule %r/\}/, Punctuation::Indicator, :pop!
|
|
214
215
|
mixin :flow_collection
|
|
215
216
|
end
|
|
216
217
|
|
|
217
218
|
state :block_scalar_content do
|
|
218
|
-
rule /\n+/, Text
|
|
219
|
+
rule %r/\n+/, Text
|
|
219
220
|
|
|
220
221
|
# empty lines never dedent, but they might be part of the scalar.
|
|
221
|
-
rule /^[ ]+$/ do |m|
|
|
222
|
+
rule %r/^[ ]+$/ do |m|
|
|
222
223
|
text = m[0]
|
|
223
224
|
indent_size = text.size
|
|
224
225
|
|
|
@@ -230,7 +231,7 @@ module Rouge
|
|
|
230
231
|
|
|
231
232
|
# TODO: ^ doesn't actually seem to affect the match at all.
|
|
232
233
|
# Find a way to work around this limitation.
|
|
233
|
-
rule /^[ ]*/ do |m|
|
|
234
|
+
rule %r/^[ ]*/ do |m|
|
|
234
235
|
token Text
|
|
235
236
|
|
|
236
237
|
indent_size = m[0].size
|
|
@@ -245,7 +246,7 @@ module Rouge
|
|
|
245
246
|
end
|
|
246
247
|
end
|
|
247
248
|
|
|
248
|
-
rule /[^\n\r\f\v]+/,
|
|
249
|
+
rule %r/[^\n\r\f\v]+/, Str
|
|
249
250
|
end
|
|
250
251
|
|
|
251
252
|
state :block_scalar_header do
|
|
@@ -270,46 +271,46 @@ module Rouge
|
|
|
270
271
|
|
|
271
272
|
state :ignored_line do
|
|
272
273
|
mixin :basic
|
|
273
|
-
rule /[ ]+/, Text
|
|
274
|
-
rule /\n/, Text, :pop!
|
|
274
|
+
rule %r/[ ]+/, Text
|
|
275
|
+
rule %r/\n/, Text, :pop!
|
|
275
276
|
end
|
|
276
277
|
|
|
277
278
|
state :quoted_scalar_whitespaces do
|
|
278
279
|
# leading and trailing whitespace is ignored
|
|
279
|
-
rule /^[ ]+/, Text
|
|
280
|
-
rule /[ ]+$/, Text
|
|
280
|
+
rule %r/^[ ]+/, Text
|
|
281
|
+
rule %r/[ ]+$/, Text
|
|
281
282
|
|
|
282
|
-
rule /\n+/m, Text
|
|
283
|
+
rule %r/\n+/m, Text
|
|
283
284
|
|
|
284
|
-
rule /[ ]+/, Name::Variable
|
|
285
|
+
rule %r/[ ]+/, Name::Variable
|
|
285
286
|
end
|
|
286
287
|
|
|
287
288
|
state :single_quoted_scalar do
|
|
288
289
|
mixin :quoted_scalar_whitespaces
|
|
289
|
-
rule /\\'/, Str::Escape
|
|
290
|
-
rule /'/, Str, :pop!
|
|
291
|
-
rule /[^\s']+/, Str
|
|
290
|
+
rule %r/\\'/, Str::Escape
|
|
291
|
+
rule %r/'/, Str, :pop!
|
|
292
|
+
rule %r/[^\s']+/, Str
|
|
292
293
|
end
|
|
293
294
|
|
|
294
295
|
state :double_quoted_scalar do
|
|
295
|
-
rule /"/, Str, :pop!
|
|
296
|
+
rule %r/"/, Str, :pop!
|
|
296
297
|
mixin :quoted_scalar_whitespaces
|
|
297
298
|
# escapes
|
|
298
|
-
rule /\\[0abt\tn\nvfre "\\N_LP]/, Str::Escape
|
|
299
|
-
rule /\\(?:x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
|
299
|
+
rule %r/\\[0abt\tn\nvfre "\\N_LP]/, Str::Escape
|
|
300
|
+
rule %r/\\(?:x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
|
300
301
|
Str::Escape
|
|
301
|
-
rule /[^ \t\n\r\f\v"\\]+/, Str
|
|
302
|
+
rule %r/[^ \t\n\r\f\v"\\]+/, Str
|
|
302
303
|
end
|
|
303
304
|
|
|
304
305
|
state :plain_scalar_in_block_context_new_line do
|
|
305
|
-
rule /^[ ]+\n/, Text
|
|
306
|
-
rule /\n+/m, Text
|
|
307
|
-
rule /^(?=---|\.\.\.)/ do
|
|
306
|
+
rule %r/^[ ]+\n/, Text
|
|
307
|
+
rule %r/\n+/m, Text
|
|
308
|
+
rule %r/^(?=---|\.\.\.)/ do
|
|
308
309
|
pop! 3
|
|
309
310
|
end
|
|
310
311
|
|
|
311
312
|
# dedent detection
|
|
312
|
-
rule /^[ ]*/ do |m|
|
|
313
|
+
rule %r/^[ ]*/ do |m|
|
|
313
314
|
token Text
|
|
314
315
|
pop!
|
|
315
316
|
|
|
@@ -326,34 +327,36 @@ module Rouge
|
|
|
326
327
|
|
|
327
328
|
state :plain_scalar_in_block_context do
|
|
328
329
|
# the : indicator ends a scalar
|
|
329
|
-
rule /[ ]*(?=:[ \n]|:$)/, Text, :pop!
|
|
330
|
-
rule /[ ]
|
|
331
|
-
rule /[ ]+(?=#)/, Text, :pop!
|
|
332
|
-
rule /[ ]+$/, Text
|
|
330
|
+
rule %r/[ ]*(?=:[ \n]|:$)/, Text, :pop!
|
|
331
|
+
rule %r/[ ]*:\S+/, Str
|
|
332
|
+
rule %r/[ ]+(?=#)/, Text, :pop!
|
|
333
|
+
rule %r/[ ]+$/, Text
|
|
333
334
|
# check for new documents or dedents at the new line
|
|
334
|
-
rule /\n+/ do
|
|
335
|
+
rule %r/\n+/ do
|
|
335
336
|
token Text
|
|
336
337
|
push :plain_scalar_in_block_context_new_line
|
|
337
338
|
end
|
|
338
339
|
|
|
339
|
-
rule /[ ]+/, Str
|
|
340
|
+
rule %r/[ ]+/, Str
|
|
340
341
|
rule SPECIAL_VALUES, Name::Constant
|
|
342
|
+
rule %r/\d+(?:\.\d+)?(?=(\r?\n)| +#)/, Literal::Number, :pop!
|
|
343
|
+
|
|
341
344
|
# regular non-whitespace characters
|
|
342
|
-
rule /[^\s:]+/, Str
|
|
345
|
+
rule %r/[^\s:]+/, Str
|
|
343
346
|
end
|
|
344
347
|
|
|
345
348
|
state :plain_scalar_in_flow_context do
|
|
346
|
-
rule /[ ]*(?=[,:?\[\]{}])/, Text, :pop!
|
|
347
|
-
rule /[ ]+(?=#)/, Text, :pop!
|
|
348
|
-
rule /^[ ]+/, Text
|
|
349
|
-
rule /[ ]+$/, Text
|
|
350
|
-
rule /\n+/, Text
|
|
351
|
-
rule /[ ]+/, Name::Variable
|
|
352
|
-
rule /[^\s,:?\[\]{}]+/, Name::Variable
|
|
349
|
+
rule %r/[ ]*(?=[,:?\[\]{}])/, Text, :pop!
|
|
350
|
+
rule %r/[ ]+(?=#)/, Text, :pop!
|
|
351
|
+
rule %r/^[ ]+/, Text
|
|
352
|
+
rule %r/[ ]+$/, Text
|
|
353
|
+
rule %r/\n+/, Text
|
|
354
|
+
rule %r/[ ]+/, Name::Variable
|
|
355
|
+
rule %r/[^\s,:?\[\]{}]+/, Name::Variable
|
|
353
356
|
end
|
|
354
357
|
|
|
355
358
|
state :yaml_directive do
|
|
356
|
-
rule /([ ]+)(\d+\.\d+)/ do
|
|
359
|
+
rule %r/([ ]+)(\d+\.\d+)/ do
|
|
357
360
|
groups Text, Num
|
|
358
361
|
goto :ignored_line
|
|
359
362
|
end
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class YANG < RegexLexer
|
|
7
|
+
title 'YANG'
|
|
8
|
+
desc "Lexer for the YANG 1.1 modeling language (RFC7950)"
|
|
9
|
+
tag 'yang'
|
|
10
|
+
filenames '*.yang'
|
|
11
|
+
mimetypes 'application/yang'
|
|
12
|
+
|
|
13
|
+
id = /[\w_-]+(?=[^\w\-\:])\b/
|
|
14
|
+
|
|
15
|
+
#Keywords from RFC7950 ; oriented at BNF style
|
|
16
|
+
def self.top_stmts_keywords
|
|
17
|
+
@top_stms_keywords ||= Set.new %w(
|
|
18
|
+
module submodule
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.module_header_stmts_keywords
|
|
23
|
+
@module_header_stmts_keywords ||= Set.new %w(
|
|
24
|
+
belongs-to namespace prefix yang-version
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.meta_stmts_keywords
|
|
29
|
+
@meta_stmts_keywords ||= Set.new %w(
|
|
30
|
+
contact description organization reference revision
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.linkage_stmts_keywords
|
|
35
|
+
@linkage_stmts_keywords ||= Set.new %w(
|
|
36
|
+
import include revision-date
|
|
37
|
+
)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.body_stmts_keywords
|
|
41
|
+
@body_stms_keywords ||= Set.new %w(
|
|
42
|
+
action argument augment deviation extension feature grouping identity
|
|
43
|
+
if-feature input notification output rpc typedef
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.data_def_stmts_keywords
|
|
48
|
+
@data_def_stms_keywords ||= Set.new %w(
|
|
49
|
+
anydata anyxml case choice config container deviate leaf leaf-list
|
|
50
|
+
list must presence refine uses when
|
|
51
|
+
)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self.type_stmts_keywords
|
|
55
|
+
@type_stmts_keywords ||= Set.new %w(
|
|
56
|
+
base bit default enum error-app-tag error-message fraction-digits
|
|
57
|
+
length max-elements min-elements modifier ordered-by path pattern
|
|
58
|
+
position range require-instance status type units value yin-element
|
|
59
|
+
)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def self.list_stmts_keywords
|
|
63
|
+
@list_stmts_keywords ||= Set.new %w(
|
|
64
|
+
key mandatory unique
|
|
65
|
+
)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
#RFC7950 other keywords
|
|
69
|
+
def self.constants_keywords
|
|
70
|
+
@constants_keywords ||= Set.new %w(
|
|
71
|
+
add current delete deprecated false invert-match max min
|
|
72
|
+
not-supported obsolete replace true unbounded user
|
|
73
|
+
)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
#RFC7950 Built-In Types
|
|
77
|
+
def self.types
|
|
78
|
+
@types ||= Set.new %w(
|
|
79
|
+
binary bits boolean decimal64 empty enumeration identityref
|
|
80
|
+
instance-identifier int16 int32 int64 int8 leafref string uint16
|
|
81
|
+
uint32 uint64 uint8 union
|
|
82
|
+
)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
state :comment do
|
|
86
|
+
rule %r/[^*\/]/, Comment
|
|
87
|
+
rule %r/\/\*/, Comment, :comment
|
|
88
|
+
rule %r/\*\//, Comment, :pop!
|
|
89
|
+
rule %r/[*\/]/, Comment
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
#Keyword::Reserved
|
|
93
|
+
#groups Name::Tag, Text::Whitespace
|
|
94
|
+
state :root do
|
|
95
|
+
rule %r/\s+/, Text::Whitespace
|
|
96
|
+
rule %r/[\{\}\;]+/, Punctuation
|
|
97
|
+
rule %r/(?<![\-\w])(and|or|not|\+|\.)(?![\-\w])/, Operator
|
|
98
|
+
|
|
99
|
+
rule %r/"(?:\\"|[^"])*?"/, Str::Double #for double quotes
|
|
100
|
+
rule %r/'(?:\\'|[^'])*?'/, Str::Single #for single quotes
|
|
101
|
+
|
|
102
|
+
rule %r/\/\*/, Comment, :comment
|
|
103
|
+
rule %r/\/\/.*?$/, Comment
|
|
104
|
+
|
|
105
|
+
#match BNF stmt for `node-identifier` with [ prefix ":"]
|
|
106
|
+
rule %r/(?:^|(?<=[\s{};]))([\w.-]+)(:)([\w.-]+)(?=[\s{};])/ do
|
|
107
|
+
groups Name::Namespace, Punctuation, Name
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
#match BNF stmt `date-arg-str`
|
|
111
|
+
rule %r/([0-9]{4}\-[0-9]{2}\-[0-9]{2})(?=[\s\{\}\;])/, Name::Label
|
|
112
|
+
rule %r/([0-9]+\.[0-9]+)(?=[\s\{\}\;])/, Num::Float
|
|
113
|
+
rule %r/([0-9]+)(?=[\s\{\}\;])/, Num::Integer
|
|
114
|
+
|
|
115
|
+
rule id do |m|
|
|
116
|
+
name = m[0].downcase
|
|
117
|
+
|
|
118
|
+
if self.class.top_stmts_keywords.include? name
|
|
119
|
+
token Keyword::Declaration
|
|
120
|
+
elsif self.class.module_header_stmts_keywords.include? name
|
|
121
|
+
token Keyword::Declaration
|
|
122
|
+
elsif self.class.meta_stmts_keywords.include? name
|
|
123
|
+
token Keyword::Declaration
|
|
124
|
+
elsif self.class.linkage_stmts_keywords.include? name
|
|
125
|
+
token Keyword::Declaration
|
|
126
|
+
elsif self.class.body_stmts_keywords.include? name
|
|
127
|
+
token Keyword::Declaration
|
|
128
|
+
elsif self.class.data_def_stmts_keywords.include? name
|
|
129
|
+
token Keyword::Declaration
|
|
130
|
+
elsif self.class.type_stmts_keywords.include? name
|
|
131
|
+
token Keyword::Declaration
|
|
132
|
+
elsif self.class.list_stmts_keywords.include? name
|
|
133
|
+
token Keyword::Declaration
|
|
134
|
+
elsif self.class.types.include? name
|
|
135
|
+
token Keyword::Type
|
|
136
|
+
elsif self.class.constants_keywords.include? name
|
|
137
|
+
token Name::Constant
|
|
138
|
+
else
|
|
139
|
+
token Name
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
rule %r/[^;{}\s'"]+/, Name
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
# this file is not require'd from the root. To use this plugin, run:
|
|
4
5
|
#
|
|
@@ -8,13 +9,19 @@ module Rouge
|
|
|
8
9
|
module Plugins
|
|
9
10
|
module Redcarpet
|
|
10
11
|
def block_code(code, language)
|
|
11
|
-
lexer =
|
|
12
|
+
lexer =
|
|
13
|
+
begin
|
|
14
|
+
Lexer.find_fancy(language, code)
|
|
15
|
+
rescue Guesser::Ambiguous => e
|
|
16
|
+
e.alternatives.first
|
|
17
|
+
end
|
|
18
|
+
lexer ||= Lexers::PlainText
|
|
12
19
|
|
|
13
20
|
# XXX HACK: Redcarpet strips hard tabs out of code blocks,
|
|
14
21
|
# so we assume you're not using leading spaces that aren't tabs,
|
|
15
22
|
# and just replace them here.
|
|
16
23
|
if lexer.tag == 'make'
|
|
17
|
-
code.gsub! /^ /, "\t"
|
|
24
|
+
code.gsub! %r/^ /, "\t"
|
|
18
25
|
end
|
|
19
26
|
|
|
20
27
|
formatter = rouge_formatter(lexer)
|