rouge_ecl 0.0.1
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 +7 -0
- data/Gemfile +26 -0
- data/LICENSE +186 -0
- data/bin/rougify +17 -0
- data/lib/rouge.rb +82 -0
- data/lib/rouge/cli.rb +429 -0
- data/lib/rouge/demos/abap +6 -0
- data/lib/rouge/demos/actionscript +4 -0
- data/lib/rouge/demos/apache +21 -0
- data/lib/rouge/demos/apiblueprint +33 -0
- data/lib/rouge/demos/applescript +2 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/biml +38 -0
- data/lib/rouge/demos/bsl +7 -0
- data/lib/rouge/demos/c +8 -0
- data/lib/rouge/demos/ceylon +7 -0
- data/lib/rouge/demos/cfscript +18 -0
- data/lib/rouge/demos/clojure +5 -0
- data/lib/rouge/demos/cmake +7 -0
- data/lib/rouge/demos/coffeescript +5 -0
- data/lib/rouge/demos/common_lisp +1 -0
- data/lib/rouge/demos/conf +4 -0
- data/lib/rouge/demos/console +6 -0
- data/lib/rouge/demos/coq +13 -0
- data/lib/rouge/demos/cpp +8 -0
- data/lib/rouge/demos/csharp +5 -0
- data/lib/rouge/demos/css +4 -0
- data/lib/rouge/demos/d +16 -0
- data/lib/rouge/demos/dart +6 -0
- data/lib/rouge/demos/diff +7 -0
- data/lib/rouge/demos/digdag +19 -0
- data/lib/rouge/demos/docker +9 -0
- data/lib/rouge/demos/dot +5 -0
- data/lib/rouge/demos/ecl +1 -0
- data/lib/rouge/demos/eiffel +30 -0
- data/lib/rouge/demos/elixir +1 -0
- data/lib/rouge/demos/elm +4 -0
- data/lib/rouge/demos/erb +1 -0
- data/lib/rouge/demos/erlang +7 -0
- data/lib/rouge/demos/factor +5 -0
- data/lib/rouge/demos/fortran +22 -0
- data/lib/rouge/demos/fsharp +12 -0
- data/lib/rouge/demos/gherkin +17 -0
- data/lib/rouge/demos/glsl +14 -0
- data/lib/rouge/demos/go +7 -0
- data/lib/rouge/demos/gradle +10 -0
- data/lib/rouge/demos/graphql +17 -0
- data/lib/rouge/demos/groovy +9 -0
- data/lib/rouge/demos/hack +5 -0
- data/lib/rouge/demos/haml +5 -0
- data/lib/rouge/demos/handlebars +7 -0
- data/lib/rouge/demos/haskell +6 -0
- data/lib/rouge/demos/html +8 -0
- data/lib/rouge/demos/http +14 -0
- data/lib/rouge/demos/hylang +10 -0
- data/lib/rouge/demos/idlang +8 -0
- data/lib/rouge/demos/igorpro +9 -0
- data/lib/rouge/demos/ini +4 -0
- data/lib/rouge/demos/io +11 -0
- data/lib/rouge/demos/irb +4 -0
- data/lib/rouge/demos/irb_output +2 -0
- data/lib/rouge/demos/java +5 -0
- data/lib/rouge/demos/javascript +1 -0
- data/lib/rouge/demos/jinja +9 -0
- data/lib/rouge/demos/json +1 -0
- data/lib/rouge/demos/json-doc +1 -0
- data/lib/rouge/demos/jsonnet +28 -0
- data/lib/rouge/demos/jsx +17 -0
- data/lib/rouge/demos/julia +11 -0
- data/lib/rouge/demos/kotlin +3 -0
- data/lib/rouge/demos/lasso +12 -0
- data/lib/rouge/demos/liquid +11 -0
- data/lib/rouge/demos/literate_coffeescript +3 -0
- data/lib/rouge/demos/literate_haskell +7 -0
- data/lib/rouge/demos/llvm +20 -0
- data/lib/rouge/demos/lua +12 -0
- data/lib/rouge/demos/make +6 -0
- data/lib/rouge/demos/markdown +4 -0
- data/lib/rouge/demos/matlab +6 -0
- data/lib/rouge/demos/moonscript +16 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/mxml +22 -0
- data/lib/rouge/demos/nasm +26 -0
- data/lib/rouge/demos/nginx +5 -0
- data/lib/rouge/demos/nim +27 -0
- data/lib/rouge/demos/nix +19 -0
- data/lib/rouge/demos/objective_c +18 -0
- data/lib/rouge/demos/ocaml +12 -0
- data/lib/rouge/demos/pascal +14 -0
- data/lib/rouge/demos/perl +5 -0
- data/lib/rouge/demos/php +3 -0
- data/lib/rouge/demos/plaintext +1 -0
- data/lib/rouge/demos/plist +142 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/powershell +49 -0
- data/lib/rouge/demos/praat +26 -0
- data/lib/rouge/demos/prolog +9 -0
- data/lib/rouge/demos/prometheus +9 -0
- data/lib/rouge/demos/properties +7 -0
- data/lib/rouge/demos/protobuf +5 -0
- data/lib/rouge/demos/puppet +6 -0
- data/lib/rouge/demos/python +6 -0
- data/lib/rouge/demos/q +2 -0
- data/lib/rouge/demos/qml +9 -0
- data/lib/rouge/demos/r +8 -0
- data/lib/rouge/demos/racket +24 -0
- data/lib/rouge/demos/ruby +9 -0
- data/lib/rouge/demos/rust +12 -0
- data/lib/rouge/demos/sass +3 -0
- data/lib/rouge/demos/scala +3 -0
- data/lib/rouge/demos/scheme +4 -0
- data/lib/rouge/demos/scss +5 -0
- data/lib/rouge/demos/sed +4 -0
- data/lib/rouge/demos/shell +2 -0
- data/lib/rouge/demos/sieve +10 -0
- data/lib/rouge/demos/slim +17 -0
- data/lib/rouge/demos/smalltalk +6 -0
- data/lib/rouge/demos/smarty +12 -0
- data/lib/rouge/demos/sml +4 -0
- data/lib/rouge/demos/sql +1 -0
- data/lib/rouge/demos/swift +5 -0
- data/lib/rouge/demos/tap +5 -0
- data/lib/rouge/demos/tcl +1 -0
- data/lib/rouge/demos/tex +1 -0
- data/lib/rouge/demos/toml +9 -0
- data/lib/rouge/demos/tsx +17 -0
- data/lib/rouge/demos/tulip +13 -0
- data/lib/rouge/demos/turtle +26 -0
- data/lib/rouge/demos/twig +9 -0
- data/lib/rouge/demos/typescript +1 -0
- data/lib/rouge/demos/vala +8 -0
- data/lib/rouge/demos/vb +4 -0
- data/lib/rouge/demos/verilog +27 -0
- data/lib/rouge/demos/vhdl +23 -0
- data/lib/rouge/demos/viml +14 -0
- data/lib/rouge/demos/vue +11 -0
- data/lib/rouge/demos/wollok +11 -0
- data/lib/rouge/demos/xml +2 -0
- data/lib/rouge/demos/yaml +4 -0
- data/lib/rouge/formatter.rb +75 -0
- data/lib/rouge/formatters/html.rb +37 -0
- data/lib/rouge/formatters/html_inline.rb +30 -0
- data/lib/rouge/formatters/html_legacy.rb +44 -0
- data/lib/rouge/formatters/html_linewise.rb +27 -0
- data/lib/rouge/formatters/html_pygments.rb +16 -0
- data/lib/rouge/formatters/html_table.rb +61 -0
- data/lib/rouge/formatters/null.rb +19 -0
- data/lib/rouge/formatters/terminal256.rb +180 -0
- data/lib/rouge/guesser.rb +55 -0
- data/lib/rouge/guessers/disambiguation.rb +101 -0
- data/lib/rouge/guessers/filename.rb +25 -0
- data/lib/rouge/guessers/glob_mapping.rb +43 -0
- data/lib/rouge/guessers/mimetype.rb +14 -0
- data/lib/rouge/guessers/modeline.rb +44 -0
- data/lib/rouge/guessers/source.rb +29 -0
- data/lib/rouge/guessers/util.rb +32 -0
- data/lib/rouge/lexer.rb +461 -0
- data/lib/rouge/lexers/abap.rb +238 -0
- data/lib/rouge/lexers/actionscript.rb +195 -0
- data/lib/rouge/lexers/apache.rb +71 -0
- data/lib/rouge/lexers/apache/keywords.yml +764 -0
- data/lib/rouge/lexers/apiblueprint.rb +47 -0
- data/lib/rouge/lexers/apple_script.rb +367 -0
- data/lib/rouge/lexers/awk.rb +161 -0
- data/lib/rouge/lexers/biml.rb +41 -0
- data/lib/rouge/lexers/bsl.rb +81 -0
- data/lib/rouge/lexers/c.rb +212 -0
- data/lib/rouge/lexers/ceylon.rb +123 -0
- data/lib/rouge/lexers/cfscript.rb +153 -0
- data/lib/rouge/lexers/clojure.rb +112 -0
- data/lib/rouge/lexers/cmake.rb +206 -0
- data/lib/rouge/lexers/coffeescript.rb +174 -0
- data/lib/rouge/lexers/common_lisp.rb +345 -0
- data/lib/rouge/lexers/conf.rb +24 -0
- data/lib/rouge/lexers/console.rb +136 -0
- data/lib/rouge/lexers/coq.rb +187 -0
- data/lib/rouge/lexers/cpp.rb +78 -0
- data/lib/rouge/lexers/csharp.rb +114 -0
- data/lib/rouge/lexers/css.rb +273 -0
- data/lib/rouge/lexers/d.rb +176 -0
- data/lib/rouge/lexers/dart.rb +104 -0
- data/lib/rouge/lexers/diff.rb +31 -0
- data/lib/rouge/lexers/digdag.rb +68 -0
- data/lib/rouge/lexers/docker.rb +50 -0
- data/lib/rouge/lexers/dot.rb +68 -0
- data/lib/rouge/lexers/ecl.rb +138 -0
- data/lib/rouge/lexers/eiffel.rb +65 -0
- data/lib/rouge/lexers/elixir.rb +133 -0
- data/lib/rouge/lexers/elm.rb +89 -0
- data/lib/rouge/lexers/erb.rb +52 -0
- data/lib/rouge/lexers/erlang.rb +114 -0
- data/lib/rouge/lexers/factor.rb +302 -0
- data/lib/rouge/lexers/fortran.rb +176 -0
- data/lib/rouge/lexers/fsharp.rb +118 -0
- data/lib/rouge/lexers/gherkin.rb +137 -0
- data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
- data/lib/rouge/lexers/glsl.rb +135 -0
- data/lib/rouge/lexers/go.rb +174 -0
- data/lib/rouge/lexers/gradle.rb +37 -0
- data/lib/rouge/lexers/graphql.rb +243 -0
- data/lib/rouge/lexers/groovy.rb +112 -0
- data/lib/rouge/lexers/hack.rb +48 -0
- data/lib/rouge/lexers/haml.rb +229 -0
- data/lib/rouge/lexers/handlebars.rb +79 -0
- data/lib/rouge/lexers/haskell.rb +182 -0
- data/lib/rouge/lexers/html.rb +139 -0
- data/lib/rouge/lexers/http.rb +80 -0
- data/lib/rouge/lexers/hylang.rb +93 -0
- data/lib/rouge/lexers/idlang.rb +310 -0
- data/lib/rouge/lexers/igorpro.rb +408 -0
- data/lib/rouge/lexers/ini.rb +53 -0
- data/lib/rouge/lexers/io.rb +68 -0
- data/lib/rouge/lexers/irb.rb +66 -0
- data/lib/rouge/lexers/java.rb +87 -0
- data/lib/rouge/lexers/javascript.rb +281 -0
- data/lib/rouge/lexers/jinja.rb +137 -0
- data/lib/rouge/lexers/json.rb +29 -0
- data/lib/rouge/lexers/json_doc.rb +23 -0
- data/lib/rouge/lexers/jsonnet.rb +151 -0
- data/lib/rouge/lexers/jsx.rb +102 -0
- data/lib/rouge/lexers/julia.rb +172 -0
- data/lib/rouge/lexers/kotlin.rb +79 -0
- data/lib/rouge/lexers/lasso.rb +214 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -0
- data/lib/rouge/lexers/liquid.rb +287 -0
- data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
- data/lib/rouge/lexers/literate_haskell.rb +36 -0
- data/lib/rouge/lexers/llvm.rb +80 -0
- data/lib/rouge/lexers/lua.rb +125 -0
- data/lib/rouge/lexers/lua/builtins.rb +22 -0
- data/lib/rouge/lexers/make.rb +112 -0
- data/lib/rouge/lexers/markdown.rb +154 -0
- data/lib/rouge/lexers/matlab.rb +71 -0
- data/lib/rouge/lexers/matlab/builtins.rb +11 -0
- data/lib/rouge/lexers/moonscript.rb +114 -0
- data/lib/rouge/lexers/mosel.rb +231 -0
- data/lib/rouge/lexers/mxml.rb +68 -0
- data/lib/rouge/lexers/nasm.rb +198 -0
- data/lib/rouge/lexers/nginx.rb +71 -0
- data/lib/rouge/lexers/nim.rb +152 -0
- data/lib/rouge/lexers/nix.rb +205 -0
- data/lib/rouge/lexers/objective_c.rb +194 -0
- data/lib/rouge/lexers/ocaml.rb +100 -0
- data/lib/rouge/lexers/pascal.rb +66 -0
- data/lib/rouge/lexers/perl.rb +196 -0
- data/lib/rouge/lexers/php.rb +193 -0
- data/lib/rouge/lexers/php/builtins.rb +194 -0
- data/lib/rouge/lexers/plain_text.rb +26 -0
- data/lib/rouge/lexers/plist.rb +45 -0
- data/lib/rouge/lexers/pony.rb +93 -0
- data/lib/rouge/lexers/powershell.rb +678 -0
- data/lib/rouge/lexers/praat.rb +350 -0
- data/lib/rouge/lexers/prolog.rb +59 -0
- data/lib/rouge/lexers/prometheus.rb +121 -0
- data/lib/rouge/lexers/properties.rb +51 -0
- data/lib/rouge/lexers/protobuf.rb +70 -0
- data/lib/rouge/lexers/puppet.rb +128 -0
- data/lib/rouge/lexers/python.rb +232 -0
- data/lib/rouge/lexers/q.rb +123 -0
- data/lib/rouge/lexers/qml.rb +73 -0
- data/lib/rouge/lexers/r.rb +89 -0
- data/lib/rouge/lexers/racket.rb +543 -0
- data/lib/rouge/lexers/ruby.rb +437 -0
- data/lib/rouge/lexers/rust.rb +192 -0
- data/lib/rouge/lexers/sass.rb +74 -0
- data/lib/rouge/lexers/sass/common.rb +180 -0
- data/lib/rouge/lexers/scala.rb +142 -0
- data/lib/rouge/lexers/scheme.rb +112 -0
- data/lib/rouge/lexers/scss.rb +34 -0
- data/lib/rouge/lexers/sed.rb +172 -0
- data/lib/rouge/lexers/shell.rb +189 -0
- data/lib/rouge/lexers/sieve.rb +96 -0
- data/lib/rouge/lexers/slim.rb +228 -0
- data/lib/rouge/lexers/smalltalk.rb +116 -0
- data/lib/rouge/lexers/smarty.rb +80 -0
- data/lib/rouge/lexers/sml.rb +344 -0
- data/lib/rouge/lexers/sql.rb +140 -0
- data/lib/rouge/lexers/swift.rb +181 -0
- data/lib/rouge/lexers/tap.rb +87 -0
- data/lib/rouge/lexers/tcl.rb +192 -0
- data/lib/rouge/lexers/tex.rb +69 -0
- data/lib/rouge/lexers/toml.rb +67 -0
- data/lib/rouge/lexers/tsx.rb +19 -0
- data/lib/rouge/lexers/tulip.rb +106 -0
- data/lib/rouge/lexers/turtle.rb +63 -0
- data/lib/rouge/lexers/twig.rb +39 -0
- data/lib/rouge/lexers/typescript.rb +22 -0
- data/lib/rouge/lexers/typescript/common.rb +33 -0
- data/lib/rouge/lexers/vala.rb +77 -0
- data/lib/rouge/lexers/vb.rb +164 -0
- data/lib/rouge/lexers/verilog.rb +164 -0
- data/lib/rouge/lexers/vhdl.rb +97 -0
- data/lib/rouge/lexers/viml.rb +101 -0
- data/lib/rouge/lexers/viml/keywords.rb +12 -0
- data/lib/rouge/lexers/vue.rb +122 -0
- data/lib/rouge/lexers/wollok.rb +103 -0
- data/lib/rouge/lexers/xml.rb +57 -0
- data/lib/rouge/lexers/yaml.rb +373 -0
- data/lib/rouge/plugins/redcarpet.rb +30 -0
- data/lib/rouge/regex_lexer.rb +441 -0
- data/lib/rouge/template_lexer.rb +20 -0
- data/lib/rouge/text_analyzer.rb +49 -0
- data/lib/rouge/theme.rb +213 -0
- data/lib/rouge/themes/base16.rb +130 -0
- data/lib/rouge/themes/colorful.rb +67 -0
- data/lib/rouge/themes/github.rb +71 -0
- data/lib/rouge/themes/gruvbox.rb +167 -0
- data/lib/rouge/themes/igor_pro.rb +20 -0
- data/lib/rouge/themes/molokai.rb +82 -0
- data/lib/rouge/themes/monokai.rb +92 -0
- data/lib/rouge/themes/monokai_sublime.rb +90 -0
- data/lib/rouge/themes/pastie.rb +69 -0
- data/lib/rouge/themes/thankful_eyes.rb +74 -0
- data/lib/rouge/themes/tulip.rb +69 -0
- data/lib/rouge/token.rb +182 -0
- data/lib/rouge/util.rb +101 -0
- data/lib/rouge/version.rb +7 -0
- data/rouge.gemspec +23 -0
- metadata +365 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Properties < RegexLexer
|
|
6
|
+
title ".properties"
|
|
7
|
+
desc '.properties config files for Java'
|
|
8
|
+
tag 'properties'
|
|
9
|
+
|
|
10
|
+
filenames '*.properties'
|
|
11
|
+
mimetypes 'text/x-java-properties'
|
|
12
|
+
|
|
13
|
+
identifier = /[\w.-]+/
|
|
14
|
+
|
|
15
|
+
state :basic do
|
|
16
|
+
rule /[!#].*?\n/, Comment
|
|
17
|
+
rule /\s+/, Text
|
|
18
|
+
rule /\\\n/, Str::Escape
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
state :root do
|
|
22
|
+
mixin :basic
|
|
23
|
+
|
|
24
|
+
rule /(#{identifier})(\s*)([=:])/ do
|
|
25
|
+
groups Name::Property, Text, Punctuation
|
|
26
|
+
push :value
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
state :value do
|
|
31
|
+
rule /\n/, Text, :pop!
|
|
32
|
+
mixin :basic
|
|
33
|
+
rule /"/, Str, :dq
|
|
34
|
+
rule /'.*?'/, Str
|
|
35
|
+
mixin :esc_str
|
|
36
|
+
rule /[^\\\n]+/, Str
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
state :dq do
|
|
40
|
+
rule /"/, Str, :pop!
|
|
41
|
+
mixin :esc_str
|
|
42
|
+
rule /[^\\"]+/m, Str
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
state :esc_str do
|
|
46
|
+
rule /\\u[0-9]{4}/, Str::Escape
|
|
47
|
+
rule /\\./m, Str::Escape
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Protobuf < RegexLexer
|
|
6
|
+
title 'Protobuf'
|
|
7
|
+
desc 'Google\'s language-neutral, platform-neutral, extensible mechanism for serializing structured data'
|
|
8
|
+
tag 'protobuf'
|
|
9
|
+
aliases 'proto'
|
|
10
|
+
filenames '*.proto'
|
|
11
|
+
mimetypes 'text/x-proto'
|
|
12
|
+
|
|
13
|
+
kw = /\b(ctype|default|extensions|import|max|oneof|option|optional|packed|repeated|required|returns|rpc|to)\b/
|
|
14
|
+
datatype = /\b(bool|bytes|double|fixed32|fixed64|float|int32|int64|sfixed32|sfixed64|sint32|sint64|string|uint32|uint64)\b/
|
|
15
|
+
|
|
16
|
+
state :root do
|
|
17
|
+
rule /[\s]+/, Text
|
|
18
|
+
rule /[,;{}\[\]()]/, Punctuation
|
|
19
|
+
rule /\/(\\\n)?\/(\n|(.|\n)*?[^\\]\n)/, Comment::Single
|
|
20
|
+
rule /\/(\\\n)?\*(.|\n)*?\*(\\\n)?\//, Comment::Multiline
|
|
21
|
+
rule kw, Keyword
|
|
22
|
+
rule datatype, Keyword::Type
|
|
23
|
+
rule /true|false/, Keyword::Constant
|
|
24
|
+
rule /(package)(\s+)/ do
|
|
25
|
+
groups Keyword::Namespace, Text
|
|
26
|
+
push :package
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
rule /(message|extend)(\s+)/ do
|
|
30
|
+
groups Keyword::Declaration, Text
|
|
31
|
+
push :message
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
rule /(enum|group|service)(\s+)/ do
|
|
35
|
+
groups Keyword::Declaration, Text
|
|
36
|
+
push :type
|
|
37
|
+
end
|
|
38
|
+
|
|
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
|
|
49
|
+
groups Name::Attribute, Text, Operator
|
|
50
|
+
end
|
|
51
|
+
rule /[a-zA-Z_][\w.]*/, Name
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
state :package do
|
|
55
|
+
rule /[a-zA-Z_]\w*/, Name::Namespace, :pop!
|
|
56
|
+
rule(//) { pop! }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
state :message do
|
|
60
|
+
rule /[a-zA-Z_]\w*/, Name::Class, :pop!
|
|
61
|
+
rule(//) { pop! }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
state :type do
|
|
65
|
+
rule /[a-zA-Z_]\w*/, Name, :pop!
|
|
66
|
+
rule(//) { pop! }
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Puppet < RegexLexer
|
|
6
|
+
title "Puppet"
|
|
7
|
+
desc 'The Puppet configuration management language (puppetlabs.org)'
|
|
8
|
+
tag 'puppet'
|
|
9
|
+
aliases 'pp'
|
|
10
|
+
filenames '*.pp'
|
|
11
|
+
|
|
12
|
+
def self.detect?(text)
|
|
13
|
+
return true if text.shebang? 'puppet-apply'
|
|
14
|
+
return true if text.shebang? 'puppet'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.keywords
|
|
18
|
+
@keywords ||= Set.new %w(
|
|
19
|
+
and case class default define else elsif if in import inherits
|
|
20
|
+
node unless
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.constants
|
|
25
|
+
@constants ||= Set.new %w(
|
|
26
|
+
false true undef
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.metaparameters
|
|
31
|
+
@metaparameters ||= Set.new %w(
|
|
32
|
+
before require notify subscribe
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
id = /[a-z]\w*/
|
|
37
|
+
cap_id = /[A-Z]\w*/
|
|
38
|
+
qualname = /(::)?(#{id}::)*\w+/
|
|
39
|
+
|
|
40
|
+
state :whitespace do
|
|
41
|
+
rule /\s+/m, Text
|
|
42
|
+
rule /#.*?\n/, Comment
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
state :root do
|
|
46
|
+
mixin :whitespace
|
|
47
|
+
|
|
48
|
+
rule /[$]#{qualname}/, Name::Variable
|
|
49
|
+
rule /(#{id})(?=\s*[=+]>)/m do |m|
|
|
50
|
+
if self.class.metaparameters.include? m[0]
|
|
51
|
+
token Keyword::Pseudo
|
|
52
|
+
else
|
|
53
|
+
token Name::Property
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
rule /(#{qualname})(?=\s*[(])/m, Name::Function
|
|
58
|
+
rule cap_id, Name::Class
|
|
59
|
+
|
|
60
|
+
rule /[+=|~-]>|<[|~-]/, Punctuation
|
|
61
|
+
rule /[:}();\[\]]/, Punctuation
|
|
62
|
+
|
|
63
|
+
# HACK for case statements and selectors
|
|
64
|
+
rule /{/, Punctuation, :regex_allowed
|
|
65
|
+
rule /,/, Punctuation, :regex_allowed
|
|
66
|
+
|
|
67
|
+
rule /(in|and|or)\b/, Operator::Word
|
|
68
|
+
rule /[=!<>]=/, Operator
|
|
69
|
+
rule /[=!]~/, Operator, :regex_allowed
|
|
70
|
+
rule %r([<>!+*/-]), Operator
|
|
71
|
+
|
|
72
|
+
rule /(class|include)(\s*)(#{qualname})/ do
|
|
73
|
+
groups Keyword, Text, Name::Class
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
rule /node\b/, Keyword, :regex_allowed
|
|
77
|
+
|
|
78
|
+
rule /'(\\[\\']|[^'])*'/m, Str::Single
|
|
79
|
+
rule /"/, Str::Double, :dquotes
|
|
80
|
+
|
|
81
|
+
rule /\d+([.]\d+)?(e[+-]\d+)?/, Num
|
|
82
|
+
|
|
83
|
+
# a valid regex. TODO: regexes are only allowed
|
|
84
|
+
# in certain places in puppet.
|
|
85
|
+
rule qualname do |m|
|
|
86
|
+
if self.class.keywords.include? m[0]
|
|
87
|
+
token Keyword
|
|
88
|
+
elsif self.class.constants.include? m[0]
|
|
89
|
+
token Keyword::Constant
|
|
90
|
+
else
|
|
91
|
+
token Name
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
state :regex_allowed do
|
|
97
|
+
mixin :whitespace
|
|
98
|
+
rule %r(/), Str::Regex, :regex
|
|
99
|
+
|
|
100
|
+
rule(//) { pop! }
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
state :regex do
|
|
104
|
+
rule %r(/), Str::Regex, :pop!
|
|
105
|
+
rule /\\./, Str::Escape
|
|
106
|
+
rule /[(){}]/, Str::Interpol
|
|
107
|
+
rule /\[/, Str::Interpol, :regex_class
|
|
108
|
+
rule /./, Str::Regex
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
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
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
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
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Python < RegexLexer
|
|
6
|
+
title "Python"
|
|
7
|
+
desc "The Python programming language (python.org)"
|
|
8
|
+
tag 'python'
|
|
9
|
+
aliases 'py'
|
|
10
|
+
filenames '*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac'
|
|
11
|
+
mimetypes 'text/x-python', 'application/x-python'
|
|
12
|
+
|
|
13
|
+
def self.detect?(text)
|
|
14
|
+
return true if text.shebang?(/pythonw?(3|2(\.\d)?)?/)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.keywords
|
|
18
|
+
@keywords ||= %w(
|
|
19
|
+
assert break continue del elif else except exec
|
|
20
|
+
finally for global if lambda pass print raise
|
|
21
|
+
return try while yield as with from import yield
|
|
22
|
+
async await
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.builtins
|
|
27
|
+
@builtins ||= %w(
|
|
28
|
+
__import__ abs all any apply basestring bin bool buffer
|
|
29
|
+
bytearray bytes callable chr classmethod cmp coerce compile
|
|
30
|
+
complex delattr dict dir divmod enumerate eval execfile exit
|
|
31
|
+
file filter float frozenset getattr globals hasattr hash hex id
|
|
32
|
+
input int intern isinstance issubclass iter len list locals
|
|
33
|
+
long map max min next object oct open ord pow property range
|
|
34
|
+
raw_input reduce reload repr reversed round set setattr slice
|
|
35
|
+
sorted staticmethod str sum super tuple type unichr unicode
|
|
36
|
+
vars xrange zip
|
|
37
|
+
)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.builtins_pseudo
|
|
41
|
+
@builtins_pseudo ||= %w(self None Ellipsis NotImplemented False True)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.exceptions
|
|
45
|
+
@exceptions ||= %w(
|
|
46
|
+
ArithmeticError AssertionError AttributeError
|
|
47
|
+
BaseException DeprecationWarning EOFError EnvironmentError
|
|
48
|
+
Exception FloatingPointError FutureWarning GeneratorExit IOError
|
|
49
|
+
ImportError ImportWarning IndentationError IndexError KeyError
|
|
50
|
+
KeyboardInterrupt LookupError MemoryError NameError
|
|
51
|
+
NotImplemented NotImplementedError OSError OverflowError
|
|
52
|
+
OverflowWarning PendingDeprecationWarning ReferenceError
|
|
53
|
+
RuntimeError RuntimeWarning StandardError StopIteration
|
|
54
|
+
SyntaxError SyntaxWarning SystemError SystemExit TabError
|
|
55
|
+
TypeError UnboundLocalError UnicodeDecodeError
|
|
56
|
+
UnicodeEncodeError UnicodeError UnicodeTranslateError
|
|
57
|
+
UnicodeWarning UserWarning ValueError VMSError Warning
|
|
58
|
+
WindowsError ZeroDivisionError
|
|
59
|
+
)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
identifier = /[a-z_][a-z0-9_]*/i
|
|
63
|
+
dotted_identifier = /[a-z_.][a-z0-9_.]*/i
|
|
64
|
+
state :root do
|
|
65
|
+
rule /\n+/m, Text
|
|
66
|
+
rule /^(:)(\s*)([ru]{,2}""".*?""")/mi do
|
|
67
|
+
groups Punctuation, Text, Str::Doc
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
rule /[^\S\n]+/, Text
|
|
71
|
+
rule /#.*$/, Comment
|
|
72
|
+
rule /[\[\]{}:(),;]/, Punctuation
|
|
73
|
+
rule /\\\n/, Text
|
|
74
|
+
rule /\\/, Text
|
|
75
|
+
|
|
76
|
+
rule /(in|is|and|or|not)\b/, Operator::Word
|
|
77
|
+
rule /!=|==|<<|>>|[-~+\/*%=<>&^|.]/, Operator
|
|
78
|
+
|
|
79
|
+
rule /(from)((?:\\\s|\s)+)(#{dotted_identifier})((?:\\\s|\s)+)(import)/ do
|
|
80
|
+
groups Keyword::Namespace,
|
|
81
|
+
Text,
|
|
82
|
+
Name::Namespace,
|
|
83
|
+
Text,
|
|
84
|
+
Keyword::Namespace
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
rule /(import)(\s+)(#{dotted_identifier})/ do
|
|
88
|
+
groups Keyword::Namespace, Text, Name::Namespace
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
rule /(def)((?:\s|\\\s)+)/ do
|
|
92
|
+
groups Keyword, Text
|
|
93
|
+
push :funcname
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
rule /(class)((?:\s|\\\s)+)/ do
|
|
97
|
+
groups Keyword, Text
|
|
98
|
+
push :classname
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# TODO: not in python 3
|
|
102
|
+
rule /`.*?`/, Str::Backtick
|
|
103
|
+
rule /(?:r|ur|ru)"""/i, Str, :raw_tdqs
|
|
104
|
+
rule /(?:r|ur|ru)'''/i, Str, :raw_tsqs
|
|
105
|
+
rule /(?:r|ur|ru)"/i, Str, :raw_dqs
|
|
106
|
+
rule /(?:r|ur|ru)'/i, Str, :raw_sqs
|
|
107
|
+
rule /u?"""/i, Str, :tdqs
|
|
108
|
+
rule /u?'''/i, Str, :tsqs
|
|
109
|
+
rule /u?"/i, Str, :dqs
|
|
110
|
+
rule /u?'/i, Str, :sqs
|
|
111
|
+
|
|
112
|
+
rule /@#{dotted_identifier}/i, Name::Decorator
|
|
113
|
+
|
|
114
|
+
# using negative lookbehind so we don't match property names
|
|
115
|
+
rule /(?<!\.)#{identifier}/ do |m|
|
|
116
|
+
if self.class.keywords.include? m[0]
|
|
117
|
+
token Keyword
|
|
118
|
+
elsif self.class.exceptions.include? m[0]
|
|
119
|
+
token Name::Builtin
|
|
120
|
+
elsif self.class.builtins.include? m[0]
|
|
121
|
+
token Name::Builtin
|
|
122
|
+
elsif self.class.builtins_pseudo.include? m[0]
|
|
123
|
+
token Name::Builtin::Pseudo
|
|
124
|
+
else
|
|
125
|
+
token Name
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
rule identifier, Name
|
|
130
|
+
|
|
131
|
+
rule /(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?/i, Num::Float
|
|
132
|
+
rule /\d+e[+-]?[0-9]+/i, Num::Float
|
|
133
|
+
rule /0[0-7]+/, Num::Oct
|
|
134
|
+
rule /0x[a-f0-9]+/i, Num::Hex
|
|
135
|
+
rule /\d+L/, Num::Integer::Long
|
|
136
|
+
rule /\d+/, Num::Integer
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
state :funcname do
|
|
140
|
+
rule identifier, Name::Function, :pop!
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
state :classname do
|
|
144
|
+
rule identifier, Name::Class, :pop!
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
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!
|
|
153
|
+
mixin :root
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
state :yield do
|
|
157
|
+
mixin :raise
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
state :strings do
|
|
161
|
+
rule /%(\([a-z0-9_]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/i, Str::Interpol
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
state :strings_double do
|
|
165
|
+
rule /[^\\"%\n]+/, Str
|
|
166
|
+
mixin :strings
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
state :strings_single do
|
|
170
|
+
rule /[^\\'%\n]+/, Str
|
|
171
|
+
mixin :strings
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
state :nl do
|
|
175
|
+
rule /\n/, Str
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
state :escape do
|
|
179
|
+
rule %r(\\
|
|
180
|
+
( [\\abfnrtv"']
|
|
181
|
+
| \n
|
|
182
|
+
| N{[a-zA-z][a-zA-Z ]+[a-zA-Z]}
|
|
183
|
+
| u[a-fA-F0-9]{4}
|
|
184
|
+
| U[a-fA-F0-9]{8}
|
|
185
|
+
| x[a-fA-F0-9]{2}
|
|
186
|
+
| [0-7]{1,3}
|
|
187
|
+
)
|
|
188
|
+
)x, Str::Escape
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
state :raw_escape do
|
|
192
|
+
rule /\\./, Str
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
state :dqs do
|
|
196
|
+
rule /"/, Str, :pop!
|
|
197
|
+
mixin :escape
|
|
198
|
+
mixin :strings_double
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
state :sqs do
|
|
202
|
+
rule /'/, Str, :pop!
|
|
203
|
+
mixin :escape
|
|
204
|
+
mixin :strings_single
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
state :tdqs do
|
|
208
|
+
rule /"""/, Str, :pop!
|
|
209
|
+
rule /"/, Str
|
|
210
|
+
mixin :escape
|
|
211
|
+
mixin :strings_double
|
|
212
|
+
mixin :nl
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
state :tsqs do
|
|
216
|
+
rule /'''/, Str, :pop!
|
|
217
|
+
rule /'/, Str
|
|
218
|
+
mixin :escape
|
|
219
|
+
mixin :strings_single
|
|
220
|
+
mixin :nl
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
%w(tdqs tsqs dqs sqs).each do |qtype|
|
|
224
|
+
state :"raw_#{qtype}" do
|
|
225
|
+
mixin :raw_escape
|
|
226
|
+
mixin :"#{qtype}"
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
end
|