rouge 3.17.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 (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