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,153 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
|
|
6
|
+
class Cfscript < RegexLexer
|
|
7
|
+
title "CFScript"
|
|
8
|
+
desc 'CFScript, the CFML scripting language'
|
|
9
|
+
tag 'cfscript'
|
|
10
|
+
aliases 'cfc'
|
|
11
|
+
filenames '*.cfc'
|
|
12
|
+
|
|
13
|
+
def self.keywords
|
|
14
|
+
@keywords ||= %w(
|
|
15
|
+
if else var xml default break switch do try catch throw in continue for return while required
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.declarations
|
|
20
|
+
@declarations ||= %w(
|
|
21
|
+
component property function remote public package private
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.types
|
|
26
|
+
@types ||= %w(
|
|
27
|
+
any array binary boolean component date guid numeric query string struct uuid void xml
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
constants = %w(application session client cookie super this variables arguments cgi)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
operators = %w(\+\+ -- && \|\| <= >= < > == != mod eq lt gt lte gte not is and or xor eqv imp equal contains \? )
|
|
35
|
+
dotted_id = /[$a-zA-Z_][a-zA-Z0-9_.]*/
|
|
36
|
+
|
|
37
|
+
state :root do
|
|
38
|
+
mixin :comments_and_whitespace
|
|
39
|
+
rule /(?:#{operators.join('|')}|does not contain|greater than(?: or equal to)?|less than(?: or equal to)?)\b/i, Operator, :expr_start
|
|
40
|
+
rule %r([-<>+*%&|\^/!=]=?), Operator, :expr_start
|
|
41
|
+
|
|
42
|
+
rule /[(\[,]/, Punctuation, :expr_start
|
|
43
|
+
rule /;/, Punctuation, :statement
|
|
44
|
+
rule /[)\].]/, Punctuation
|
|
45
|
+
|
|
46
|
+
rule /[?]/ do
|
|
47
|
+
token Punctuation
|
|
48
|
+
push :ternary
|
|
49
|
+
push :expr_start
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
rule /[{}]/, Punctuation, :statement
|
|
53
|
+
|
|
54
|
+
rule /(?:#{constants.join('|')})\b/, Name::Constant
|
|
55
|
+
rule /(?:true|false|null)\b/, Keyword::Constant
|
|
56
|
+
rule /import\b/, Keyword::Namespace, :import
|
|
57
|
+
rule /(#{dotted_id})(\s*)(:)(\s*)/ do
|
|
58
|
+
groups Name, Text, Punctuation, Text
|
|
59
|
+
push :expr_start
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
rule /([A-Za-z_$][\w.]*)(\s*)(\()/ do |m|
|
|
63
|
+
if self.class.keywords.include? m[1]
|
|
64
|
+
token Keyword, m[1]
|
|
65
|
+
token Text, m[2]
|
|
66
|
+
token Punctuation, m[3]
|
|
67
|
+
else
|
|
68
|
+
token Name::Function, m[1]
|
|
69
|
+
token Text, m[2]
|
|
70
|
+
token Punctuation, m[3]
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
rule dotted_id do |m|
|
|
75
|
+
if self.class.declarations.include? m[0]
|
|
76
|
+
token Keyword::Declaration
|
|
77
|
+
push :expr_start
|
|
78
|
+
elsif self.class.keywords.include? m[0]
|
|
79
|
+
token Keyword
|
|
80
|
+
push :expr_start
|
|
81
|
+
elsif self.class.types.include? m[0]
|
|
82
|
+
token Keyword::Type
|
|
83
|
+
push :expr_start
|
|
84
|
+
else
|
|
85
|
+
token Name::Other
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
rule /[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
|
|
90
|
+
rule /0x[0-9a-fA-F]+/, Num::Hex
|
|
91
|
+
rule /[0-9]+/, Num::Integer
|
|
92
|
+
rule /"(\\\\|\\"|[^"])*"/, Str::Double
|
|
93
|
+
rule /'(\\\\|\\'|[^'])*'/, Str::Single
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# same as java, broken out
|
|
98
|
+
state :comments_and_whitespace do
|
|
99
|
+
rule /\s+/, Text
|
|
100
|
+
rule %r(//.*?$), Comment::Single
|
|
101
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
state :expr_start do
|
|
105
|
+
mixin :comments_and_whitespace
|
|
106
|
+
|
|
107
|
+
rule /[{]/, Punctuation, :object
|
|
108
|
+
|
|
109
|
+
rule //, Text, :pop!
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
state :statement do
|
|
113
|
+
|
|
114
|
+
rule /[{}]/, Punctuation
|
|
115
|
+
|
|
116
|
+
mixin :expr_start
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# object literals
|
|
120
|
+
state :object do
|
|
121
|
+
mixin :comments_and_whitespace
|
|
122
|
+
rule /[}]/ do
|
|
123
|
+
token Punctuation
|
|
124
|
+
push :expr_start
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
rule /(#{dotted_id})(\s*)(:)/ do
|
|
128
|
+
groups Name::Other, Text, Punctuation
|
|
129
|
+
push :expr_start
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
rule /:/, Punctuation
|
|
133
|
+
mixin :root
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# ternary expressions, where <dotted_id>: is not a label!
|
|
137
|
+
state :ternary do
|
|
138
|
+
rule /:/ do
|
|
139
|
+
token Punctuation
|
|
140
|
+
goto :expr_start
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
mixin :root
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
state :import do
|
|
147
|
+
rule /\s+/m, Text
|
|
148
|
+
rule /[a-z0-9_.]+\*?/i, Name::Namespace, :pop!
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Clojure < RegexLexer
|
|
6
|
+
title "Clojure"
|
|
7
|
+
desc "The Clojure programming language (clojure.org)"
|
|
8
|
+
|
|
9
|
+
tag 'clojure'
|
|
10
|
+
aliases 'clj', 'cljs'
|
|
11
|
+
|
|
12
|
+
filenames '*.clj', '*.cljs', '*.cljc', 'build.boot', '*.edn'
|
|
13
|
+
|
|
14
|
+
mimetypes 'text/x-clojure', 'application/x-clojure'
|
|
15
|
+
|
|
16
|
+
def self.keywords
|
|
17
|
+
@keywords ||= Set.new %w(
|
|
18
|
+
fn def defn defmacro defmethod defmulti defn- defstruct if
|
|
19
|
+
cond let for
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.builtins
|
|
24
|
+
@builtins ||= Set.new %w(
|
|
25
|
+
. .. * + - -> / < <= = == > >= accessor agent agent-errors
|
|
26
|
+
aget alength all-ns alter and append-child apply array-map
|
|
27
|
+
aset aset-boolean aset-byte aset-char aset-double aset-float
|
|
28
|
+
aset-int aset-long aset-short assert assoc await await-for bean
|
|
29
|
+
binding bit-and bit-not bit-or bit-shift-left bit-shift-right
|
|
30
|
+
bit-xor boolean branch? butlast byte cast char children
|
|
31
|
+
class clear-agent-errors comment commute comp comparator
|
|
32
|
+
complement concat conj cons constantly construct-proxy
|
|
33
|
+
contains? count create-ns create-struct cycle dec deref
|
|
34
|
+
difference disj dissoc distinct doall doc dorun doseq dosync
|
|
35
|
+
dotimes doto double down drop drop-while edit end? ensure eval
|
|
36
|
+
every? false? ffirst file-seq filter find find-doc find-ns
|
|
37
|
+
find-var first float flush fnseq frest gensym get-proxy-class
|
|
38
|
+
get hash-map hash-set identical? identity if-let import in-ns
|
|
39
|
+
inc index insert-child insert-left insert-right inspect-table
|
|
40
|
+
inspect-tree instance? int interleave intersection into
|
|
41
|
+
into-array iterate join key keys keyword keyword? last lazy-cat
|
|
42
|
+
lazy-cons left lefts line-seq list* list load load-file locking
|
|
43
|
+
long loop macroexpand macroexpand-1 make-array make-node map
|
|
44
|
+
map-invert map? mapcat max max-key memfn merge merge-with meta
|
|
45
|
+
min min-key name namespace neg? new newline next nil? node not
|
|
46
|
+
not-any? not-every? not= ns-imports ns-interns ns-map ns-name
|
|
47
|
+
ns-publics ns-refers ns-resolve ns-unmap nth nthrest or parse
|
|
48
|
+
partial path peek pop pos? pr pr-str print print-str println
|
|
49
|
+
println-str prn prn-str project proxy proxy-mappings quot
|
|
50
|
+
rand rand-int range re-find re-groups re-matcher re-matches
|
|
51
|
+
re-pattern re-seq read read-line reduce ref ref-set refer rem
|
|
52
|
+
remove remove-method remove-ns rename rename-keys repeat replace
|
|
53
|
+
replicate resolve rest resultset-seq reverse rfirst right
|
|
54
|
+
rights root rrest rseq second select select-keys send send-off
|
|
55
|
+
seq seq-zip seq? set short slurp some sort sort-by sorted-map
|
|
56
|
+
sorted-map-by sorted-set special-symbol? split-at split-with
|
|
57
|
+
str string? struct struct-map subs subvec symbol symbol?
|
|
58
|
+
sync take take-nth take-while test time to-array to-array-2d
|
|
59
|
+
tree-seq true? union up update-proxy val vals var-get var-set
|
|
60
|
+
var? vector vector-zip vector? when when-first when-let
|
|
61
|
+
when-not with-local-vars with-meta with-open with-out-str
|
|
62
|
+
xml-seq xml-zip zero? zipmap zipper'
|
|
63
|
+
)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
identifier = %r([\w!$%*+,<=>?/.-]+)
|
|
67
|
+
keyword = %r([\w!\#$%*+,<=>?/.-]+)
|
|
68
|
+
|
|
69
|
+
def name_token(name)
|
|
70
|
+
return Keyword if self.class.keywords.include?(name)
|
|
71
|
+
return Name::Builtin if self.class.builtins.include?(name)
|
|
72
|
+
nil
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
state :root do
|
|
76
|
+
rule /;.*?$/, Comment::Single
|
|
77
|
+
rule /\s+/m, Text::Whitespace
|
|
78
|
+
|
|
79
|
+
rule /-?\d+\.\d+/, Num::Float
|
|
80
|
+
rule /-?\d+/, Num::Integer
|
|
81
|
+
rule /0x-?[0-9a-fA-F]+/, Num::Hex
|
|
82
|
+
|
|
83
|
+
rule /"(\\.|[^"])*"/, Str
|
|
84
|
+
rule /'#{keyword}/, Str::Symbol
|
|
85
|
+
rule /::?#{keyword}/, Name::Constant
|
|
86
|
+
rule /\\(.|[a-z]+)/i, Str::Char
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
rule /~@|[`\'#^~&@]/, Operator
|
|
90
|
+
|
|
91
|
+
rule /(\()(\s*)(#{identifier})/m do |m|
|
|
92
|
+
token Punctuation, m[1]
|
|
93
|
+
token Text::Whitespace, m[2]
|
|
94
|
+
token(name_token(m[3]) || Name::Function, m[3])
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
rule identifier do |m|
|
|
98
|
+
token name_token(m[0]) || Name
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# vectors
|
|
102
|
+
rule /[\[\]]/, Punctuation
|
|
103
|
+
|
|
104
|
+
# maps
|
|
105
|
+
rule /[{}]/, Punctuation
|
|
106
|
+
|
|
107
|
+
# parentheses
|
|
108
|
+
rule /[()]/, Punctuation
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class CMake < RegexLexer
|
|
6
|
+
title 'CMake'
|
|
7
|
+
desc 'The cross-platform, open-source build system'
|
|
8
|
+
tag 'cmake'
|
|
9
|
+
filenames 'CMakeLists.txt', '*.cmake'
|
|
10
|
+
mimetypes 'text/x-cmake'
|
|
11
|
+
|
|
12
|
+
SPACE = '[ \t]'
|
|
13
|
+
BRACKET_OPEN = '\[=*\['
|
|
14
|
+
|
|
15
|
+
STATES_MAP = {
|
|
16
|
+
:root => Text,
|
|
17
|
+
:bracket_string => Str::Double,
|
|
18
|
+
:quoted_argument => Str::Double,
|
|
19
|
+
:bracket_comment => Comment::Multiline,
|
|
20
|
+
:variable_reference => Name::Variable,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
BUILTIN_COMMANDS = Set.new %w[
|
|
24
|
+
add_compile_options
|
|
25
|
+
add_custom_command
|
|
26
|
+
add_custom_target
|
|
27
|
+
add_definitions
|
|
28
|
+
add_dependencies
|
|
29
|
+
add_executable
|
|
30
|
+
add_library
|
|
31
|
+
add_subdirectory
|
|
32
|
+
add_test
|
|
33
|
+
aux_source_directory
|
|
34
|
+
break
|
|
35
|
+
build_command
|
|
36
|
+
build_name
|
|
37
|
+
cmake_host_system_information
|
|
38
|
+
cmake_minimum_required
|
|
39
|
+
cmake_policy
|
|
40
|
+
configure_file
|
|
41
|
+
create_test_sourcelist
|
|
42
|
+
define_property
|
|
43
|
+
else
|
|
44
|
+
elseif
|
|
45
|
+
enable_language
|
|
46
|
+
enable_testing
|
|
47
|
+
endforeach
|
|
48
|
+
endfunction
|
|
49
|
+
endif
|
|
50
|
+
endmacro
|
|
51
|
+
endwhile
|
|
52
|
+
exec_program
|
|
53
|
+
execute_process
|
|
54
|
+
export
|
|
55
|
+
export_library_dependencies
|
|
56
|
+
file
|
|
57
|
+
find_file
|
|
58
|
+
find_library
|
|
59
|
+
find_package
|
|
60
|
+
find_path
|
|
61
|
+
find_program
|
|
62
|
+
fltk_wrap_ui
|
|
63
|
+
foreach
|
|
64
|
+
function
|
|
65
|
+
get_cmake_property
|
|
66
|
+
get_directory_property
|
|
67
|
+
get_filename_component
|
|
68
|
+
get_property
|
|
69
|
+
get_source_file_property
|
|
70
|
+
get_target_property
|
|
71
|
+
get_test_property
|
|
72
|
+
if
|
|
73
|
+
include
|
|
74
|
+
include_directories
|
|
75
|
+
include_external_msproject
|
|
76
|
+
include_regular_expression
|
|
77
|
+
install
|
|
78
|
+
install_files
|
|
79
|
+
install_programs
|
|
80
|
+
install_targets
|
|
81
|
+
link_directories
|
|
82
|
+
link_libraries
|
|
83
|
+
list
|
|
84
|
+
load_cache
|
|
85
|
+
load_command
|
|
86
|
+
macro
|
|
87
|
+
make_directory
|
|
88
|
+
mark_as_advanced
|
|
89
|
+
math
|
|
90
|
+
message
|
|
91
|
+
option
|
|
92
|
+
output_required_files
|
|
93
|
+
project
|
|
94
|
+
qt_wrap_cpp
|
|
95
|
+
qt_wrap_ui
|
|
96
|
+
remove
|
|
97
|
+
remove_definitions
|
|
98
|
+
return
|
|
99
|
+
separate_arguments
|
|
100
|
+
set
|
|
101
|
+
set_directory_properties
|
|
102
|
+
set_property
|
|
103
|
+
set_source_files_properties
|
|
104
|
+
set_target_properties
|
|
105
|
+
set_tests_properties
|
|
106
|
+
site_name
|
|
107
|
+
source_group
|
|
108
|
+
string
|
|
109
|
+
subdir_depends
|
|
110
|
+
subdirs
|
|
111
|
+
target_compile_definitions
|
|
112
|
+
target_compile_options
|
|
113
|
+
target_include_directories
|
|
114
|
+
target_link_libraries
|
|
115
|
+
try_compile
|
|
116
|
+
try_run
|
|
117
|
+
unset
|
|
118
|
+
use_mangled_mesa
|
|
119
|
+
utility_source
|
|
120
|
+
variable_requires
|
|
121
|
+
variable_watch
|
|
122
|
+
while
|
|
123
|
+
write_file
|
|
124
|
+
]
|
|
125
|
+
|
|
126
|
+
state :default do
|
|
127
|
+
rule /\r\n?|\n/ do
|
|
128
|
+
token STATES_MAP[state.name.to_sym]
|
|
129
|
+
end
|
|
130
|
+
rule /./ do
|
|
131
|
+
token STATES_MAP[state.name.to_sym]
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
state :variable_interpolation do
|
|
136
|
+
rule /\$\{/ do
|
|
137
|
+
token Str::Interpol
|
|
138
|
+
push :variable_reference
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
state :bracket_close do
|
|
143
|
+
rule /\]=*\]/ do |m|
|
|
144
|
+
token STATES_MAP[state.name.to_sym]
|
|
145
|
+
goto :root if m[0].length == @bracket_len
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
state :root do
|
|
150
|
+
mixin :variable_interpolation
|
|
151
|
+
|
|
152
|
+
rule /#{SPACE}/, Text
|
|
153
|
+
rule /[()]/, Punctuation
|
|
154
|
+
|
|
155
|
+
rule /##{BRACKET_OPEN}/ do |m|
|
|
156
|
+
token Comment::Multiline
|
|
157
|
+
@bracket_len = m[0].length - 1 # decount '#'
|
|
158
|
+
goto :bracket_comment
|
|
159
|
+
end
|
|
160
|
+
rule /#{BRACKET_OPEN}/ do |m|
|
|
161
|
+
token Str::Double
|
|
162
|
+
@bracket_len = m[0].length
|
|
163
|
+
goto :bracket_string
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
rule /"/, Str::Double, :quoted_argument
|
|
167
|
+
|
|
168
|
+
rule /([A-Za-z_][A-Za-z0-9_]*)(#{SPACE}*)(\()/ do |m|
|
|
169
|
+
groups BUILTIN_COMMANDS.include?(m[1]) ? Name::Builtin : Name::Function, Text, Punctuation
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
rule /#.*/, Comment::Single
|
|
173
|
+
|
|
174
|
+
mixin :default
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
state :bracket_string do
|
|
178
|
+
mixin :bracket_close
|
|
179
|
+
mixin :variable_interpolation
|
|
180
|
+
mixin :default
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
state :bracket_comment do
|
|
184
|
+
mixin :bracket_close
|
|
185
|
+
mixin :default
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
state :variable_reference do
|
|
189
|
+
mixin :variable_interpolation
|
|
190
|
+
|
|
191
|
+
rule /}/, Str::Interpol, :pop!
|
|
192
|
+
|
|
193
|
+
mixin :default
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
state :quoted_argument do
|
|
197
|
+
mixin :variable_interpolation
|
|
198
|
+
|
|
199
|
+
rule /"/, Str::Double, :root
|
|
200
|
+
rule /\\[()#" \\$@^trn;]/, Str::Escape
|
|
201
|
+
|
|
202
|
+
mixin :default
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|