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.
Files changed (319) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +26 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +17 -0
  5. data/lib/rouge.rb +82 -0
  6. data/lib/rouge/cli.rb +429 -0
  7. data/lib/rouge/demos/abap +6 -0
  8. data/lib/rouge/demos/actionscript +4 -0
  9. data/lib/rouge/demos/apache +21 -0
  10. data/lib/rouge/demos/apiblueprint +33 -0
  11. data/lib/rouge/demos/applescript +2 -0
  12. data/lib/rouge/demos/awk +4 -0
  13. data/lib/rouge/demos/biml +38 -0
  14. data/lib/rouge/demos/bsl +7 -0
  15. data/lib/rouge/demos/c +8 -0
  16. data/lib/rouge/demos/ceylon +7 -0
  17. data/lib/rouge/demos/cfscript +18 -0
  18. data/lib/rouge/demos/clojure +5 -0
  19. data/lib/rouge/demos/cmake +7 -0
  20. data/lib/rouge/demos/coffeescript +5 -0
  21. data/lib/rouge/demos/common_lisp +1 -0
  22. data/lib/rouge/demos/conf +4 -0
  23. data/lib/rouge/demos/console +6 -0
  24. data/lib/rouge/demos/coq +13 -0
  25. data/lib/rouge/demos/cpp +8 -0
  26. data/lib/rouge/demos/csharp +5 -0
  27. data/lib/rouge/demos/css +4 -0
  28. data/lib/rouge/demos/d +16 -0
  29. data/lib/rouge/demos/dart +6 -0
  30. data/lib/rouge/demos/diff +7 -0
  31. data/lib/rouge/demos/digdag +19 -0
  32. data/lib/rouge/demos/docker +9 -0
  33. data/lib/rouge/demos/dot +5 -0
  34. data/lib/rouge/demos/ecl +1 -0
  35. data/lib/rouge/demos/eiffel +30 -0
  36. data/lib/rouge/demos/elixir +1 -0
  37. data/lib/rouge/demos/elm +4 -0
  38. data/lib/rouge/demos/erb +1 -0
  39. data/lib/rouge/demos/erlang +7 -0
  40. data/lib/rouge/demos/factor +5 -0
  41. data/lib/rouge/demos/fortran +22 -0
  42. data/lib/rouge/demos/fsharp +12 -0
  43. data/lib/rouge/demos/gherkin +17 -0
  44. data/lib/rouge/demos/glsl +14 -0
  45. data/lib/rouge/demos/go +7 -0
  46. data/lib/rouge/demos/gradle +10 -0
  47. data/lib/rouge/demos/graphql +17 -0
  48. data/lib/rouge/demos/groovy +9 -0
  49. data/lib/rouge/demos/hack +5 -0
  50. data/lib/rouge/demos/haml +5 -0
  51. data/lib/rouge/demos/handlebars +7 -0
  52. data/lib/rouge/demos/haskell +6 -0
  53. data/lib/rouge/demos/html +8 -0
  54. data/lib/rouge/demos/http +14 -0
  55. data/lib/rouge/demos/hylang +10 -0
  56. data/lib/rouge/demos/idlang +8 -0
  57. data/lib/rouge/demos/igorpro +9 -0
  58. data/lib/rouge/demos/ini +4 -0
  59. data/lib/rouge/demos/io +11 -0
  60. data/lib/rouge/demos/irb +4 -0
  61. data/lib/rouge/demos/irb_output +2 -0
  62. data/lib/rouge/demos/java +5 -0
  63. data/lib/rouge/demos/javascript +1 -0
  64. data/lib/rouge/demos/jinja +9 -0
  65. data/lib/rouge/demos/json +1 -0
  66. data/lib/rouge/demos/json-doc +1 -0
  67. data/lib/rouge/demos/jsonnet +28 -0
  68. data/lib/rouge/demos/jsx +17 -0
  69. data/lib/rouge/demos/julia +11 -0
  70. data/lib/rouge/demos/kotlin +3 -0
  71. data/lib/rouge/demos/lasso +12 -0
  72. data/lib/rouge/demos/liquid +11 -0
  73. data/lib/rouge/demos/literate_coffeescript +3 -0
  74. data/lib/rouge/demos/literate_haskell +7 -0
  75. data/lib/rouge/demos/llvm +20 -0
  76. data/lib/rouge/demos/lua +12 -0
  77. data/lib/rouge/demos/make +6 -0
  78. data/lib/rouge/demos/markdown +4 -0
  79. data/lib/rouge/demos/matlab +6 -0
  80. data/lib/rouge/demos/moonscript +16 -0
  81. data/lib/rouge/demos/mosel +10 -0
  82. data/lib/rouge/demos/mxml +22 -0
  83. data/lib/rouge/demos/nasm +26 -0
  84. data/lib/rouge/demos/nginx +5 -0
  85. data/lib/rouge/demos/nim +27 -0
  86. data/lib/rouge/demos/nix +19 -0
  87. data/lib/rouge/demos/objective_c +18 -0
  88. data/lib/rouge/demos/ocaml +12 -0
  89. data/lib/rouge/demos/pascal +14 -0
  90. data/lib/rouge/demos/perl +5 -0
  91. data/lib/rouge/demos/php +3 -0
  92. data/lib/rouge/demos/plaintext +1 -0
  93. data/lib/rouge/demos/plist +142 -0
  94. data/lib/rouge/demos/pony +17 -0
  95. data/lib/rouge/demos/powershell +49 -0
  96. data/lib/rouge/demos/praat +26 -0
  97. data/lib/rouge/demos/prolog +9 -0
  98. data/lib/rouge/demos/prometheus +9 -0
  99. data/lib/rouge/demos/properties +7 -0
  100. data/lib/rouge/demos/protobuf +5 -0
  101. data/lib/rouge/demos/puppet +6 -0
  102. data/lib/rouge/demos/python +6 -0
  103. data/lib/rouge/demos/q +2 -0
  104. data/lib/rouge/demos/qml +9 -0
  105. data/lib/rouge/demos/r +8 -0
  106. data/lib/rouge/demos/racket +24 -0
  107. data/lib/rouge/demos/ruby +9 -0
  108. data/lib/rouge/demos/rust +12 -0
  109. data/lib/rouge/demos/sass +3 -0
  110. data/lib/rouge/demos/scala +3 -0
  111. data/lib/rouge/demos/scheme +4 -0
  112. data/lib/rouge/demos/scss +5 -0
  113. data/lib/rouge/demos/sed +4 -0
  114. data/lib/rouge/demos/shell +2 -0
  115. data/lib/rouge/demos/sieve +10 -0
  116. data/lib/rouge/demos/slim +17 -0
  117. data/lib/rouge/demos/smalltalk +6 -0
  118. data/lib/rouge/demos/smarty +12 -0
  119. data/lib/rouge/demos/sml +4 -0
  120. data/lib/rouge/demos/sql +1 -0
  121. data/lib/rouge/demos/swift +5 -0
  122. data/lib/rouge/demos/tap +5 -0
  123. data/lib/rouge/demos/tcl +1 -0
  124. data/lib/rouge/demos/tex +1 -0
  125. data/lib/rouge/demos/toml +9 -0
  126. data/lib/rouge/demos/tsx +17 -0
  127. data/lib/rouge/demos/tulip +13 -0
  128. data/lib/rouge/demos/turtle +26 -0
  129. data/lib/rouge/demos/twig +9 -0
  130. data/lib/rouge/demos/typescript +1 -0
  131. data/lib/rouge/demos/vala +8 -0
  132. data/lib/rouge/demos/vb +4 -0
  133. data/lib/rouge/demos/verilog +27 -0
  134. data/lib/rouge/demos/vhdl +23 -0
  135. data/lib/rouge/demos/viml +14 -0
  136. data/lib/rouge/demos/vue +11 -0
  137. data/lib/rouge/demos/wollok +11 -0
  138. data/lib/rouge/demos/xml +2 -0
  139. data/lib/rouge/demos/yaml +4 -0
  140. data/lib/rouge/formatter.rb +75 -0
  141. data/lib/rouge/formatters/html.rb +37 -0
  142. data/lib/rouge/formatters/html_inline.rb +30 -0
  143. data/lib/rouge/formatters/html_legacy.rb +44 -0
  144. data/lib/rouge/formatters/html_linewise.rb +27 -0
  145. data/lib/rouge/formatters/html_pygments.rb +16 -0
  146. data/lib/rouge/formatters/html_table.rb +61 -0
  147. data/lib/rouge/formatters/null.rb +19 -0
  148. data/lib/rouge/formatters/terminal256.rb +180 -0
  149. data/lib/rouge/guesser.rb +55 -0
  150. data/lib/rouge/guessers/disambiguation.rb +101 -0
  151. data/lib/rouge/guessers/filename.rb +25 -0
  152. data/lib/rouge/guessers/glob_mapping.rb +43 -0
  153. data/lib/rouge/guessers/mimetype.rb +14 -0
  154. data/lib/rouge/guessers/modeline.rb +44 -0
  155. data/lib/rouge/guessers/source.rb +29 -0
  156. data/lib/rouge/guessers/util.rb +32 -0
  157. data/lib/rouge/lexer.rb +461 -0
  158. data/lib/rouge/lexers/abap.rb +238 -0
  159. data/lib/rouge/lexers/actionscript.rb +195 -0
  160. data/lib/rouge/lexers/apache.rb +71 -0
  161. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  162. data/lib/rouge/lexers/apiblueprint.rb +47 -0
  163. data/lib/rouge/lexers/apple_script.rb +367 -0
  164. data/lib/rouge/lexers/awk.rb +161 -0
  165. data/lib/rouge/lexers/biml.rb +41 -0
  166. data/lib/rouge/lexers/bsl.rb +81 -0
  167. data/lib/rouge/lexers/c.rb +212 -0
  168. data/lib/rouge/lexers/ceylon.rb +123 -0
  169. data/lib/rouge/lexers/cfscript.rb +153 -0
  170. data/lib/rouge/lexers/clojure.rb +112 -0
  171. data/lib/rouge/lexers/cmake.rb +206 -0
  172. data/lib/rouge/lexers/coffeescript.rb +174 -0
  173. data/lib/rouge/lexers/common_lisp.rb +345 -0
  174. data/lib/rouge/lexers/conf.rb +24 -0
  175. data/lib/rouge/lexers/console.rb +136 -0
  176. data/lib/rouge/lexers/coq.rb +187 -0
  177. data/lib/rouge/lexers/cpp.rb +78 -0
  178. data/lib/rouge/lexers/csharp.rb +114 -0
  179. data/lib/rouge/lexers/css.rb +273 -0
  180. data/lib/rouge/lexers/d.rb +176 -0
  181. data/lib/rouge/lexers/dart.rb +104 -0
  182. data/lib/rouge/lexers/diff.rb +31 -0
  183. data/lib/rouge/lexers/digdag.rb +68 -0
  184. data/lib/rouge/lexers/docker.rb +50 -0
  185. data/lib/rouge/lexers/dot.rb +68 -0
  186. data/lib/rouge/lexers/ecl.rb +138 -0
  187. data/lib/rouge/lexers/eiffel.rb +65 -0
  188. data/lib/rouge/lexers/elixir.rb +133 -0
  189. data/lib/rouge/lexers/elm.rb +89 -0
  190. data/lib/rouge/lexers/erb.rb +52 -0
  191. data/lib/rouge/lexers/erlang.rb +114 -0
  192. data/lib/rouge/lexers/factor.rb +302 -0
  193. data/lib/rouge/lexers/fortran.rb +176 -0
  194. data/lib/rouge/lexers/fsharp.rb +118 -0
  195. data/lib/rouge/lexers/gherkin.rb +137 -0
  196. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  197. data/lib/rouge/lexers/glsl.rb +135 -0
  198. data/lib/rouge/lexers/go.rb +174 -0
  199. data/lib/rouge/lexers/gradle.rb +37 -0
  200. data/lib/rouge/lexers/graphql.rb +243 -0
  201. data/lib/rouge/lexers/groovy.rb +112 -0
  202. data/lib/rouge/lexers/hack.rb +48 -0
  203. data/lib/rouge/lexers/haml.rb +229 -0
  204. data/lib/rouge/lexers/handlebars.rb +79 -0
  205. data/lib/rouge/lexers/haskell.rb +182 -0
  206. data/lib/rouge/lexers/html.rb +139 -0
  207. data/lib/rouge/lexers/http.rb +80 -0
  208. data/lib/rouge/lexers/hylang.rb +93 -0
  209. data/lib/rouge/lexers/idlang.rb +310 -0
  210. data/lib/rouge/lexers/igorpro.rb +408 -0
  211. data/lib/rouge/lexers/ini.rb +53 -0
  212. data/lib/rouge/lexers/io.rb +68 -0
  213. data/lib/rouge/lexers/irb.rb +66 -0
  214. data/lib/rouge/lexers/java.rb +87 -0
  215. data/lib/rouge/lexers/javascript.rb +281 -0
  216. data/lib/rouge/lexers/jinja.rb +137 -0
  217. data/lib/rouge/lexers/json.rb +29 -0
  218. data/lib/rouge/lexers/json_doc.rb +23 -0
  219. data/lib/rouge/lexers/jsonnet.rb +151 -0
  220. data/lib/rouge/lexers/jsx.rb +102 -0
  221. data/lib/rouge/lexers/julia.rb +172 -0
  222. data/lib/rouge/lexers/kotlin.rb +79 -0
  223. data/lib/rouge/lexers/lasso.rb +214 -0
  224. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  225. data/lib/rouge/lexers/liquid.rb +287 -0
  226. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  227. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  228. data/lib/rouge/lexers/llvm.rb +80 -0
  229. data/lib/rouge/lexers/lua.rb +125 -0
  230. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  231. data/lib/rouge/lexers/make.rb +112 -0
  232. data/lib/rouge/lexers/markdown.rb +154 -0
  233. data/lib/rouge/lexers/matlab.rb +71 -0
  234. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  235. data/lib/rouge/lexers/moonscript.rb +114 -0
  236. data/lib/rouge/lexers/mosel.rb +231 -0
  237. data/lib/rouge/lexers/mxml.rb +68 -0
  238. data/lib/rouge/lexers/nasm.rb +198 -0
  239. data/lib/rouge/lexers/nginx.rb +71 -0
  240. data/lib/rouge/lexers/nim.rb +152 -0
  241. data/lib/rouge/lexers/nix.rb +205 -0
  242. data/lib/rouge/lexers/objective_c.rb +194 -0
  243. data/lib/rouge/lexers/ocaml.rb +100 -0
  244. data/lib/rouge/lexers/pascal.rb +66 -0
  245. data/lib/rouge/lexers/perl.rb +196 -0
  246. data/lib/rouge/lexers/php.rb +193 -0
  247. data/lib/rouge/lexers/php/builtins.rb +194 -0
  248. data/lib/rouge/lexers/plain_text.rb +26 -0
  249. data/lib/rouge/lexers/plist.rb +45 -0
  250. data/lib/rouge/lexers/pony.rb +93 -0
  251. data/lib/rouge/lexers/powershell.rb +678 -0
  252. data/lib/rouge/lexers/praat.rb +350 -0
  253. data/lib/rouge/lexers/prolog.rb +59 -0
  254. data/lib/rouge/lexers/prometheus.rb +121 -0
  255. data/lib/rouge/lexers/properties.rb +51 -0
  256. data/lib/rouge/lexers/protobuf.rb +70 -0
  257. data/lib/rouge/lexers/puppet.rb +128 -0
  258. data/lib/rouge/lexers/python.rb +232 -0
  259. data/lib/rouge/lexers/q.rb +123 -0
  260. data/lib/rouge/lexers/qml.rb +73 -0
  261. data/lib/rouge/lexers/r.rb +89 -0
  262. data/lib/rouge/lexers/racket.rb +543 -0
  263. data/lib/rouge/lexers/ruby.rb +437 -0
  264. data/lib/rouge/lexers/rust.rb +192 -0
  265. data/lib/rouge/lexers/sass.rb +74 -0
  266. data/lib/rouge/lexers/sass/common.rb +180 -0
  267. data/lib/rouge/lexers/scala.rb +142 -0
  268. data/lib/rouge/lexers/scheme.rb +112 -0
  269. data/lib/rouge/lexers/scss.rb +34 -0
  270. data/lib/rouge/lexers/sed.rb +172 -0
  271. data/lib/rouge/lexers/shell.rb +189 -0
  272. data/lib/rouge/lexers/sieve.rb +96 -0
  273. data/lib/rouge/lexers/slim.rb +228 -0
  274. data/lib/rouge/lexers/smalltalk.rb +116 -0
  275. data/lib/rouge/lexers/smarty.rb +80 -0
  276. data/lib/rouge/lexers/sml.rb +344 -0
  277. data/lib/rouge/lexers/sql.rb +140 -0
  278. data/lib/rouge/lexers/swift.rb +181 -0
  279. data/lib/rouge/lexers/tap.rb +87 -0
  280. data/lib/rouge/lexers/tcl.rb +192 -0
  281. data/lib/rouge/lexers/tex.rb +69 -0
  282. data/lib/rouge/lexers/toml.rb +67 -0
  283. data/lib/rouge/lexers/tsx.rb +19 -0
  284. data/lib/rouge/lexers/tulip.rb +106 -0
  285. data/lib/rouge/lexers/turtle.rb +63 -0
  286. data/lib/rouge/lexers/twig.rb +39 -0
  287. data/lib/rouge/lexers/typescript.rb +22 -0
  288. data/lib/rouge/lexers/typescript/common.rb +33 -0
  289. data/lib/rouge/lexers/vala.rb +77 -0
  290. data/lib/rouge/lexers/vb.rb +164 -0
  291. data/lib/rouge/lexers/verilog.rb +164 -0
  292. data/lib/rouge/lexers/vhdl.rb +97 -0
  293. data/lib/rouge/lexers/viml.rb +101 -0
  294. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  295. data/lib/rouge/lexers/vue.rb +122 -0
  296. data/lib/rouge/lexers/wollok.rb +103 -0
  297. data/lib/rouge/lexers/xml.rb +57 -0
  298. data/lib/rouge/lexers/yaml.rb +373 -0
  299. data/lib/rouge/plugins/redcarpet.rb +30 -0
  300. data/lib/rouge/regex_lexer.rb +441 -0
  301. data/lib/rouge/template_lexer.rb +20 -0
  302. data/lib/rouge/text_analyzer.rb +49 -0
  303. data/lib/rouge/theme.rb +213 -0
  304. data/lib/rouge/themes/base16.rb +130 -0
  305. data/lib/rouge/themes/colorful.rb +67 -0
  306. data/lib/rouge/themes/github.rb +71 -0
  307. data/lib/rouge/themes/gruvbox.rb +167 -0
  308. data/lib/rouge/themes/igor_pro.rb +20 -0
  309. data/lib/rouge/themes/molokai.rb +82 -0
  310. data/lib/rouge/themes/monokai.rb +92 -0
  311. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  312. data/lib/rouge/themes/pastie.rb +69 -0
  313. data/lib/rouge/themes/thankful_eyes.rb +74 -0
  314. data/lib/rouge/themes/tulip.rb +69 -0
  315. data/lib/rouge/token.rb +182 -0
  316. data/lib/rouge/util.rb +101 -0
  317. data/lib/rouge/version.rb +7 -0
  318. data/rouge.gemspec +23 -0
  319. 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