rouge-alda 3.3.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.
Files changed (335) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +28 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +18 -0
  5. data/lib/rouge/cli.rb +432 -0
  6. data/lib/rouge/demos/abap +6 -0
  7. data/lib/rouge/demos/actionscript +4 -0
  8. data/lib/rouge/demos/alda +10 -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/crystal +45 -0
  27. data/lib/rouge/demos/csharp +5 -0
  28. data/lib/rouge/demos/css +4 -0
  29. data/lib/rouge/demos/d +16 -0
  30. data/lib/rouge/demos/dart +6 -0
  31. data/lib/rouge/demos/diff +7 -0
  32. data/lib/rouge/demos/digdag +19 -0
  33. data/lib/rouge/demos/docker +9 -0
  34. data/lib/rouge/demos/dot +5 -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/hcl +7 -0
  54. data/lib/rouge/demos/html +8 -0
  55. data/lib/rouge/demos/http +14 -0
  56. data/lib/rouge/demos/hylang +10 -0
  57. data/lib/rouge/demos/idlang +8 -0
  58. data/lib/rouge/demos/igorpro +9 -0
  59. data/lib/rouge/demos/ini +4 -0
  60. data/lib/rouge/demos/io +11 -0
  61. data/lib/rouge/demos/irb +4 -0
  62. data/lib/rouge/demos/irb_output +2 -0
  63. data/lib/rouge/demos/java +5 -0
  64. data/lib/rouge/demos/javascript +1 -0
  65. data/lib/rouge/demos/jinja +9 -0
  66. data/lib/rouge/demos/json +1 -0
  67. data/lib/rouge/demos/json-doc +1 -0
  68. data/lib/rouge/demos/jsonnet +28 -0
  69. data/lib/rouge/demos/jsp +29 -0
  70. data/lib/rouge/demos/jsx +17 -0
  71. data/lib/rouge/demos/julia +11 -0
  72. data/lib/rouge/demos/kotlin +3 -0
  73. data/lib/rouge/demos/lasso +12 -0
  74. data/lib/rouge/demos/liquid +11 -0
  75. data/lib/rouge/demos/literate_coffeescript +3 -0
  76. data/lib/rouge/demos/literate_haskell +7 -0
  77. data/lib/rouge/demos/llvm +20 -0
  78. data/lib/rouge/demos/lua +12 -0
  79. data/lib/rouge/demos/m68k +16 -0
  80. data/lib/rouge/demos/make +6 -0
  81. data/lib/rouge/demos/markdown +4 -0
  82. data/lib/rouge/demos/mathematica +8 -0
  83. data/lib/rouge/demos/matlab +6 -0
  84. data/lib/rouge/demos/moonscript +16 -0
  85. data/lib/rouge/demos/mosel +10 -0
  86. data/lib/rouge/demos/mxml +22 -0
  87. data/lib/rouge/demos/nasm +26 -0
  88. data/lib/rouge/demos/nginx +5 -0
  89. data/lib/rouge/demos/nim +27 -0
  90. data/lib/rouge/demos/nix +19 -0
  91. data/lib/rouge/demos/objective_c +18 -0
  92. data/lib/rouge/demos/ocaml +12 -0
  93. data/lib/rouge/demos/pascal +14 -0
  94. data/lib/rouge/demos/perl +5 -0
  95. data/lib/rouge/demos/php +3 -0
  96. data/lib/rouge/demos/plaintext +1 -0
  97. data/lib/rouge/demos/plist +142 -0
  98. data/lib/rouge/demos/pony +17 -0
  99. data/lib/rouge/demos/powershell +49 -0
  100. data/lib/rouge/demos/praat +26 -0
  101. data/lib/rouge/demos/prolog +9 -0
  102. data/lib/rouge/demos/prometheus +9 -0
  103. data/lib/rouge/demos/properties +7 -0
  104. data/lib/rouge/demos/protobuf +5 -0
  105. data/lib/rouge/demos/puppet +6 -0
  106. data/lib/rouge/demos/python +6 -0
  107. data/lib/rouge/demos/q +2 -0
  108. data/lib/rouge/demos/qml +9 -0
  109. data/lib/rouge/demos/r +8 -0
  110. data/lib/rouge/demos/racket +24 -0
  111. data/lib/rouge/demos/ruby +9 -0
  112. data/lib/rouge/demos/rust +12 -0
  113. data/lib/rouge/demos/sass +3 -0
  114. data/lib/rouge/demos/scala +3 -0
  115. data/lib/rouge/demos/scheme +4 -0
  116. data/lib/rouge/demos/scss +5 -0
  117. data/lib/rouge/demos/sed +4 -0
  118. data/lib/rouge/demos/shell +2 -0
  119. data/lib/rouge/demos/sieve +10 -0
  120. data/lib/rouge/demos/slim +17 -0
  121. data/lib/rouge/demos/smalltalk +6 -0
  122. data/lib/rouge/demos/smarty +12 -0
  123. data/lib/rouge/demos/sml +4 -0
  124. data/lib/rouge/demos/sqf +14 -0
  125. data/lib/rouge/demos/sql +1 -0
  126. data/lib/rouge/demos/swift +5 -0
  127. data/lib/rouge/demos/tap +5 -0
  128. data/lib/rouge/demos/tcl +1 -0
  129. data/lib/rouge/demos/terraform +31 -0
  130. data/lib/rouge/demos/tex +1 -0
  131. data/lib/rouge/demos/toml +9 -0
  132. data/lib/rouge/demos/tsx +17 -0
  133. data/lib/rouge/demos/tulip +13 -0
  134. data/lib/rouge/demos/turtle +26 -0
  135. data/lib/rouge/demos/twig +9 -0
  136. data/lib/rouge/demos/typescript +1 -0
  137. data/lib/rouge/demos/vala +8 -0
  138. data/lib/rouge/demos/vb +4 -0
  139. data/lib/rouge/demos/verilog +27 -0
  140. data/lib/rouge/demos/vhdl +23 -0
  141. data/lib/rouge/demos/viml +14 -0
  142. data/lib/rouge/demos/vue +11 -0
  143. data/lib/rouge/demos/wollok +11 -0
  144. data/lib/rouge/demos/xml +2 -0
  145. data/lib/rouge/demos/yaml +4 -0
  146. data/lib/rouge/formatter.rb +76 -0
  147. data/lib/rouge/formatters/html.rb +38 -0
  148. data/lib/rouge/formatters/html_inline.rb +31 -0
  149. data/lib/rouge/formatters/html_legacy.rb +45 -0
  150. data/lib/rouge/formatters/html_linewise.rb +28 -0
  151. data/lib/rouge/formatters/html_pygments.rb +18 -0
  152. data/lib/rouge/formatters/html_table.rb +62 -0
  153. data/lib/rouge/formatters/null.rb +20 -0
  154. data/lib/rouge/formatters/terminal256.rb +181 -0
  155. data/lib/rouge/guesser.rb +57 -0
  156. data/lib/rouge/guessers/disambiguation.rb +106 -0
  157. data/lib/rouge/guessers/filename.rb +27 -0
  158. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  159. data/lib/rouge/guessers/mimetype.rb +16 -0
  160. data/lib/rouge/guessers/modeline.rb +46 -0
  161. data/lib/rouge/guessers/source.rb +31 -0
  162. data/lib/rouge/guessers/util.rb +34 -0
  163. data/lib/rouge/lexer.rb +462 -0
  164. data/lib/rouge/lexers/abap.rb +240 -0
  165. data/lib/rouge/lexers/actionscript.rb +196 -0
  166. data/lib/rouge/lexers/alda.rb +43 -0
  167. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  168. data/lib/rouge/lexers/apache.rb +73 -0
  169. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  170. data/lib/rouge/lexers/apple_script.rb +369 -0
  171. data/lib/rouge/lexers/awk.rb +162 -0
  172. data/lib/rouge/lexers/biml.rb +43 -0
  173. data/lib/rouge/lexers/bsl.rb +82 -0
  174. data/lib/rouge/lexers/c.rb +213 -0
  175. data/lib/rouge/lexers/ceylon.rb +124 -0
  176. data/lib/rouge/lexers/cfscript.rb +154 -0
  177. data/lib/rouge/lexers/clojure.rb +113 -0
  178. data/lib/rouge/lexers/cmake.rb +207 -0
  179. data/lib/rouge/lexers/coffeescript.rb +175 -0
  180. data/lib/rouge/lexers/common_lisp.rb +346 -0
  181. data/lib/rouge/lexers/conf.rb +25 -0
  182. data/lib/rouge/lexers/console.rb +137 -0
  183. data/lib/rouge/lexers/coq.rb +188 -0
  184. data/lib/rouge/lexers/cpp.rb +79 -0
  185. data/lib/rouge/lexers/crystal.rb +430 -0
  186. data/lib/rouge/lexers/csharp.rb +115 -0
  187. data/lib/rouge/lexers/css.rb +274 -0
  188. data/lib/rouge/lexers/d.rb +177 -0
  189. data/lib/rouge/lexers/dart.rb +105 -0
  190. data/lib/rouge/lexers/diff.rb +33 -0
  191. data/lib/rouge/lexers/digdag.rb +70 -0
  192. data/lib/rouge/lexers/docker.rb +51 -0
  193. data/lib/rouge/lexers/dot.rb +69 -0
  194. data/lib/rouge/lexers/eiffel.rb +66 -0
  195. data/lib/rouge/lexers/elixir.rb +134 -0
  196. data/lib/rouge/lexers/elm.rb +90 -0
  197. data/lib/rouge/lexers/erb.rb +53 -0
  198. data/lib/rouge/lexers/erlang.rb +115 -0
  199. data/lib/rouge/lexers/factor.rb +303 -0
  200. data/lib/rouge/lexers/fortran.rb +178 -0
  201. data/lib/rouge/lexers/fsharp.rb +119 -0
  202. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  203. data/lib/rouge/lexers/gherkin.rb +138 -0
  204. data/lib/rouge/lexers/glsl.rb +136 -0
  205. data/lib/rouge/lexers/go.rb +175 -0
  206. data/lib/rouge/lexers/gradle.rb +38 -0
  207. data/lib/rouge/lexers/graphql.rb +254 -0
  208. data/lib/rouge/lexers/groovy.rb +113 -0
  209. data/lib/rouge/lexers/hack.rb +49 -0
  210. data/lib/rouge/lexers/haml.rb +230 -0
  211. data/lib/rouge/lexers/handlebars.rb +80 -0
  212. data/lib/rouge/lexers/haskell.rb +198 -0
  213. data/lib/rouge/lexers/hcl.rb +163 -0
  214. data/lib/rouge/lexers/html.rb +140 -0
  215. data/lib/rouge/lexers/http.rb +81 -0
  216. data/lib/rouge/lexers/hylang.rb +94 -0
  217. data/lib/rouge/lexers/idlang.rb +312 -0
  218. data/lib/rouge/lexers/igorpro.rb +664 -0
  219. data/lib/rouge/lexers/ini.rb +54 -0
  220. data/lib/rouge/lexers/io.rb +69 -0
  221. data/lib/rouge/lexers/irb.rb +67 -0
  222. data/lib/rouge/lexers/java.rb +88 -0
  223. data/lib/rouge/lexers/javascript.rb +283 -0
  224. data/lib/rouge/lexers/jinja.rb +138 -0
  225. data/lib/rouge/lexers/json.rb +30 -0
  226. data/lib/rouge/lexers/json_doc.rb +24 -0
  227. data/lib/rouge/lexers/jsonnet.rb +152 -0
  228. data/lib/rouge/lexers/jsp.rb +120 -0
  229. data/lib/rouge/lexers/jsx.rb +104 -0
  230. data/lib/rouge/lexers/julia.rb +167 -0
  231. data/lib/rouge/lexers/kotlin.rb +127 -0
  232. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  233. data/lib/rouge/lexers/lasso.rb +215 -0
  234. data/lib/rouge/lexers/liquid.rb +288 -0
  235. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  236. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  237. data/lib/rouge/lexers/llvm.rb +81 -0
  238. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  239. data/lib/rouge/lexers/lua.rb +126 -0
  240. data/lib/rouge/lexers/m68k.rb +144 -0
  241. data/lib/rouge/lexers/make.rb +113 -0
  242. data/lib/rouge/lexers/markdown.rb +155 -0
  243. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  244. data/lib/rouge/lexers/mathematica.rb +96 -0
  245. data/lib/rouge/lexers/matlab/builtins.rb +13 -0
  246. data/lib/rouge/lexers/matlab.rb +72 -0
  247. data/lib/rouge/lexers/moonscript.rb +115 -0
  248. data/lib/rouge/lexers/mosel.rb +232 -0
  249. data/lib/rouge/lexers/mxml.rb +69 -0
  250. data/lib/rouge/lexers/nasm.rb +199 -0
  251. data/lib/rouge/lexers/nginx.rb +72 -0
  252. data/lib/rouge/lexers/nim.rb +153 -0
  253. data/lib/rouge/lexers/nix.rb +211 -0
  254. data/lib/rouge/lexers/objective_c.rb +195 -0
  255. data/lib/rouge/lexers/ocaml.rb +101 -0
  256. data/lib/rouge/lexers/pascal.rb +67 -0
  257. data/lib/rouge/lexers/perl.rb +201 -0
  258. data/lib/rouge/lexers/php/builtins.rb +196 -0
  259. data/lib/rouge/lexers/php.rb +194 -0
  260. data/lib/rouge/lexers/plain_text.rb +27 -0
  261. data/lib/rouge/lexers/plist.rb +47 -0
  262. data/lib/rouge/lexers/pony.rb +94 -0
  263. data/lib/rouge/lexers/powershell.rb +679 -0
  264. data/lib/rouge/lexers/praat.rb +351 -0
  265. data/lib/rouge/lexers/prolog.rb +61 -0
  266. data/lib/rouge/lexers/prometheus.rb +123 -0
  267. data/lib/rouge/lexers/properties.rb +52 -0
  268. data/lib/rouge/lexers/protobuf.rb +71 -0
  269. data/lib/rouge/lexers/puppet.rb +129 -0
  270. data/lib/rouge/lexers/python.rb +247 -0
  271. data/lib/rouge/lexers/q.rb +125 -0
  272. data/lib/rouge/lexers/qml.rb +74 -0
  273. data/lib/rouge/lexers/r.rb +90 -0
  274. data/lib/rouge/lexers/racket.rb +545 -0
  275. data/lib/rouge/lexers/ruby.rb +439 -0
  276. data/lib/rouge/lexers/rust.rb +198 -0
  277. data/lib/rouge/lexers/sass/common.rb +181 -0
  278. data/lib/rouge/lexers/sass.rb +75 -0
  279. data/lib/rouge/lexers/scala.rb +143 -0
  280. data/lib/rouge/lexers/scheme.rb +113 -0
  281. data/lib/rouge/lexers/scss.rb +35 -0
  282. data/lib/rouge/lexers/sed.rb +173 -0
  283. data/lib/rouge/lexers/shell.rb +190 -0
  284. data/lib/rouge/lexers/sieve.rb +97 -0
  285. data/lib/rouge/lexers/slim.rb +229 -0
  286. data/lib/rouge/lexers/smalltalk.rb +117 -0
  287. data/lib/rouge/lexers/smarty.rb +81 -0
  288. data/lib/rouge/lexers/sml.rb +345 -0
  289. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  290. data/lib/rouge/lexers/sqf.rb +109 -0
  291. data/lib/rouge/lexers/sql.rb +141 -0
  292. data/lib/rouge/lexers/swift.rb +182 -0
  293. data/lib/rouge/lexers/tap.rb +89 -0
  294. data/lib/rouge/lexers/tcl.rb +193 -0
  295. data/lib/rouge/lexers/terraform.rb +105 -0
  296. data/lib/rouge/lexers/tex.rb +70 -0
  297. data/lib/rouge/lexers/toml.rb +68 -0
  298. data/lib/rouge/lexers/tsx.rb +20 -0
  299. data/lib/rouge/lexers/tulip.rb +108 -0
  300. data/lib/rouge/lexers/turtle.rb +64 -0
  301. data/lib/rouge/lexers/twig.rb +40 -0
  302. data/lib/rouge/lexers/typescript/common.rb +34 -0
  303. data/lib/rouge/lexers/typescript.rb +23 -0
  304. data/lib/rouge/lexers/vala.rb +78 -0
  305. data/lib/rouge/lexers/vb.rb +165 -0
  306. data/lib/rouge/lexers/verilog.rb +165 -0
  307. data/lib/rouge/lexers/vhdl.rb +98 -0
  308. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  309. data/lib/rouge/lexers/viml.rb +102 -0
  310. data/lib/rouge/lexers/vue.rb +124 -0
  311. data/lib/rouge/lexers/wollok.rb +104 -0
  312. data/lib/rouge/lexers/xml.rb +58 -0
  313. data/lib/rouge/lexers/yaml.rb +374 -0
  314. data/lib/rouge/plugins/redcarpet.rb +31 -0
  315. data/lib/rouge/regex_lexer.rb +442 -0
  316. data/lib/rouge/template_lexer.rb +21 -0
  317. data/lib/rouge/text_analyzer.rb +50 -0
  318. data/lib/rouge/theme.rb +214 -0
  319. data/lib/rouge/themes/base16.rb +131 -0
  320. data/lib/rouge/themes/colorful.rb +68 -0
  321. data/lib/rouge/themes/github.rb +72 -0
  322. data/lib/rouge/themes/gruvbox.rb +168 -0
  323. data/lib/rouge/themes/igor_pro.rb +21 -0
  324. data/lib/rouge/themes/molokai.rb +83 -0
  325. data/lib/rouge/themes/monokai.rb +93 -0
  326. data/lib/rouge/themes/monokai_sublime.rb +92 -0
  327. data/lib/rouge/themes/pastie.rb +70 -0
  328. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  329. data/lib/rouge/themes/tulip.rb +70 -0
  330. data/lib/rouge/token.rb +183 -0
  331. data/lib/rouge/util.rb +102 -0
  332. data/lib/rouge/version.rb +8 -0
  333. data/lib/rouge.rb +84 -0
  334. data/rouge.gemspec +25 -0
  335. metadata +384 -0
@@ -0,0 +1,113 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Clojure < RegexLexer
7
+ title "Clojure"
8
+ desc "The Clojure programming language (clojure.org)"
9
+
10
+ tag 'clojure'
11
+ aliases 'clj', 'cljs'
12
+
13
+ filenames '*.clj', '*.cljs', '*.cljc', 'build.boot', '*.edn'
14
+
15
+ mimetypes 'text/x-clojure', 'application/x-clojure'
16
+
17
+ def self.keywords
18
+ @keywords ||= Set.new %w(
19
+ fn def defn defmacro defmethod defmulti defn- defstruct if
20
+ cond let for
21
+ )
22
+ end
23
+
24
+ def self.builtins
25
+ @builtins ||= Set.new %w(
26
+ . .. * + - -> / < <= = == > >= accessor agent agent-errors
27
+ aget alength all-ns alter and append-child apply array-map
28
+ aset aset-boolean aset-byte aset-char aset-double aset-float
29
+ aset-int aset-long aset-short assert assoc await await-for bean
30
+ binding bit-and bit-not bit-or bit-shift-left bit-shift-right
31
+ bit-xor boolean branch? butlast byte cast char children
32
+ class clear-agent-errors comment commute comp comparator
33
+ complement concat conj cons constantly construct-proxy
34
+ contains? count create-ns create-struct cycle dec deref
35
+ difference disj dissoc distinct doall doc dorun doseq dosync
36
+ dotimes doto double down drop drop-while edit end? ensure eval
37
+ every? false? ffirst file-seq filter find find-doc find-ns
38
+ find-var first float flush fnseq frest gensym get-proxy-class
39
+ get hash-map hash-set identical? identity if-let import in-ns
40
+ inc index insert-child insert-left insert-right inspect-table
41
+ inspect-tree instance? int interleave intersection into
42
+ into-array iterate join key keys keyword keyword? last lazy-cat
43
+ lazy-cons left lefts line-seq list* list load load-file locking
44
+ long loop macroexpand macroexpand-1 make-array make-node map
45
+ map-invert map? mapcat max max-key memfn merge merge-with meta
46
+ min min-key name namespace neg? new newline next nil? node not
47
+ not-any? not-every? not= ns-imports ns-interns ns-map ns-name
48
+ ns-publics ns-refers ns-resolve ns-unmap nth nthrest or parse
49
+ partial path peek pop pos? pr pr-str print print-str println
50
+ println-str prn prn-str project proxy proxy-mappings quot
51
+ rand rand-int range re-find re-groups re-matcher re-matches
52
+ re-pattern re-seq read read-line reduce ref ref-set refer rem
53
+ remove remove-method remove-ns rename rename-keys repeat replace
54
+ replicate resolve rest resultset-seq reverse rfirst right
55
+ rights root rrest rseq second select select-keys send send-off
56
+ seq seq-zip seq? set short slurp some sort sort-by sorted-map
57
+ sorted-map-by sorted-set special-symbol? split-at split-with
58
+ str string? struct struct-map subs subvec symbol symbol?
59
+ sync take take-nth take-while test time to-array to-array-2d
60
+ tree-seq true? union up update-proxy val vals var-get var-set
61
+ var? vector vector-zip vector? when when-first when-let
62
+ when-not with-local-vars with-meta with-open with-out-str
63
+ xml-seq xml-zip zero? zipmap zipper'
64
+ )
65
+ end
66
+
67
+ identifier = %r([\w!$%*+,<=>?/.-]+)
68
+ keyword = %r([\w!\#$%*+,<=>?/.-]+)
69
+
70
+ def name_token(name)
71
+ return Keyword if self.class.keywords.include?(name)
72
+ return Name::Builtin if self.class.builtins.include?(name)
73
+ nil
74
+ end
75
+
76
+ state :root do
77
+ rule /;.*?$/, Comment::Single
78
+ rule /\s+/m, Text::Whitespace
79
+
80
+ rule /-?\d+\.\d+/, Num::Float
81
+ rule /-?\d+/, Num::Integer
82
+ rule /0x-?[0-9a-fA-F]+/, Num::Hex
83
+
84
+ rule /"(\\.|[^"])*"/, Str
85
+ rule /'#{keyword}/, Str::Symbol
86
+ rule /::?#{keyword}/, Name::Constant
87
+ rule /\\(.|[a-z]+)/i, Str::Char
88
+
89
+
90
+ rule /~@|[`\'#^~&@]/, Operator
91
+
92
+ rule /(\()(\s*)(#{identifier})/m do |m|
93
+ token Punctuation, m[1]
94
+ token Text::Whitespace, m[2]
95
+ token(name_token(m[3]) || Name::Function, m[3])
96
+ end
97
+
98
+ rule identifier do |m|
99
+ token name_token(m[0]) || Name
100
+ end
101
+
102
+ # vectors
103
+ rule /[\[\]]/, Punctuation
104
+
105
+ # maps
106
+ rule /[{}]/, Punctuation
107
+
108
+ # parentheses
109
+ rule /[()]/, Punctuation
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,207 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class CMake < RegexLexer
7
+ title 'CMake'
8
+ desc 'The cross-platform, open-source build system'
9
+ tag 'cmake'
10
+ filenames 'CMakeLists.txt', '*.cmake'
11
+ mimetypes 'text/x-cmake'
12
+
13
+ SPACE = '[ \t]'
14
+ BRACKET_OPEN = '\[=*\['
15
+
16
+ STATES_MAP = {
17
+ :root => Text,
18
+ :bracket_string => Str::Double,
19
+ :quoted_argument => Str::Double,
20
+ :bracket_comment => Comment::Multiline,
21
+ :variable_reference => Name::Variable,
22
+ }
23
+
24
+ BUILTIN_COMMANDS = Set.new %w[
25
+ add_compile_options
26
+ add_custom_command
27
+ add_custom_target
28
+ add_definitions
29
+ add_dependencies
30
+ add_executable
31
+ add_library
32
+ add_subdirectory
33
+ add_test
34
+ aux_source_directory
35
+ break
36
+ build_command
37
+ build_name
38
+ cmake_host_system_information
39
+ cmake_minimum_required
40
+ cmake_policy
41
+ configure_file
42
+ create_test_sourcelist
43
+ define_property
44
+ else
45
+ elseif
46
+ enable_language
47
+ enable_testing
48
+ endforeach
49
+ endfunction
50
+ endif
51
+ endmacro
52
+ endwhile
53
+ exec_program
54
+ execute_process
55
+ export
56
+ export_library_dependencies
57
+ file
58
+ find_file
59
+ find_library
60
+ find_package
61
+ find_path
62
+ find_program
63
+ fltk_wrap_ui
64
+ foreach
65
+ function
66
+ get_cmake_property
67
+ get_directory_property
68
+ get_filename_component
69
+ get_property
70
+ get_source_file_property
71
+ get_target_property
72
+ get_test_property
73
+ if
74
+ include
75
+ include_directories
76
+ include_external_msproject
77
+ include_regular_expression
78
+ install
79
+ install_files
80
+ install_programs
81
+ install_targets
82
+ link_directories
83
+ link_libraries
84
+ list
85
+ load_cache
86
+ load_command
87
+ macro
88
+ make_directory
89
+ mark_as_advanced
90
+ math
91
+ message
92
+ option
93
+ output_required_files
94
+ project
95
+ qt_wrap_cpp
96
+ qt_wrap_ui
97
+ remove
98
+ remove_definitions
99
+ return
100
+ separate_arguments
101
+ set
102
+ set_directory_properties
103
+ set_property
104
+ set_source_files_properties
105
+ set_target_properties
106
+ set_tests_properties
107
+ site_name
108
+ source_group
109
+ string
110
+ subdir_depends
111
+ subdirs
112
+ target_compile_definitions
113
+ target_compile_options
114
+ target_include_directories
115
+ target_link_libraries
116
+ try_compile
117
+ try_run
118
+ unset
119
+ use_mangled_mesa
120
+ utility_source
121
+ variable_requires
122
+ variable_watch
123
+ while
124
+ write_file
125
+ ]
126
+
127
+ state :default do
128
+ rule /\r\n?|\n/ do
129
+ token STATES_MAP[state.name.to_sym]
130
+ end
131
+ rule /./ do
132
+ token STATES_MAP[state.name.to_sym]
133
+ end
134
+ end
135
+
136
+ state :variable_interpolation do
137
+ rule /\$\{/ do
138
+ token Str::Interpol
139
+ push :variable_reference
140
+ end
141
+ end
142
+
143
+ state :bracket_close do
144
+ rule /\]=*\]/ do |m|
145
+ token STATES_MAP[state.name.to_sym]
146
+ goto :root if m[0].length == @bracket_len
147
+ end
148
+ end
149
+
150
+ state :root do
151
+ mixin :variable_interpolation
152
+
153
+ rule /#{SPACE}/, Text
154
+ rule /[()]/, Punctuation
155
+
156
+ rule /##{BRACKET_OPEN}/ do |m|
157
+ token Comment::Multiline
158
+ @bracket_len = m[0].length - 1 # decount '#'
159
+ goto :bracket_comment
160
+ end
161
+ rule /#{BRACKET_OPEN}/ do |m|
162
+ token Str::Double
163
+ @bracket_len = m[0].length
164
+ goto :bracket_string
165
+ end
166
+
167
+ rule /"/, Str::Double, :quoted_argument
168
+
169
+ rule /([A-Za-z_][A-Za-z0-9_]*)(#{SPACE}*)(\()/ do |m|
170
+ groups BUILTIN_COMMANDS.include?(m[1]) ? Name::Builtin : Name::Function, Text, Punctuation
171
+ end
172
+
173
+ rule /#.*/, Comment::Single
174
+
175
+ mixin :default
176
+ end
177
+
178
+ state :bracket_string do
179
+ mixin :bracket_close
180
+ mixin :variable_interpolation
181
+ mixin :default
182
+ end
183
+
184
+ state :bracket_comment do
185
+ mixin :bracket_close
186
+ mixin :default
187
+ end
188
+
189
+ state :variable_reference do
190
+ mixin :variable_interpolation
191
+
192
+ rule /}/, Str::Interpol, :pop!
193
+
194
+ mixin :default
195
+ end
196
+
197
+ state :quoted_argument do
198
+ mixin :variable_interpolation
199
+
200
+ rule /"/, Str::Double, :root
201
+ rule /\\[()#" \\$@^trn;]/, Str::Escape
202
+
203
+ mixin :default
204
+ end
205
+ end
206
+ end
207
+ end
@@ -0,0 +1,175 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Coffeescript < RegexLexer
7
+ tag 'coffeescript'
8
+ aliases 'coffee', 'coffee-script'
9
+ filenames '*.coffee', 'Cakefile'
10
+ mimetypes 'text/coffeescript'
11
+
12
+ title "CoffeeScript"
13
+ desc 'The Coffeescript programming language (coffeescript.org)'
14
+
15
+ def self.detect?(text)
16
+ return true if text.shebang? 'coffee'
17
+ end
18
+
19
+ def self.keywords
20
+ @keywords ||= Set.new %w(
21
+ for in of while break return continue switch when then if else
22
+ throw try catch finally new delete typeof instanceof super
23
+ extends this class by
24
+ )
25
+ end
26
+
27
+ def self.constants
28
+ @constants ||= Set.new %w(
29
+ true false yes no on off null NaN Infinity undefined
30
+ )
31
+ end
32
+
33
+ def self.builtins
34
+ @builtins ||= Set.new %w(
35
+ Array Boolean Date Error Function Math netscape Number Object
36
+ Packages RegExp String sun decodeURI decodeURIComponent
37
+ encodeURI encodeURIComponent eval isFinite isNaN parseFloat
38
+ parseInt document window
39
+ )
40
+ end
41
+
42
+ id = /[$a-zA-Z_][a-zA-Z0-9_]*/
43
+
44
+ state :comments_and_whitespace do
45
+ rule /\s+/m, Text
46
+ rule /###\s*\n.*?###/m, Comment::Multiline
47
+ rule /#.*$/, Comment::Single
48
+ end
49
+
50
+ state :multiline_regex do
51
+ # this order is important, so that #{ isn't interpreted
52
+ # as a comment
53
+ mixin :has_interpolation
54
+ mixin :comments_and_whitespace
55
+
56
+ rule %r(///([gim]+\b|\B)), Str::Regex, :pop!
57
+ rule %r(/), Str::Regex
58
+ rule %r([^/#]+), Str::Regex
59
+ end
60
+
61
+ state :slash_starts_regex do
62
+ mixin :comments_and_whitespace
63
+ rule %r(///) do
64
+ token Str::Regex
65
+ goto :multiline_regex
66
+ end
67
+
68
+ rule %r(
69
+ /(\\.|[^\[/\\\n]|\[(\\.|[^\]\\\n])*\])+/ # a regex
70
+ ([gim]+\b|\B)
71
+ )x, Str::Regex, :pop!
72
+
73
+ rule(//) { pop! }
74
+ end
75
+
76
+ state :root do
77
+ rule(%r(^(?=\s|/|<!--))) { push :slash_starts_regex }
78
+ mixin :comments_and_whitespace
79
+ rule %r(
80
+ [+][+]|--|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|[?]|:|=|
81
+ [|][|]|\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*`%&|^/])=?
82
+ )x, Operator, :slash_starts_regex
83
+
84
+ rule /[-=]>/, Name::Function
85
+
86
+ rule /(@)([ \t]*)(#{id})/ do
87
+ groups Name::Variable::Instance, Text, Name::Attribute
88
+ push :slash_starts_regex
89
+ end
90
+
91
+ rule /([.])([ \t]*)(#{id})/ do
92
+ groups Punctuation, Text, Name::Attribute
93
+ push :slash_starts_regex
94
+ end
95
+
96
+ rule /#{id}(?=\s*:)/, Name::Attribute, :slash_starts_regex
97
+
98
+ rule /#{id}/ do |m|
99
+ if self.class.keywords.include? m[0]
100
+ token Keyword
101
+ elsif self.class.constants.include? m[0]
102
+ token Name::Constant
103
+ elsif self.class.builtins.include? m[0]
104
+ token Name::Builtin
105
+ else
106
+ token Name::Other
107
+ end
108
+
109
+ push :slash_starts_regex
110
+ end
111
+
112
+ rule /[{(\[;,]/, Punctuation, :slash_starts_regex
113
+ rule /[})\].]/, Punctuation
114
+
115
+ rule /\d+[.]\d+([eE]\d+)?[fd]?/, Num::Float
116
+ rule /0x[0-9a-fA-F]+/, Num::Hex
117
+ rule /\d+/, Num::Integer
118
+ rule /"""/, Str, :tdqs
119
+ rule /'''/, Str, :tsqs
120
+ rule /"/, Str, :dqs
121
+ rule /'/, Str, :sqs
122
+ end
123
+
124
+ state :strings do
125
+ # all coffeescript strings are multi-line
126
+ rule /[^#\\'"]+/m, Str
127
+
128
+ rule /\\./, Str::Escape
129
+ rule /#/, Str
130
+ end
131
+
132
+ state :double_strings do
133
+ rule /'/, Str
134
+ mixin :has_interpolation
135
+ mixin :strings
136
+ end
137
+
138
+ state :single_strings do
139
+ rule /"/, Str
140
+ mixin :strings
141
+ end
142
+
143
+ state :interpolation do
144
+ rule /}/, Str::Interpol, :pop!
145
+ mixin :root
146
+ end
147
+
148
+ state :has_interpolation do
149
+ rule /[#][{]/, Str::Interpol, :interpolation
150
+ end
151
+
152
+ state :dqs do
153
+ rule /"/, Str, :pop!
154
+ mixin :double_strings
155
+ end
156
+
157
+ state :tdqs do
158
+ rule /"""/, Str, :pop!
159
+ rule /"/, Str
160
+ mixin :double_strings
161
+ end
162
+
163
+ state :sqs do
164
+ rule /'/, Str, :pop!
165
+ mixin :single_strings
166
+ end
167
+
168
+ state :tsqs do
169
+ rule /'''/, Str, :pop!
170
+ rule /'/, Str
171
+ mixin :single_strings
172
+ end
173
+ end
174
+ end
175
+ end