rouge 3.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (429) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +40 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +18 -0
  5. data/lib/rouge.rb +93 -0
  6. data/lib/rouge/cli.rb +498 -0
  7. data/lib/rouge/demos/abap +6 -0
  8. data/lib/rouge/demos/actionscript +4 -0
  9. data/lib/rouge/demos/ada +26 -0
  10. data/lib/rouge/demos/apache +21 -0
  11. data/lib/rouge/demos/apex +9 -0
  12. data/lib/rouge/demos/apiblueprint +33 -0
  13. data/lib/rouge/demos/applescript +2 -0
  14. data/lib/rouge/demos/armasm +12 -0
  15. data/lib/rouge/demos/awk +4 -0
  16. data/lib/rouge/demos/batchfile +3 -0
  17. data/lib/rouge/demos/bbcbasic +6 -0
  18. data/lib/rouge/demos/biml +38 -0
  19. data/lib/rouge/demos/bpf +7 -0
  20. data/lib/rouge/demos/brainfuck +5 -0
  21. data/lib/rouge/demos/bsl +7 -0
  22. data/lib/rouge/demos/c +8 -0
  23. data/lib/rouge/demos/ceylon +7 -0
  24. data/lib/rouge/demos/cfscript +18 -0
  25. data/lib/rouge/demos/clean +6 -0
  26. data/lib/rouge/demos/clojure +5 -0
  27. data/lib/rouge/demos/cmake +7 -0
  28. data/lib/rouge/demos/cmhg +8 -0
  29. data/lib/rouge/demos/coffeescript +5 -0
  30. data/lib/rouge/demos/common_lisp +1 -0
  31. data/lib/rouge/demos/conf +4 -0
  32. data/lib/rouge/demos/console +6 -0
  33. data/lib/rouge/demos/coq +13 -0
  34. data/lib/rouge/demos/cpp +8 -0
  35. data/lib/rouge/demos/crystal +45 -0
  36. data/lib/rouge/demos/csharp +5 -0
  37. data/lib/rouge/demos/css +4 -0
  38. data/lib/rouge/demos/csvs +8 -0
  39. data/lib/rouge/demos/cuda +11 -0
  40. data/lib/rouge/demos/cython +6 -0
  41. data/lib/rouge/demos/d +16 -0
  42. data/lib/rouge/demos/dart +6 -0
  43. data/lib/rouge/demos/diff +7 -0
  44. data/lib/rouge/demos/digdag +19 -0
  45. data/lib/rouge/demos/docker +9 -0
  46. data/lib/rouge/demos/dot +5 -0
  47. data/lib/rouge/demos/ecl +18 -0
  48. data/lib/rouge/demos/eex +1 -0
  49. data/lib/rouge/demos/eiffel +30 -0
  50. data/lib/rouge/demos/elixir +1 -0
  51. data/lib/rouge/demos/elm +4 -0
  52. data/lib/rouge/demos/epp +4 -0
  53. data/lib/rouge/demos/erb +1 -0
  54. data/lib/rouge/demos/erlang +7 -0
  55. data/lib/rouge/demos/escape +3 -0
  56. data/lib/rouge/demos/factor +5 -0
  57. data/lib/rouge/demos/fortran +22 -0
  58. data/lib/rouge/demos/freefem +16 -0
  59. data/lib/rouge/demos/fsharp +12 -0
  60. data/lib/rouge/demos/gdscript +18 -0
  61. data/lib/rouge/demos/ghc-core +26 -0
  62. data/lib/rouge/demos/gherkin +17 -0
  63. data/lib/rouge/demos/glsl +14 -0
  64. data/lib/rouge/demos/go +7 -0
  65. data/lib/rouge/demos/gradle +10 -0
  66. data/lib/rouge/demos/graphql +17 -0
  67. data/lib/rouge/demos/groovy +9 -0
  68. data/lib/rouge/demos/hack +5 -0
  69. data/lib/rouge/demos/haml +5 -0
  70. data/lib/rouge/demos/handlebars +7 -0
  71. data/lib/rouge/demos/haskell +6 -0
  72. data/lib/rouge/demos/haxe +5 -0
  73. data/lib/rouge/demos/hcl +7 -0
  74. data/lib/rouge/demos/hocon +8 -0
  75. data/lib/rouge/demos/hql +5 -0
  76. data/lib/rouge/demos/html +8 -0
  77. data/lib/rouge/demos/http +14 -0
  78. data/lib/rouge/demos/hylang +10 -0
  79. data/lib/rouge/demos/idlang +8 -0
  80. data/lib/rouge/demos/igorpro +9 -0
  81. data/lib/rouge/demos/ini +4 -0
  82. data/lib/rouge/demos/io +11 -0
  83. data/lib/rouge/demos/irb +4 -0
  84. data/lib/rouge/demos/irb_output +2 -0
  85. data/lib/rouge/demos/java +5 -0
  86. data/lib/rouge/demos/javascript +1 -0
  87. data/lib/rouge/demos/jinja +9 -0
  88. data/lib/rouge/demos/jsl +3 -0
  89. data/lib/rouge/demos/json +1 -0
  90. data/lib/rouge/demos/json-doc +1 -0
  91. data/lib/rouge/demos/jsonnet +28 -0
  92. data/lib/rouge/demos/jsp +29 -0
  93. data/lib/rouge/demos/jsx +17 -0
  94. data/lib/rouge/demos/julia +11 -0
  95. data/lib/rouge/demos/kotlin +3 -0
  96. data/lib/rouge/demos/lasso +12 -0
  97. data/lib/rouge/demos/liquid +10 -0
  98. data/lib/rouge/demos/literate_coffeescript +3 -0
  99. data/lib/rouge/demos/literate_haskell +7 -0
  100. data/lib/rouge/demos/llvm +20 -0
  101. data/lib/rouge/demos/lua +12 -0
  102. data/lib/rouge/demos/lustre +6 -0
  103. data/lib/rouge/demos/lutin +18 -0
  104. data/lib/rouge/demos/m68k +16 -0
  105. data/lib/rouge/demos/magik +6 -0
  106. data/lib/rouge/demos/make +6 -0
  107. data/lib/rouge/demos/markdown +4 -0
  108. data/lib/rouge/demos/mason +22 -0
  109. data/lib/rouge/demos/mathematica +8 -0
  110. data/lib/rouge/demos/matlab +6 -0
  111. data/lib/rouge/demos/minizinc +23 -0
  112. data/lib/rouge/demos/moonscript +16 -0
  113. data/lib/rouge/demos/mosel +10 -0
  114. data/lib/rouge/demos/msgtrans +4 -0
  115. data/lib/rouge/demos/mxml +22 -0
  116. data/lib/rouge/demos/nasm +26 -0
  117. data/lib/rouge/demos/nesasm +11 -0
  118. data/lib/rouge/demos/nginx +5 -0
  119. data/lib/rouge/demos/nim +27 -0
  120. data/lib/rouge/demos/nix +19 -0
  121. data/lib/rouge/demos/objective_c +18 -0
  122. data/lib/rouge/demos/objective_cpp +17 -0
  123. data/lib/rouge/demos/ocaml +12 -0
  124. data/lib/rouge/demos/openedge +4 -0
  125. data/lib/rouge/demos/opentype_feature_file +6 -0
  126. data/lib/rouge/demos/pascal +14 -0
  127. data/lib/rouge/demos/perl +5 -0
  128. data/lib/rouge/demos/php +3 -0
  129. data/lib/rouge/demos/plaintext +1 -0
  130. data/lib/rouge/demos/plist +11 -0
  131. data/lib/rouge/demos/pony +17 -0
  132. data/lib/rouge/demos/powershell +13 -0
  133. data/lib/rouge/demos/praat +26 -0
  134. data/lib/rouge/demos/prolog +9 -0
  135. data/lib/rouge/demos/prometheus +9 -0
  136. data/lib/rouge/demos/properties +7 -0
  137. data/lib/rouge/demos/protobuf +5 -0
  138. data/lib/rouge/demos/puppet +6 -0
  139. data/lib/rouge/demos/python +6 -0
  140. data/lib/rouge/demos/q +8 -0
  141. data/lib/rouge/demos/qml +9 -0
  142. data/lib/rouge/demos/r +8 -0
  143. data/lib/rouge/demos/racket +24 -0
  144. data/lib/rouge/demos/reasonml +12 -0
  145. data/lib/rouge/demos/robot_framework +27 -0
  146. data/lib/rouge/demos/ruby +9 -0
  147. data/lib/rouge/demos/rust +12 -0
  148. data/lib/rouge/demos/sas +13 -0
  149. data/lib/rouge/demos/sass +3 -0
  150. data/lib/rouge/demos/scala +3 -0
  151. data/lib/rouge/demos/scheme +4 -0
  152. data/lib/rouge/demos/scss +5 -0
  153. data/lib/rouge/demos/sed +4 -0
  154. data/lib/rouge/demos/shell +2 -0
  155. data/lib/rouge/demos/sieve +10 -0
  156. data/lib/rouge/demos/slice +10 -0
  157. data/lib/rouge/demos/slim +17 -0
  158. data/lib/rouge/demos/smalltalk +6 -0
  159. data/lib/rouge/demos/smarty +12 -0
  160. data/lib/rouge/demos/sml +4 -0
  161. data/lib/rouge/demos/sparql +6 -0
  162. data/lib/rouge/demos/sqf +14 -0
  163. data/lib/rouge/demos/sql +1 -0
  164. data/lib/rouge/demos/supercollider +11 -0
  165. data/lib/rouge/demos/swift +5 -0
  166. data/lib/rouge/demos/tap +5 -0
  167. data/lib/rouge/demos/tcl +1 -0
  168. data/lib/rouge/demos/terraform +16 -0
  169. data/lib/rouge/demos/tex +1 -0
  170. data/lib/rouge/demos/toml +9 -0
  171. data/lib/rouge/demos/tsx +17 -0
  172. data/lib/rouge/demos/ttcn3 +6 -0
  173. data/lib/rouge/demos/tulip +13 -0
  174. data/lib/rouge/demos/turtle +26 -0
  175. data/lib/rouge/demos/twig +9 -0
  176. data/lib/rouge/demos/typescript +1 -0
  177. data/lib/rouge/demos/vala +8 -0
  178. data/lib/rouge/demos/vb +4 -0
  179. data/lib/rouge/demos/vcl +12 -0
  180. data/lib/rouge/demos/verilog +27 -0
  181. data/lib/rouge/demos/vhdl +23 -0
  182. data/lib/rouge/demos/viml +14 -0
  183. data/lib/rouge/demos/vue +11 -0
  184. data/lib/rouge/demos/wollok +11 -0
  185. data/lib/rouge/demos/xml +2 -0
  186. data/lib/rouge/demos/xojo +14 -0
  187. data/lib/rouge/demos/xpath +2 -0
  188. data/lib/rouge/demos/xquery +22 -0
  189. data/lib/rouge/demos/yaml +4 -0
  190. data/lib/rouge/formatter.rb +112 -0
  191. data/lib/rouge/formatters/html.rb +56 -0
  192. data/lib/rouge/formatters/html_inline.rb +31 -0
  193. data/lib/rouge/formatters/html_legacy.rb +45 -0
  194. data/lib/rouge/formatters/html_line_table.rb +53 -0
  195. data/lib/rouge/formatters/html_linewise.rb +23 -0
  196. data/lib/rouge/formatters/html_pygments.rb +18 -0
  197. data/lib/rouge/formatters/html_table.rb +51 -0
  198. data/lib/rouge/formatters/null.rb +20 -0
  199. data/lib/rouge/formatters/terminal256.rb +198 -0
  200. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  201. data/lib/rouge/formatters/tex.rb +92 -0
  202. data/lib/rouge/guesser.rb +57 -0
  203. data/lib/rouge/guessers/disambiguation.rb +136 -0
  204. data/lib/rouge/guessers/filename.rb +27 -0
  205. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  206. data/lib/rouge/guessers/mimetype.rb +16 -0
  207. data/lib/rouge/guessers/modeline.rb +46 -0
  208. data/lib/rouge/guessers/source.rb +31 -0
  209. data/lib/rouge/guessers/util.rb +34 -0
  210. data/lib/rouge/lexer.rb +516 -0
  211. data/lib/rouge/lexers/abap.rb +240 -0
  212. data/lib/rouge/lexers/actionscript.rb +196 -0
  213. data/lib/rouge/lexers/ada.rb +162 -0
  214. data/lib/rouge/lexers/apache.rb +73 -0
  215. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  216. data/lib/rouge/lexers/apex.rb +126 -0
  217. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  218. data/lib/rouge/lexers/apple_script.rb +370 -0
  219. data/lib/rouge/lexers/armasm.rb +145 -0
  220. data/lib/rouge/lexers/awk.rb +162 -0
  221. data/lib/rouge/lexers/batchfile.rb +164 -0
  222. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  223. data/lib/rouge/lexers/biml.rb +43 -0
  224. data/lib/rouge/lexers/bpf.rb +118 -0
  225. data/lib/rouge/lexers/brainfuck.rb +53 -0
  226. data/lib/rouge/lexers/bsl.rb +82 -0
  227. data/lib/rouge/lexers/c.rb +190 -0
  228. data/lib/rouge/lexers/ceylon.rb +96 -0
  229. data/lib/rouge/lexers/cfscript.rb +154 -0
  230. data/lib/rouge/lexers/clean.rb +156 -0
  231. data/lib/rouge/lexers/clojure.rb +113 -0
  232. data/lib/rouge/lexers/cmake.rb +207 -0
  233. data/lib/rouge/lexers/cmhg.rb +34 -0
  234. data/lib/rouge/lexers/coffeescript.rb +215 -0
  235. data/lib/rouge/lexers/common_lisp.rb +346 -0
  236. data/lib/rouge/lexers/conf.rb +25 -0
  237. data/lib/rouge/lexers/console.rb +174 -0
  238. data/lib/rouge/lexers/coq.rb +191 -0
  239. data/lib/rouge/lexers/cpp.rb +82 -0
  240. data/lib/rouge/lexers/crystal.rb +430 -0
  241. data/lib/rouge/lexers/csharp.rb +114 -0
  242. data/lib/rouge/lexers/css.rb +274 -0
  243. data/lib/rouge/lexers/csvs.rb +44 -0
  244. data/lib/rouge/lexers/cuda.rb +35 -0
  245. data/lib/rouge/lexers/cython.rb +151 -0
  246. data/lib/rouge/lexers/d.rb +177 -0
  247. data/lib/rouge/lexers/dart.rb +105 -0
  248. data/lib/rouge/lexers/diff.rb +37 -0
  249. data/lib/rouge/lexers/digdag.rb +70 -0
  250. data/lib/rouge/lexers/docker.rb +51 -0
  251. data/lib/rouge/lexers/dot.rb +69 -0
  252. data/lib/rouge/lexers/ecl.rb +175 -0
  253. data/lib/rouge/lexers/eex.rb +52 -0
  254. data/lib/rouge/lexers/eiffel.rb +66 -0
  255. data/lib/rouge/lexers/elixir.rb +149 -0
  256. data/lib/rouge/lexers/elm.rb +90 -0
  257. data/lib/rouge/lexers/epp.rb +51 -0
  258. data/lib/rouge/lexers/erb.rb +53 -0
  259. data/lib/rouge/lexers/erlang.rb +115 -0
  260. data/lib/rouge/lexers/escape.rb +58 -0
  261. data/lib/rouge/lexers/factor.rb +303 -0
  262. data/lib/rouge/lexers/fortran.rb +178 -0
  263. data/lib/rouge/lexers/freefem.rb +240 -0
  264. data/lib/rouge/lexers/fsharp.rb +119 -0
  265. data/lib/rouge/lexers/gdscript.rb +171 -0
  266. data/lib/rouge/lexers/ghc_core.rb +151 -0
  267. data/lib/rouge/lexers/gherkin.rb +140 -0
  268. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  269. data/lib/rouge/lexers/glsl.rb +132 -0
  270. data/lib/rouge/lexers/go.rb +175 -0
  271. data/lib/rouge/lexers/gradle.rb +38 -0
  272. data/lib/rouge/lexers/graphql.rb +261 -0
  273. data/lib/rouge/lexers/groovy.rb +111 -0
  274. data/lib/rouge/lexers/hack.rb +49 -0
  275. data/lib/rouge/lexers/haml.rb +226 -0
  276. data/lib/rouge/lexers/handlebars.rb +91 -0
  277. data/lib/rouge/lexers/haskell.rb +199 -0
  278. data/lib/rouge/lexers/haxe.rb +246 -0
  279. data/lib/rouge/lexers/hcl.rb +163 -0
  280. data/lib/rouge/lexers/hocon.rb +86 -0
  281. data/lib/rouge/lexers/hql.rb +139 -0
  282. data/lib/rouge/lexers/html.rb +141 -0
  283. data/lib/rouge/lexers/http.rb +81 -0
  284. data/lib/rouge/lexers/hylang.rb +94 -0
  285. data/lib/rouge/lexers/idlang.rb +312 -0
  286. data/lib/rouge/lexers/igorpro.rb +664 -0
  287. data/lib/rouge/lexers/ini.rb +54 -0
  288. data/lib/rouge/lexers/io.rb +69 -0
  289. data/lib/rouge/lexers/irb.rb +67 -0
  290. data/lib/rouge/lexers/java.rb +91 -0
  291. data/lib/rouge/lexers/javascript.rb +279 -0
  292. data/lib/rouge/lexers/jinja.rb +154 -0
  293. data/lib/rouge/lexers/jsl.rb +55 -0
  294. data/lib/rouge/lexers/json.rb +69 -0
  295. data/lib/rouge/lexers/json_doc.rb +25 -0
  296. data/lib/rouge/lexers/jsonnet.rb +152 -0
  297. data/lib/rouge/lexers/jsp.rb +120 -0
  298. data/lib/rouge/lexers/jsx.rb +104 -0
  299. data/lib/rouge/lexers/julia.rb +290 -0
  300. data/lib/rouge/lexers/kotlin.rb +127 -0
  301. data/lib/rouge/lexers/lasso.rb +215 -0
  302. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  303. data/lib/rouge/lexers/liquid.rb +285 -0
  304. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  305. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  306. data/lib/rouge/lexers/llvm.rb +97 -0
  307. data/lib/rouge/lexers/lua.rb +164 -0
  308. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  309. data/lib/rouge/lexers/lustre.rb +79 -0
  310. data/lib/rouge/lexers/lutin.rb +33 -0
  311. data/lib/rouge/lexers/m68k.rb +143 -0
  312. data/lib/rouge/lexers/magik.rb +127 -0
  313. data/lib/rouge/lexers/make.rb +135 -0
  314. data/lib/rouge/lexers/markdown.rb +182 -0
  315. data/lib/rouge/lexers/mason.rb +110 -0
  316. data/lib/rouge/lexers/mathematica.rb +96 -0
  317. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  318. data/lib/rouge/lexers/matlab.rb +81 -0
  319. data/lib/rouge/lexers/matlab/builtins.yml +3515 -0
  320. data/lib/rouge/lexers/minizinc.rb +87 -0
  321. data/lib/rouge/lexers/moonscript.rb +115 -0
  322. data/lib/rouge/lexers/mosel.rb +232 -0
  323. data/lib/rouge/lexers/msgtrans.rb +26 -0
  324. data/lib/rouge/lexers/mxml.rb +69 -0
  325. data/lib/rouge/lexers/nasm.rb +72 -0
  326. data/lib/rouge/lexers/nesasm.rb +78 -0
  327. data/lib/rouge/lexers/nginx.rb +72 -0
  328. data/lib/rouge/lexers/nim.rb +154 -0
  329. data/lib/rouge/lexers/nix.rb +211 -0
  330. data/lib/rouge/lexers/objective_c.rb +21 -0
  331. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  332. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  333. data/lib/rouge/lexers/ocaml.rb +65 -0
  334. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  335. data/lib/rouge/lexers/openedge.rb +429 -0
  336. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  337. data/lib/rouge/lexers/pascal.rb +67 -0
  338. data/lib/rouge/lexers/perl.rb +231 -0
  339. data/lib/rouge/lexers/php.rb +216 -0
  340. data/lib/rouge/lexers/php/builtins.rb +203 -0
  341. data/lib/rouge/lexers/plain_text.rb +27 -0
  342. data/lib/rouge/lexers/plist.rb +47 -0
  343. data/lib/rouge/lexers/pony.rb +94 -0
  344. data/lib/rouge/lexers/powershell.rb +230 -0
  345. data/lib/rouge/lexers/praat.rb +351 -0
  346. data/lib/rouge/lexers/prolog.rb +67 -0
  347. data/lib/rouge/lexers/prometheus.rb +123 -0
  348. data/lib/rouge/lexers/properties.rb +52 -0
  349. data/lib/rouge/lexers/protobuf.rb +71 -0
  350. data/lib/rouge/lexers/puppet.rb +129 -0
  351. data/lib/rouge/lexers/python.rb +248 -0
  352. data/lib/rouge/lexers/q.rb +126 -0
  353. data/lib/rouge/lexers/qml.rb +74 -0
  354. data/lib/rouge/lexers/r.rb +89 -0
  355. data/lib/rouge/lexers/racket.rb +545 -0
  356. data/lib/rouge/lexers/reasonml.rb +65 -0
  357. data/lib/rouge/lexers/robot_framework.rb +249 -0
  358. data/lib/rouge/lexers/ruby.rb +444 -0
  359. data/lib/rouge/lexers/rust.rb +193 -0
  360. data/lib/rouge/lexers/sas.rb +563 -0
  361. data/lib/rouge/lexers/sass.rb +75 -0
  362. data/lib/rouge/lexers/sass/common.rb +181 -0
  363. data/lib/rouge/lexers/scala.rb +169 -0
  364. data/lib/rouge/lexers/scheme.rb +113 -0
  365. data/lib/rouge/lexers/scss.rb +35 -0
  366. data/lib/rouge/lexers/sed.rb +173 -0
  367. data/lib/rouge/lexers/shell.rb +201 -0
  368. data/lib/rouge/lexers/sieve.rb +97 -0
  369. data/lib/rouge/lexers/slice.rb +32 -0
  370. data/lib/rouge/lexers/slim.rb +229 -0
  371. data/lib/rouge/lexers/smalltalk.rb +117 -0
  372. data/lib/rouge/lexers/smarty.rb +81 -0
  373. data/lib/rouge/lexers/sml.rb +345 -0
  374. data/lib/rouge/lexers/sparql.rb +129 -0
  375. data/lib/rouge/lexers/sqf.rb +109 -0
  376. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  377. data/lib/rouge/lexers/sql.rb +161 -0
  378. data/lib/rouge/lexers/supercollider.rb +116 -0
  379. data/lib/rouge/lexers/swift.rb +186 -0
  380. data/lib/rouge/lexers/tap.rb +89 -0
  381. data/lib/rouge/lexers/tcl.rb +193 -0
  382. data/lib/rouge/lexers/terraform.rb +113 -0
  383. data/lib/rouge/lexers/tex.rb +70 -0
  384. data/lib/rouge/lexers/toml.rb +106 -0
  385. data/lib/rouge/lexers/tsx.rb +20 -0
  386. data/lib/rouge/lexers/ttcn3.rb +119 -0
  387. data/lib/rouge/lexers/tulip.rb +108 -0
  388. data/lib/rouge/lexers/turtle.rb +61 -0
  389. data/lib/rouge/lexers/twig.rb +40 -0
  390. data/lib/rouge/lexers/typescript.rb +30 -0
  391. data/lib/rouge/lexers/typescript/common.rb +34 -0
  392. data/lib/rouge/lexers/vala.rb +78 -0
  393. data/lib/rouge/lexers/varnish.rb +168 -0
  394. data/lib/rouge/lexers/vb.rb +165 -0
  395. data/lib/rouge/lexers/verilog.rb +163 -0
  396. data/lib/rouge/lexers/vhdl.rb +98 -0
  397. data/lib/rouge/lexers/viml.rb +102 -0
  398. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  399. data/lib/rouge/lexers/vue.rb +124 -0
  400. data/lib/rouge/lexers/wollok.rb +104 -0
  401. data/lib/rouge/lexers/xml.rb +54 -0
  402. data/lib/rouge/lexers/xojo.rb +61 -0
  403. data/lib/rouge/lexers/xpath.rb +332 -0
  404. data/lib/rouge/lexers/xquery.rb +145 -0
  405. data/lib/rouge/lexers/yaml.rb +376 -0
  406. data/lib/rouge/plugins/redcarpet.rb +37 -0
  407. data/lib/rouge/regex_lexer.rb +443 -0
  408. data/lib/rouge/template_lexer.rb +21 -0
  409. data/lib/rouge/tex_theme_renderer.rb +132 -0
  410. data/lib/rouge/text_analyzer.rb +50 -0
  411. data/lib/rouge/theme.rb +218 -0
  412. data/lib/rouge/themes/base16.rb +131 -0
  413. data/lib/rouge/themes/bw.rb +41 -0
  414. data/lib/rouge/themes/colorful.rb +68 -0
  415. data/lib/rouge/themes/github.rb +72 -0
  416. data/lib/rouge/themes/gruvbox.rb +168 -0
  417. data/lib/rouge/themes/igor_pro.rb +21 -0
  418. data/lib/rouge/themes/magritte.rb +78 -0
  419. data/lib/rouge/themes/molokai.rb +83 -0
  420. data/lib/rouge/themes/monokai.rb +93 -0
  421. data/lib/rouge/themes/monokai_sublime.rb +93 -0
  422. data/lib/rouge/themes/pastie.rb +70 -0
  423. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  424. data/lib/rouge/themes/tulip.rb +70 -0
  425. data/lib/rouge/token.rb +191 -0
  426. data/lib/rouge/util.rb +102 -0
  427. data/lib/rouge/version.rb +8 -0
  428. data/rouge.gemspec +26 -0
  429. metadata +476 -0
@@ -0,0 +1,126 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Apex < RegexLexer
7
+ title "Apex"
8
+ desc "The Apex programming language (provided by salesforce)"
9
+
10
+ tag 'apex'
11
+ filenames '*.cls'
12
+ mimetypes 'text/x-apex'
13
+
14
+ def self.keywords
15
+ @keywords ||= Set.new %w(
16
+ assert break case catch continue default do else finally for if goto
17
+ instanceof new return switch this throw try while insert update
18
+ delete
19
+ )
20
+ end
21
+
22
+ def self.declarations
23
+ @declarations ||= Set.new %w(
24
+ abstract const enum extends final implements native private protected
25
+ public static super synchronized throws transient volatile with
26
+ sharing without inherited virtual global testmethod
27
+ )
28
+ end
29
+
30
+ def self.soql
31
+ @soql ||= Set.new %w(
32
+ SELECT FROM WHERE UPDATE LIKE TYPEOF END USING SCOPE WITH DATA
33
+ CATEGORY GROUP BY ROLLUP CUBE HAVING ORDER BY ASC DESC NULLS FIRST
34
+ LAST LIMIT OFFSET FOR VIEW REFERENCE UPDATE TRACKING VIEWSTAT OR AND
35
+ )
36
+ end
37
+
38
+ def self.types
39
+ @types ||= Set.new %w(
40
+ String boolean byte char double float int long short var void
41
+ )
42
+ end
43
+
44
+ def self.constants
45
+ @constants ||= Set.new %w(true false null)
46
+ end
47
+
48
+ id = /[a-z_][a-z0-9_]*/i
49
+
50
+ state :root do
51
+ rule %r/\s+/m, Text
52
+
53
+ rule %r(//.*?$), Comment::Single
54
+ rule %r(/\*.*?\*/)m, Comment::Multiline
55
+
56
+ rule %r/(?:class|interface)\b/, Keyword::Declaration, :class
57
+ rule %r/import\b/, Keyword::Namespace, :import
58
+
59
+ rule %r/([@$.]?)(#{id})([:(]?)/io do |m|
60
+ if self.class.keywords.include? m[0].downcase
61
+ token Keyword
62
+ elsif self.class.soql.include? m[0].upcase
63
+ token Keyword
64
+ elsif self.class.declarations.include? m[0].downcase
65
+ token Keyword::Declaration
66
+ elsif self.class.types.include? m[0].downcase
67
+ token Keyword::Type
68
+ elsif self.class.constants.include? m[0].downcase
69
+ token Keyword::Constant
70
+ elsif 'package'.casecmp m[0]
71
+ token Keyword::Namespace
72
+ elsif m[1] == "@"
73
+ token Name::Decorator
74
+ elsif m[3] == ":"
75
+ groups Operator, Name::Label, Punctuation
76
+ elsif m[3] == "("
77
+ groups Operator, Name::Function, Punctuation
78
+ elsif m[1] == "."
79
+ groups Operator, Name::Property, Punctuation
80
+ else
81
+ token Name
82
+ end
83
+ end
84
+
85
+ rule %r/"/, Str::Double, :dq
86
+ rule %r/'/, Str::Single, :sq
87
+
88
+ digit = /[0-9]_+[0-9]|[0-9]/
89
+ rule %r/#{digit}+\.#{digit}+([eE]#{digit}+)?[fd]?/, Num::Float
90
+ rule %r/0b(?:[01]_+[01]|[01])+/i, Num::Bin
91
+ rule %r/0x(?:\h_+\h|\h)+/i, Num::Hex
92
+ rule %r/0(?:[0-7]_+[0-7]|[0-7])+/, Num::Oct
93
+ rule %r/#{digit}+L?/, Num::Integer
94
+
95
+ rule %r/[-+\/*~^!%&<>|=.?]/, Operator
96
+ rule %r/[\[\](){},:;]/, Punctuation;
97
+ end
98
+
99
+ state :class do
100
+ rule %r/\s+/m, Text
101
+ rule id, Name::Class, :pop!
102
+ end
103
+
104
+ state :import do
105
+ rule %r/\s+/m, Text
106
+ rule %r/[a-z0-9_.]+\*?/i, Name::Namespace, :pop!
107
+ end
108
+
109
+ state :escape do
110
+ rule %r/\\[btnfr\\"']/, Str::Escape
111
+ end
112
+
113
+ state :dq do
114
+ mixin :escape
115
+ rule %r/[^\\"]+/, Str::Double
116
+ rule %r/"/, Str::Double, :pop!
117
+ end
118
+
119
+ state :sq do
120
+ mixin :escape
121
+ rule %r/[^\\']+/, Str::Double
122
+ rule %r/'/, Str::Double, :pop!
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'markdown.rb'
6
+
7
+ class APIBlueprint < Markdown
8
+ title 'API Blueprint'
9
+ desc 'Markdown based API description language.'
10
+
11
+ tag 'apiblueprint'
12
+ aliases 'apiblueprint', 'apib'
13
+ filenames '*.apib'
14
+ mimetypes 'text/vnd.apiblueprint'
15
+
16
+ prepend :root do
17
+ # Metadata
18
+ rule(/(\S+)(:\s*)(.*)$/) do
19
+ groups Name::Variable, Punctuation, Literal::String
20
+ end
21
+
22
+ # Resource Group
23
+ rule(/^(#+)(\s*Group\s+)(.*)$/) do
24
+ groups Punctuation, Keyword, Generic::Heading
25
+ end
26
+
27
+ # Resource \ Action
28
+ rule(/^(#+)(.*)(\[.*\])$/) do
29
+ groups Punctuation, Generic::Heading, Literal::String
30
+ end
31
+
32
+ # Relation
33
+ rule(/^([\+\-\*])(\s*Relation:)(\s*.*)$/) do
34
+ groups Punctuation, Keyword, Literal::String
35
+ end
36
+
37
+ # MSON
38
+ rule(/^(\s+[\+\-\*]\s*)(Attributes|Parameters)(.*)$/) do
39
+ groups Punctuation, Keyword, Literal::String
40
+ end
41
+
42
+ # Request/Response
43
+ rule(/^([\+\-\*]\s*)(Request|Response)(\s+\d\d\d)?(.*)$/) do
44
+ groups Punctuation, Keyword, Literal::Number, Literal::String
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,370 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class AppleScript < RegexLexer
7
+ title "AppleScript"
8
+ desc "The AppleScript scripting language by Apple Inc. (http://developer.apple.com/applescript/)"
9
+
10
+ tag 'applescript'
11
+ aliases 'applescript'
12
+
13
+ filenames '*.applescript', '*.scpt'
14
+
15
+ mimetypes 'application/x-applescript'
16
+
17
+ def self.literals
18
+ @literals ||= ['AppleScript', 'current application', 'false', 'linefeed',
19
+ 'missing value', 'pi','quote', 'result', 'return', 'space',
20
+ 'tab', 'text item delimiters', 'true', 'version']
21
+ end
22
+
23
+ def self.classes
24
+ @classes ||= ['alias ', 'application ', 'boolean ', 'class ', 'constant ',
25
+ 'date ', 'file ', 'integer ', 'list ', 'number ', 'POSIX file ',
26
+ 'real ', 'record ', 'reference ', 'RGB color ', 'script ',
27
+ 'text ', 'unit types', '(?:Unicode )?text', 'string']
28
+ end
29
+
30
+ def self.builtins
31
+ @builtins ||= ['attachment', 'attribute run', 'character', 'day', 'month',
32
+ 'paragraph', 'word', 'year']
33
+ end
34
+
35
+ def self.handler_params
36
+ @handler_params ||= ['about', 'above', 'against', 'apart from', 'around',
37
+ 'aside from', 'at', 'below', 'beneath', 'beside',
38
+ 'between', 'for', 'given', 'instead of', 'on', 'onto',
39
+ 'out of', 'over', 'since']
40
+ end
41
+
42
+ def self.commands
43
+ @commands ||= ['ASCII (character|number)', 'activate', 'beep', 'choose URL',
44
+ 'choose application', 'choose color', 'choose file( name)?',
45
+ 'choose folder', 'choose from list',
46
+ 'choose remote application', 'clipboard info',
47
+ 'close( access)?', 'copy', 'count', 'current date', 'delay',
48
+ 'delete', 'display (alert|dialog)', 'do shell script',
49
+ 'duplicate', 'exists', 'get eof', 'get volume settings',
50
+ 'info for', 'launch', 'list (disks|folder)', 'load script',
51
+ 'log', 'make', 'mount volume', 'new', 'offset',
52
+ 'open( (for access|location))?', 'path to', 'print', 'quit',
53
+ 'random number', 'read', 'round', 'run( script)?',
54
+ 'say', 'scripting components',
55
+ 'set (eof|the clipboard to|volume)', 'store script',
56
+ 'summarize', 'system attribute', 'system info',
57
+ 'the clipboard', 'time to GMT', 'write', 'quoted form']
58
+ end
59
+
60
+ def self.references
61
+ @references ||= ['(in )?back of', '(in )?front of', '[0-9]+(st|nd|rd|th)',
62
+ 'first', 'second', 'third', 'fourth', 'fifth', 'sixth',
63
+ 'seventh', 'eighth', 'ninth', 'tenth', 'after', 'back',
64
+ 'before', 'behind', 'every', 'front', 'index', 'last',
65
+ 'middle', 'some', 'that', 'through', 'thru', 'where', 'whose']
66
+ end
67
+
68
+ def self.operators
69
+ @operators ||= ["and", "or", "is equal", "equals", "(is )?equal to", "is not",
70
+ "isn't", "isn't equal( to)?", "is not equal( to)?",
71
+ "doesn't equal", "does not equal", "(is )?greater than",
72
+ "comes after", "is not less than or equal( to)?",
73
+ "isn't less than or equal( to)?", "(is )?less than",
74
+ "comes before", "is not greater than or equal( to)?",
75
+ "isn't greater than or equal( to)?",
76
+ "(is )?greater than or equal( to)?", "is not less than",
77
+ "isn't less than", "does not come before",
78
+ "doesn't come before", "(is )?less than or equal( to)?",
79
+ "is not greater than", "isn't greater than",
80
+ "does not come after", "doesn't come after", "starts? with",
81
+ "begins? with", "ends? with", "contains?", "does not contain",
82
+ "doesn't contain", "is in", "is contained by", "is not in",
83
+ "is not contained by", "isn't contained by", "div", "mod",
84
+ "not", "(a )?(ref( to)?|reference to)", "is", "does"]
85
+ end
86
+
87
+ def self.controls
88
+ @controls ||= ['considering', 'else', 'error', 'exit', 'from', 'if',
89
+ 'ignoring', 'in', 'repeat', 'tell', 'then', 'times', 'to',
90
+ 'try', 'until', 'using terms from', 'while', 'whith',
91
+ 'with timeout( of)?', 'with transaction', 'by', 'continue',
92
+ 'end', 'its?', 'me', 'my', 'return', 'of' , 'as']
93
+ end
94
+
95
+ def self.declarations
96
+ @declarations ||= ['global', 'local', 'prop(erty)?', 'set', 'get']
97
+ end
98
+
99
+ def self.reserved
100
+ @reserved ||= ['but', 'put', 'returning', 'the']
101
+ end
102
+
103
+ def self.studio_classes
104
+ @studio_classes ||= ['action cell', 'alert reply', 'application', 'box',
105
+ 'browser( cell)?', 'bundle', 'button( cell)?', 'cell',
106
+ 'clip view', 'color well', 'color-panel',
107
+ 'combo box( item)?', 'control',
108
+ 'data( (cell|column|item|row|source))?', 'default entry',
109
+ 'dialog reply', 'document', 'drag info', 'drawer',
110
+ 'event', 'font(-panel)?', 'formatter',
111
+ 'image( (cell|view))?', 'matrix', 'menu( item)?', 'item',
112
+ 'movie( view)?', 'open-panel', 'outline view', 'panel',
113
+ 'pasteboard', 'plugin', 'popup button',
114
+ 'progress indicator', 'responder', 'save-panel',
115
+ 'scroll view', 'secure text field( cell)?', 'slider',
116
+ 'sound', 'split view', 'stepper', 'tab view( item)?',
117
+ 'table( (column|header cell|header view|view))',
118
+ 'text( (field( cell)?|view))?', 'toolbar( item)?',
119
+ 'user-defaults', 'view', 'window']
120
+ end
121
+
122
+ def self.studio_events
123
+ @studio_events ||= ['accept outline drop', 'accept table drop', 'action',
124
+ 'activated', 'alert ended', 'awake from nib', 'became key',
125
+ 'became main', 'begin editing', 'bounds changed',
126
+ 'cell value', 'cell value changed', 'change cell value',
127
+ 'change item value', 'changed', 'child of item',
128
+ 'choose menu item', 'clicked', 'clicked toolbar item',
129
+ 'closed', 'column clicked', 'column moved',
130
+ 'column resized', 'conclude drop', 'data representation',
131
+ 'deminiaturized', 'dialog ended', 'document nib name',
132
+ 'double clicked', 'drag( (entered|exited|updated))?',
133
+ 'drop', 'end editing', 'exposed', 'idle', 'item expandable',
134
+ 'item value', 'item value changed', 'items changed',
135
+ 'keyboard down', 'keyboard up', 'launched',
136
+ 'load data representation', 'miniaturized', 'mouse down',
137
+ 'mouse dragged', 'mouse entered', 'mouse exited',
138
+ 'mouse moved', 'mouse up', 'moved',
139
+ 'number of browser rows', 'number of items',
140
+ 'number of rows', 'open untitled', 'opened', 'panel ended',
141
+ 'parameters updated', 'plugin loaded', 'prepare drop',
142
+ 'prepare outline drag', 'prepare outline drop',
143
+ 'prepare table drag', 'prepare table drop',
144
+ 'read from file', 'resigned active', 'resigned key',
145
+ 'resigned main', 'resized( sub views)?',
146
+ 'right mouse down', 'right mouse dragged',
147
+ 'right mouse up', 'rows changed', 'scroll wheel',
148
+ 'selected tab view item', 'selection changed',
149
+ 'selection changing', 'should begin editing',
150
+ 'should close', 'should collapse item',
151
+ 'should end editing', 'should expand item',
152
+ 'should open( untitled)?',
153
+ 'should quit( after last window closed)?',
154
+ 'should select column', 'should select item',
155
+ 'should select row', 'should select tab view item',
156
+ 'should selection change', 'should zoom', 'shown',
157
+ 'update menu item', 'update parameters',
158
+ 'update toolbar item', 'was hidden', 'was miniaturized',
159
+ 'will become active', 'will close', 'will dismiss',
160
+ 'will display browser cell', 'will display cell',
161
+ 'will display item cell', 'will display outline cell',
162
+ 'will finish launching', 'will hide', 'will miniaturize',
163
+ 'will move', 'will open', 'will pop up', 'will quit',
164
+ 'will resign active', 'will resize( sub views)?',
165
+ 'will select tab view item', 'will show', 'will zoom',
166
+ 'write to file', 'zoomed']
167
+ end
168
+
169
+ def self.studio_commands
170
+ @studio_commands ||= ['animate', 'append', 'call method', 'center',
171
+ 'close drawer', 'close panel', 'display',
172
+ 'display alert', 'display dialog', 'display panel', 'go',
173
+ 'hide', 'highlight', 'increment', 'item for',
174
+ 'load image', 'load movie', 'load nib', 'load panel',
175
+ 'load sound', 'localized string', 'lock focus', 'log',
176
+ 'open drawer', 'path for', 'pause', 'perform action',
177
+ 'play', 'register', 'resume', 'scroll', 'select( all)?',
178
+ 'show', 'size to fit', 'start', 'step back',
179
+ 'step forward', 'stop', 'synchronize', 'unlock focus',
180
+ 'update']
181
+ end
182
+
183
+ def self.studio_properties
184
+ @studio_properties ||= ['accepts arrow key', 'action method', 'active',
185
+ 'alignment', 'allowed identifiers',
186
+ 'allows branch selection', 'allows column reordering',
187
+ 'allows column resizing', 'allows column selection',
188
+ 'allows customization', 'allows editing text attributes',
189
+ 'allows empty selection', 'allows mixed state',
190
+ 'allows multiple selection', 'allows reordering',
191
+ 'allows undo', 'alpha( value)?', 'alternate image',
192
+ 'alternate increment value', 'alternate title',
193
+ 'animation delay', 'associated file name',
194
+ 'associated object', 'auto completes', 'auto display',
195
+ 'auto enables items', 'auto repeat', 'auto resizes( outline column)?',
196
+ 'auto save expanded items', 'auto save name',
197
+ 'auto save table columns', 'auto saves configuration',
198
+ 'auto scroll', 'auto sizes all columns to fit',
199
+ 'auto sizes cells', 'background color', 'bezel state',
200
+ 'bezel style', 'bezeled', 'border rect', 'border type',
201
+ 'bordered', 'bounds( rotation)?', 'box type',
202
+ 'button returned', 'button type',
203
+ 'can choose directories', 'can choose files', 'can draw', 'can hide',
204
+ 'cell( (background color|size|type))?', 'characters',
205
+ 'class', 'click count', 'clicked( data)? column',
206
+ 'clicked data item', 'clicked( data)? row',
207
+ 'closeable', 'collating', 'color( (mode|panel))',
208
+ 'command key down', 'configuration',
209
+ 'content(s| (size|view( margins)?))?', 'context',
210
+ 'continuous', 'control key down', 'control size',
211
+ 'control tint', 'control view',
212
+ 'controller visible', 'coordinate system',
213
+ 'copies( on scroll)?', 'corner view', 'current cell',
214
+ 'current column', 'current( field)? editor',
215
+ 'current( menu)? item', 'current row',
216
+ 'current tab view item', 'data source',
217
+ 'default identifiers', 'delta (x|y|z)',
218
+ 'destination window', 'directory', 'display mode',
219
+ 'displayed cell', 'document( (edited|rect|view))?',
220
+ 'double value', 'dragged column', 'dragged distance',
221
+ 'dragged items', 'draws( cell)? background',
222
+ 'draws grid', 'dynamically scrolls', 'echos bullets',
223
+ 'edge', 'editable', 'edited( data)? column',
224
+ 'edited data item', 'edited( data)? row', 'enabled',
225
+ 'enclosing scroll view', 'ending page',
226
+ 'error handling', 'event number', 'event type',
227
+ 'excluded from windows menu', 'executable path',
228
+ 'expanded', 'fax number', 'field editor', 'file kind',
229
+ 'file name', 'file type', 'first responder',
230
+ 'first visible column', 'flipped', 'floating',
231
+ 'font( panel)?', 'formatter', 'frameworks path',
232
+ 'frontmost', 'gave up', 'grid color', 'has data items',
233
+ 'has horizontal ruler', 'has horizontal scroller',
234
+ 'has parent data item', 'has resize indicator',
235
+ 'has shadow', 'has sub menu', 'has vertical ruler',
236
+ 'has vertical scroller', 'header cell', 'header view',
237
+ 'hidden', 'hides when deactivated', 'highlights by',
238
+ 'horizontal line scroll', 'horizontal page scroll',
239
+ 'horizontal ruler view', 'horizontally resizable',
240
+ 'icon image', 'id', 'identifier',
241
+ 'ignores multiple clicks',
242
+ 'image( (alignment|dims when disabled|frame style|scaling))?',
243
+ 'imports graphics', 'increment value',
244
+ 'indentation per level', 'indeterminate', 'index',
245
+ 'integer value', 'intercell spacing', 'item height',
246
+ 'key( (code|equivalent( modifier)?|window))?',
247
+ 'knob thickness', 'label', 'last( visible)? column',
248
+ 'leading offset', 'leaf', 'level', 'line scroll',
249
+ 'loaded', 'localized sort', 'location', 'loop mode',
250
+ 'main( (bunde|menu|window))?', 'marker follows cell',
251
+ 'matrix mode', 'maximum( content)? size',
252
+ 'maximum visible columns',
253
+ 'menu( form representation)?', 'miniaturizable',
254
+ 'miniaturized', 'minimized image', 'minimized title',
255
+ 'minimum column width', 'minimum( content)? size',
256
+ 'modal', 'modified', 'mouse down state',
257
+ 'movie( (controller|file|rect))?', 'muted', 'name',
258
+ 'needs display', 'next state', 'next text',
259
+ 'number of tick marks', 'only tick mark values',
260
+ 'opaque', 'open panel', 'option key down',
261
+ 'outline table column', 'page scroll', 'pages across',
262
+ 'pages down', 'palette label', 'pane splitter',
263
+ 'parent data item', 'parent window', 'pasteboard',
264
+ 'path( (names|separator))?', 'playing',
265
+ 'plays every frame', 'plays selection only', 'position',
266
+ 'preferred edge', 'preferred type', 'pressure',
267
+ 'previous text', 'prompt', 'properties',
268
+ 'prototype cell', 'pulls down', 'rate',
269
+ 'released when closed', 'repeated',
270
+ 'requested print time', 'required file type',
271
+ 'resizable', 'resized column', 'resource path',
272
+ 'returns records', 'reuses columns', 'rich text',
273
+ 'roll over', 'row height', 'rulers visible',
274
+ 'save panel', 'scripts path', 'scrollable',
275
+ 'selectable( identifiers)?', 'selected cell',
276
+ 'selected( data)? columns?', 'selected data items?',
277
+ 'selected( data)? rows?', 'selected item identifier',
278
+ 'selection by rect', 'send action on arrow key',
279
+ 'sends action when done editing', 'separates columns',
280
+ 'separator item', 'sequence number', 'services menu',
281
+ 'shared frameworks path', 'shared support path',
282
+ 'sheet', 'shift key down', 'shows alpha',
283
+ 'shows state by', 'size( mode)?',
284
+ 'smart insert delete enabled', 'sort case sensitivity',
285
+ 'sort column', 'sort order', 'sort type',
286
+ 'sorted( data rows)?', 'sound', 'source( mask)?',
287
+ 'spell checking enabled', 'starting page', 'state',
288
+ 'string value', 'sub menu', 'super menu', 'super view',
289
+ 'tab key traverses cells', 'tab state', 'tab type',
290
+ 'tab view', 'table view', 'tag', 'target( printer)?',
291
+ 'text color', 'text container insert',
292
+ 'text container origin', 'text returned',
293
+ 'tick mark position', 'time stamp',
294
+ 'title(d| (cell|font|height|position|rect))?',
295
+ 'tool tip', 'toolbar', 'trailing offset', 'transparent',
296
+ 'treat packages as directories', 'truncated labels',
297
+ 'types', 'unmodified characters', 'update views',
298
+ 'use sort indicator', 'user defaults',
299
+ 'uses data source', 'uses ruler', 'uses threaded animation',
300
+ 'uses title from previous column', 'value wraps', 'version',
301
+ 'vertical( (line scroll|page scroll|ruler view))?', 'vertically resizable', 'view',
302
+ 'visible( document rect)?', 'volume', 'width', 'window',
303
+ 'windows menu', 'wraps', 'zoomable', 'zoomed']
304
+ end
305
+
306
+ operators = %r(\b(#{self.operators.to_a.join('|')})\b)
307
+ classes = %r(\b(as )(#{self.classes.to_a.join('|')})\b)
308
+ literals = %r(\b(#{self.literals.to_a.join('|')})\b)
309
+ commands = %r(\b(#{self.commands.to_a.join('|')})\b)
310
+ controls = %r(\b(#{self.controls.to_a.join('|')})\b)
311
+ declarations = %r(\b(#{self.declarations.to_a.join('|')})\b)
312
+ reserved = %r(\b(#{self.reserved.to_a.join('|')})\b)
313
+ builtins = %r(\b(#{self.builtins.to_a.join('|')})s?\b)
314
+ handler_params = %r(\b(#{self.handler_params.to_a.join('|')})\b)
315
+ references = %r(\b(#{self.references.to_a.join('|')})\b)
316
+ studio_properties = %r(\b(#{self.studio_properties.to_a.join('|')})\b)
317
+ studio_classes = %r(\b(#{self.studio_classes.to_a.join('|')})s?\b)
318
+ studio_commands = %r(\b(#{self.studio_commands.to_a.join('|')})\b)
319
+ identifiers = %r(\b([a-zA-Z]\w*)\b)
320
+
321
+ state :root do
322
+ rule %r/\s+/, Text::Whitespace
323
+ rule %r/¬\n/, Literal::String::Escape
324
+ rule %r/'s\s+/, Text
325
+ rule %r/(--|#).*?$/, Comment::Single
326
+ rule %r/\(\*/, Comment::Multiline
327
+ rule %r/[\(\){}!,.:]/, Punctuation
328
+ rule %r/(«)([^»]+)(»)/ do |match|
329
+ token Text, match[1]
330
+ token Name::Builtin, match[2]
331
+ token Text, match[3]
332
+ end
333
+ rule %r/\b((?:considering|ignoring)\s*)(application responses|case|diacriticals|hyphens|numeric strings|punctuation|white space)/ do |match|
334
+ token Keyword, match[1]
335
+ token Name::Builtin, match[2]
336
+ end
337
+ rule %r/(-|\*|\+|&|≠|>=?|<=?|=|≥|≤|\/|÷|\^)/, Operator
338
+ rule operators, Operator::Word
339
+ rule %r/^(\s*(?:on|end)\s+)'r'(%s)/ do |match|
340
+ token Keyword, match[1]
341
+ token Name::Function, match[2]
342
+ end
343
+ rule %r/^(\s*)(in|on|script|to)(\s+)/ do |match|
344
+ token Text, match[1]
345
+ token Keyword, match[2]
346
+ token Text, match[3]
347
+ end
348
+ rule classes do |match|
349
+ token Keyword, match[1]
350
+ token Name::Class, match[2]
351
+ end
352
+ rule literals, Name::Builtin
353
+ rule commands, Name::Builtin
354
+ rule controls, Keyword
355
+ rule declarations, Keyword
356
+ rule reserved, Name::Builtin
357
+ rule builtins, Name::Builtin
358
+ rule handler_params, Name::Builtin
359
+ rule studio_properties, Name::Attribute
360
+ rule studio_classes, Name::Builtin
361
+ rule studio_commands, Name::Builtin
362
+ rule references, Name::Builtin
363
+ rule %r/"(\\\\|\\"|[^"])*"/, Literal::String::Double
364
+ rule identifiers, Name::Variable
365
+ rule %r/[-+]?(\d+\.\d*|\d*\.\d+)(E[-+][0-9]+)?/, Literal::Number::Float
366
+ rule %r/[-+]?\d+/, Literal::Number::Integer
367
+ end
368
+ end
369
+ end
370
+ end