rouge 3.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (444) 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 +107 -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/cypher +5 -0
  41. data/lib/rouge/demos/cython +6 -0
  42. data/lib/rouge/demos/d +16 -0
  43. data/lib/rouge/demos/dart +6 -0
  44. data/lib/rouge/demos/datastudio +21 -0
  45. data/lib/rouge/demos/diff +7 -0
  46. data/lib/rouge/demos/digdag +19 -0
  47. data/lib/rouge/demos/docker +9 -0
  48. data/lib/rouge/demos/dot +5 -0
  49. data/lib/rouge/demos/ecl +18 -0
  50. data/lib/rouge/demos/eex +1 -0
  51. data/lib/rouge/demos/eiffel +30 -0
  52. data/lib/rouge/demos/elixir +1 -0
  53. data/lib/rouge/demos/elm +4 -0
  54. data/lib/rouge/demos/epp +4 -0
  55. data/lib/rouge/demos/erb +1 -0
  56. data/lib/rouge/demos/erlang +7 -0
  57. data/lib/rouge/demos/escape +3 -0
  58. data/lib/rouge/demos/factor +5 -0
  59. data/lib/rouge/demos/fortran +22 -0
  60. data/lib/rouge/demos/freefem +16 -0
  61. data/lib/rouge/demos/fsharp +12 -0
  62. data/lib/rouge/demos/gdscript +18 -0
  63. data/lib/rouge/demos/ghc-cmm +23 -0
  64. data/lib/rouge/demos/ghc-core +26 -0
  65. data/lib/rouge/demos/gherkin +17 -0
  66. data/lib/rouge/demos/glsl +14 -0
  67. data/lib/rouge/demos/go +7 -0
  68. data/lib/rouge/demos/gradle +10 -0
  69. data/lib/rouge/demos/graphql +17 -0
  70. data/lib/rouge/demos/groovy +9 -0
  71. data/lib/rouge/demos/hack +5 -0
  72. data/lib/rouge/demos/haml +5 -0
  73. data/lib/rouge/demos/handlebars +7 -0
  74. data/lib/rouge/demos/haskell +6 -0
  75. data/lib/rouge/demos/haxe +5 -0
  76. data/lib/rouge/demos/hcl +7 -0
  77. data/lib/rouge/demos/hocon +8 -0
  78. data/lib/rouge/demos/hql +5 -0
  79. data/lib/rouge/demos/html +8 -0
  80. data/lib/rouge/demos/http +14 -0
  81. data/lib/rouge/demos/hylang +10 -0
  82. data/lib/rouge/demos/idlang +8 -0
  83. data/lib/rouge/demos/igorpro +9 -0
  84. data/lib/rouge/demos/ini +4 -0
  85. data/lib/rouge/demos/io +11 -0
  86. data/lib/rouge/demos/irb +4 -0
  87. data/lib/rouge/demos/irb_output +2 -0
  88. data/lib/rouge/demos/isbl +4 -0
  89. data/lib/rouge/demos/java +5 -0
  90. data/lib/rouge/demos/javascript +1 -0
  91. data/lib/rouge/demos/jinja +9 -0
  92. data/lib/rouge/demos/jsl +3 -0
  93. data/lib/rouge/demos/json +1 -0
  94. data/lib/rouge/demos/json-doc +1 -0
  95. data/lib/rouge/demos/jsonnet +28 -0
  96. data/lib/rouge/demos/jsp +29 -0
  97. data/lib/rouge/demos/jsx +17 -0
  98. data/lib/rouge/demos/julia +11 -0
  99. data/lib/rouge/demos/kotlin +3 -0
  100. data/lib/rouge/demos/lasso +12 -0
  101. data/lib/rouge/demos/liquid +10 -0
  102. data/lib/rouge/demos/literate_coffeescript +3 -0
  103. data/lib/rouge/demos/literate_haskell +7 -0
  104. data/lib/rouge/demos/llvm +20 -0
  105. data/lib/rouge/demos/lua +12 -0
  106. data/lib/rouge/demos/lustre +6 -0
  107. data/lib/rouge/demos/lutin +18 -0
  108. data/lib/rouge/demos/m68k +16 -0
  109. data/lib/rouge/demos/magik +6 -0
  110. data/lib/rouge/demos/make +6 -0
  111. data/lib/rouge/demos/markdown +4 -0
  112. data/lib/rouge/demos/mason +22 -0
  113. data/lib/rouge/demos/mathematica +8 -0
  114. data/lib/rouge/demos/matlab +6 -0
  115. data/lib/rouge/demos/minizinc +23 -0
  116. data/lib/rouge/demos/moonscript +16 -0
  117. data/lib/rouge/demos/mosel +10 -0
  118. data/lib/rouge/demos/msgtrans +4 -0
  119. data/lib/rouge/demos/mxml +22 -0
  120. data/lib/rouge/demos/nasm +26 -0
  121. data/lib/rouge/demos/nesasm +11 -0
  122. data/lib/rouge/demos/nginx +5 -0
  123. data/lib/rouge/demos/nim +27 -0
  124. data/lib/rouge/demos/nix +19 -0
  125. data/lib/rouge/demos/objective_c +18 -0
  126. data/lib/rouge/demos/objective_cpp +17 -0
  127. data/lib/rouge/demos/ocaml +12 -0
  128. data/lib/rouge/demos/openedge +4 -0
  129. data/lib/rouge/demos/opentype_feature_file +6 -0
  130. data/lib/rouge/demos/pascal +14 -0
  131. data/lib/rouge/demos/perl +5 -0
  132. data/lib/rouge/demos/php +3 -0
  133. data/lib/rouge/demos/plaintext +1 -0
  134. data/lib/rouge/demos/plist +11 -0
  135. data/lib/rouge/demos/pony +17 -0
  136. data/lib/rouge/demos/powershell +13 -0
  137. data/lib/rouge/demos/praat +26 -0
  138. data/lib/rouge/demos/prolog +9 -0
  139. data/lib/rouge/demos/prometheus +9 -0
  140. data/lib/rouge/demos/properties +7 -0
  141. data/lib/rouge/demos/protobuf +5 -0
  142. data/lib/rouge/demos/puppet +6 -0
  143. data/lib/rouge/demos/python +6 -0
  144. data/lib/rouge/demos/q +8 -0
  145. data/lib/rouge/demos/qml +9 -0
  146. data/lib/rouge/demos/r +8 -0
  147. data/lib/rouge/demos/racket +24 -0
  148. data/lib/rouge/demos/reasonml +12 -0
  149. data/lib/rouge/demos/rego +8 -0
  150. data/lib/rouge/demos/robot_framework +27 -0
  151. data/lib/rouge/demos/ruby +9 -0
  152. data/lib/rouge/demos/rust +12 -0
  153. data/lib/rouge/demos/sas +13 -0
  154. data/lib/rouge/demos/sass +3 -0
  155. data/lib/rouge/demos/scala +3 -0
  156. data/lib/rouge/demos/scheme +4 -0
  157. data/lib/rouge/demos/scss +5 -0
  158. data/lib/rouge/demos/sed +4 -0
  159. data/lib/rouge/demos/shell +2 -0
  160. data/lib/rouge/demos/sieve +10 -0
  161. data/lib/rouge/demos/slice +10 -0
  162. data/lib/rouge/demos/slim +17 -0
  163. data/lib/rouge/demos/smalltalk +6 -0
  164. data/lib/rouge/demos/smarty +12 -0
  165. data/lib/rouge/demos/sml +4 -0
  166. data/lib/rouge/demos/solidity +13 -0
  167. data/lib/rouge/demos/sparql +6 -0
  168. data/lib/rouge/demos/sqf +14 -0
  169. data/lib/rouge/demos/sql +1 -0
  170. data/lib/rouge/demos/supercollider +11 -0
  171. data/lib/rouge/demos/swift +5 -0
  172. data/lib/rouge/demos/tap +5 -0
  173. data/lib/rouge/demos/tcl +1 -0
  174. data/lib/rouge/demos/terraform +16 -0
  175. data/lib/rouge/demos/tex +1 -0
  176. data/lib/rouge/demos/toml +9 -0
  177. data/lib/rouge/demos/tsx +17 -0
  178. data/lib/rouge/demos/ttcn3 +6 -0
  179. data/lib/rouge/demos/tulip +13 -0
  180. data/lib/rouge/demos/turtle +26 -0
  181. data/lib/rouge/demos/twig +9 -0
  182. data/lib/rouge/demos/typescript +1 -0
  183. data/lib/rouge/demos/vala +8 -0
  184. data/lib/rouge/demos/vb +4 -0
  185. data/lib/rouge/demos/vcl +12 -0
  186. data/lib/rouge/demos/verilog +27 -0
  187. data/lib/rouge/demos/vhdl +23 -0
  188. data/lib/rouge/demos/viml +14 -0
  189. data/lib/rouge/demos/vue +11 -0
  190. data/lib/rouge/demos/wollok +11 -0
  191. data/lib/rouge/demos/xml +2 -0
  192. data/lib/rouge/demos/xojo +14 -0
  193. data/lib/rouge/demos/xpath +2 -0
  194. data/lib/rouge/demos/xquery +22 -0
  195. data/lib/rouge/demos/yaml +4 -0
  196. data/lib/rouge/demos/yang +17 -0
  197. data/lib/rouge/formatter.rb +112 -0
  198. data/lib/rouge/formatters/html.rb +56 -0
  199. data/lib/rouge/formatters/html_inline.rb +31 -0
  200. data/lib/rouge/formatters/html_legacy.rb +45 -0
  201. data/lib/rouge/formatters/html_line_table.rb +53 -0
  202. data/lib/rouge/formatters/html_linewise.rb +23 -0
  203. data/lib/rouge/formatters/html_pygments.rb +18 -0
  204. data/lib/rouge/formatters/html_table.rb +51 -0
  205. data/lib/rouge/formatters/null.rb +20 -0
  206. data/lib/rouge/formatters/terminal256.rb +198 -0
  207. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  208. data/lib/rouge/formatters/tex.rb +92 -0
  209. data/lib/rouge/guesser.rb +57 -0
  210. data/lib/rouge/guessers/disambiguation.rb +136 -0
  211. data/lib/rouge/guessers/filename.rb +27 -0
  212. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  213. data/lib/rouge/guessers/mimetype.rb +16 -0
  214. data/lib/rouge/guessers/modeline.rb +46 -0
  215. data/lib/rouge/guessers/source.rb +31 -0
  216. data/lib/rouge/guessers/util.rb +34 -0
  217. data/lib/rouge/lexer.rb +517 -0
  218. data/lib/rouge/lexers/abap.rb +240 -0
  219. data/lib/rouge/lexers/actionscript.rb +196 -0
  220. data/lib/rouge/lexers/ada.rb +162 -0
  221. data/lib/rouge/lexers/apache.rb +69 -0
  222. data/lib/rouge/lexers/apache/keywords.rb +15 -0
  223. data/lib/rouge/lexers/apex.rb +126 -0
  224. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  225. data/lib/rouge/lexers/apple_script.rb +370 -0
  226. data/lib/rouge/lexers/armasm.rb +145 -0
  227. data/lib/rouge/lexers/awk.rb +162 -0
  228. data/lib/rouge/lexers/batchfile.rb +164 -0
  229. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  230. data/lib/rouge/lexers/biml.rb +43 -0
  231. data/lib/rouge/lexers/bpf.rb +118 -0
  232. data/lib/rouge/lexers/brainfuck.rb +53 -0
  233. data/lib/rouge/lexers/bsl.rb +82 -0
  234. data/lib/rouge/lexers/c.rb +190 -0
  235. data/lib/rouge/lexers/ceylon.rb +96 -0
  236. data/lib/rouge/lexers/cfscript.rb +154 -0
  237. data/lib/rouge/lexers/clean.rb +156 -0
  238. data/lib/rouge/lexers/clojure.rb +113 -0
  239. data/lib/rouge/lexers/cmake.rb +208 -0
  240. data/lib/rouge/lexers/cmhg.rb +34 -0
  241. data/lib/rouge/lexers/coffeescript.rb +215 -0
  242. data/lib/rouge/lexers/common_lisp.rb +346 -0
  243. data/lib/rouge/lexers/conf.rb +25 -0
  244. data/lib/rouge/lexers/console.rb +190 -0
  245. data/lib/rouge/lexers/coq.rb +191 -0
  246. data/lib/rouge/lexers/cpp.rb +89 -0
  247. data/lib/rouge/lexers/crystal.rb +430 -0
  248. data/lib/rouge/lexers/csharp.rb +114 -0
  249. data/lib/rouge/lexers/css.rb +274 -0
  250. data/lib/rouge/lexers/csvs.rb +44 -0
  251. data/lib/rouge/lexers/cuda.rb +35 -0
  252. data/lib/rouge/lexers/cypher.rb +108 -0
  253. data/lib/rouge/lexers/cython.rb +151 -0
  254. data/lib/rouge/lexers/d.rb +177 -0
  255. data/lib/rouge/lexers/dart.rb +105 -0
  256. data/lib/rouge/lexers/datastudio.rb +138 -0
  257. data/lib/rouge/lexers/diff.rb +37 -0
  258. data/lib/rouge/lexers/digdag.rb +70 -0
  259. data/lib/rouge/lexers/docker.rb +51 -0
  260. data/lib/rouge/lexers/dot.rb +69 -0
  261. data/lib/rouge/lexers/ecl.rb +175 -0
  262. data/lib/rouge/lexers/eex.rb +52 -0
  263. data/lib/rouge/lexers/eiffel.rb +66 -0
  264. data/lib/rouge/lexers/elixir.rb +149 -0
  265. data/lib/rouge/lexers/elm.rb +90 -0
  266. data/lib/rouge/lexers/epp.rb +51 -0
  267. data/lib/rouge/lexers/erb.rb +53 -0
  268. data/lib/rouge/lexers/erlang.rb +115 -0
  269. data/lib/rouge/lexers/escape.rb +58 -0
  270. data/lib/rouge/lexers/factor.rb +303 -0
  271. data/lib/rouge/lexers/fortran.rb +178 -0
  272. data/lib/rouge/lexers/freefem.rb +240 -0
  273. data/lib/rouge/lexers/fsharp.rb +120 -0
  274. data/lib/rouge/lexers/gdscript.rb +171 -0
  275. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  276. data/lib/rouge/lexers/ghc_core.rb +151 -0
  277. data/lib/rouge/lexers/gherkin.rb +140 -0
  278. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  279. data/lib/rouge/lexers/glsl.rb +132 -0
  280. data/lib/rouge/lexers/go.rb +175 -0
  281. data/lib/rouge/lexers/gradle.rb +38 -0
  282. data/lib/rouge/lexers/graphql.rb +261 -0
  283. data/lib/rouge/lexers/groovy.rb +111 -0
  284. data/lib/rouge/lexers/hack.rb +49 -0
  285. data/lib/rouge/lexers/haml.rb +226 -0
  286. data/lib/rouge/lexers/handlebars.rb +91 -0
  287. data/lib/rouge/lexers/haskell.rb +199 -0
  288. data/lib/rouge/lexers/haxe.rb +246 -0
  289. data/lib/rouge/lexers/hcl.rb +163 -0
  290. data/lib/rouge/lexers/hocon.rb +86 -0
  291. data/lib/rouge/lexers/hql.rb +139 -0
  292. data/lib/rouge/lexers/html.rb +141 -0
  293. data/lib/rouge/lexers/http.rb +81 -0
  294. data/lib/rouge/lexers/hylang.rb +94 -0
  295. data/lib/rouge/lexers/idlang.rb +312 -0
  296. data/lib/rouge/lexers/igorpro.rb +664 -0
  297. data/lib/rouge/lexers/ini.rb +54 -0
  298. data/lib/rouge/lexers/io.rb +69 -0
  299. data/lib/rouge/lexers/irb.rb +67 -0
  300. data/lib/rouge/lexers/isbl.rb +97 -0
  301. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  302. data/lib/rouge/lexers/java.rb +91 -0
  303. data/lib/rouge/lexers/javascript.rb +279 -0
  304. data/lib/rouge/lexers/jinja.rb +154 -0
  305. data/lib/rouge/lexers/jsl.rb +55 -0
  306. data/lib/rouge/lexers/json.rb +72 -0
  307. data/lib/rouge/lexers/json_doc.rb +26 -0
  308. data/lib/rouge/lexers/jsonnet.rb +152 -0
  309. data/lib/rouge/lexers/jsp.rb +120 -0
  310. data/lib/rouge/lexers/jsx.rb +104 -0
  311. data/lib/rouge/lexers/julia.rb +290 -0
  312. data/lib/rouge/lexers/kotlin.rb +131 -0
  313. data/lib/rouge/lexers/lasso.rb +210 -0
  314. data/lib/rouge/lexers/lasso/keywords.rb +14 -0
  315. data/lib/rouge/lexers/liquid.rb +285 -0
  316. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  317. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  318. data/lib/rouge/lexers/llvm.rb +97 -0
  319. data/lib/rouge/lexers/lua.rb +164 -0
  320. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  321. data/lib/rouge/lexers/lustre.rb +79 -0
  322. data/lib/rouge/lexers/lutin.rb +33 -0
  323. data/lib/rouge/lexers/m68k.rb +143 -0
  324. data/lib/rouge/lexers/magik.rb +127 -0
  325. data/lib/rouge/lexers/make.rb +135 -0
  326. data/lib/rouge/lexers/markdown.rb +182 -0
  327. data/lib/rouge/lexers/mason.rb +110 -0
  328. data/lib/rouge/lexers/mathematica.rb +96 -0
  329. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  330. data/lib/rouge/lexers/matlab.rb +80 -0
  331. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  332. data/lib/rouge/lexers/minizinc.rb +87 -0
  333. data/lib/rouge/lexers/moonscript.rb +115 -0
  334. data/lib/rouge/lexers/mosel.rb +232 -0
  335. data/lib/rouge/lexers/msgtrans.rb +26 -0
  336. data/lib/rouge/lexers/mxml.rb +69 -0
  337. data/lib/rouge/lexers/nasm.rb +72 -0
  338. data/lib/rouge/lexers/nesasm.rb +78 -0
  339. data/lib/rouge/lexers/nginx.rb +72 -0
  340. data/lib/rouge/lexers/nim.rb +154 -0
  341. data/lib/rouge/lexers/nix.rb +211 -0
  342. data/lib/rouge/lexers/objective_c.rb +21 -0
  343. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  344. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  345. data/lib/rouge/lexers/ocaml.rb +65 -0
  346. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  347. data/lib/rouge/lexers/openedge.rb +429 -0
  348. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  349. data/lib/rouge/lexers/pascal.rb +67 -0
  350. data/lib/rouge/lexers/perl.rb +231 -0
  351. data/lib/rouge/lexers/php.rb +231 -0
  352. data/lib/rouge/lexers/php/builtins.rb +203 -0
  353. data/lib/rouge/lexers/plain_text.rb +27 -0
  354. data/lib/rouge/lexers/plist.rb +47 -0
  355. data/lib/rouge/lexers/pony.rb +94 -0
  356. data/lib/rouge/lexers/powershell.rb +230 -0
  357. data/lib/rouge/lexers/praat.rb +351 -0
  358. data/lib/rouge/lexers/prolog.rb +67 -0
  359. data/lib/rouge/lexers/prometheus.rb +123 -0
  360. data/lib/rouge/lexers/properties.rb +52 -0
  361. data/lib/rouge/lexers/protobuf.rb +71 -0
  362. data/lib/rouge/lexers/puppet.rb +129 -0
  363. data/lib/rouge/lexers/python.rb +257 -0
  364. data/lib/rouge/lexers/q.rb +126 -0
  365. data/lib/rouge/lexers/qml.rb +74 -0
  366. data/lib/rouge/lexers/r.rb +89 -0
  367. data/lib/rouge/lexers/racket.rb +568 -0
  368. data/lib/rouge/lexers/reasonml.rb +65 -0
  369. data/lib/rouge/lexers/rego.rb +45 -0
  370. data/lib/rouge/lexers/robot_framework.rb +249 -0
  371. data/lib/rouge/lexers/ruby.rb +454 -0
  372. data/lib/rouge/lexers/rust.rb +193 -0
  373. data/lib/rouge/lexers/sas.rb +563 -0
  374. data/lib/rouge/lexers/sass.rb +75 -0
  375. data/lib/rouge/lexers/sass/common.rb +181 -0
  376. data/lib/rouge/lexers/scala.rb +169 -0
  377. data/lib/rouge/lexers/scheme.rb +113 -0
  378. data/lib/rouge/lexers/scss.rb +35 -0
  379. data/lib/rouge/lexers/sed.rb +173 -0
  380. data/lib/rouge/lexers/shell.rb +201 -0
  381. data/lib/rouge/lexers/sieve.rb +97 -0
  382. data/lib/rouge/lexers/slice.rb +32 -0
  383. data/lib/rouge/lexers/slim.rb +229 -0
  384. data/lib/rouge/lexers/smalltalk.rb +117 -0
  385. data/lib/rouge/lexers/smarty.rb +81 -0
  386. data/lib/rouge/lexers/sml.rb +345 -0
  387. data/lib/rouge/lexers/solidity.rb +185 -0
  388. data/lib/rouge/lexers/sparql.rb +129 -0
  389. data/lib/rouge/lexers/sqf.rb +109 -0
  390. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  391. data/lib/rouge/lexers/sql.rb +161 -0
  392. data/lib/rouge/lexers/supercollider.rb +116 -0
  393. data/lib/rouge/lexers/swift.rb +186 -0
  394. data/lib/rouge/lexers/tap.rb +89 -0
  395. data/lib/rouge/lexers/tcl.rb +193 -0
  396. data/lib/rouge/lexers/terraform.rb +128 -0
  397. data/lib/rouge/lexers/tex.rb +70 -0
  398. data/lib/rouge/lexers/toml.rb +106 -0
  399. data/lib/rouge/lexers/tsx.rb +20 -0
  400. data/lib/rouge/lexers/ttcn3.rb +119 -0
  401. data/lib/rouge/lexers/tulip.rb +108 -0
  402. data/lib/rouge/lexers/turtle.rb +61 -0
  403. data/lib/rouge/lexers/twig.rb +40 -0
  404. data/lib/rouge/lexers/typescript.rb +34 -0
  405. data/lib/rouge/lexers/typescript/common.rb +34 -0
  406. data/lib/rouge/lexers/vala.rb +78 -0
  407. data/lib/rouge/lexers/varnish.rb +168 -0
  408. data/lib/rouge/lexers/vb.rb +165 -0
  409. data/lib/rouge/lexers/verilog.rb +163 -0
  410. data/lib/rouge/lexers/vhdl.rb +98 -0
  411. data/lib/rouge/lexers/viml.rb +102 -0
  412. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  413. data/lib/rouge/lexers/vue.rb +127 -0
  414. data/lib/rouge/lexers/wollok.rb +104 -0
  415. data/lib/rouge/lexers/xml.rb +54 -0
  416. data/lib/rouge/lexers/xojo.rb +61 -0
  417. data/lib/rouge/lexers/xpath.rb +332 -0
  418. data/lib/rouge/lexers/xquery.rb +145 -0
  419. data/lib/rouge/lexers/yaml.rb +376 -0
  420. data/lib/rouge/lexers/yang.rb +147 -0
  421. data/lib/rouge/plugins/redcarpet.rb +37 -0
  422. data/lib/rouge/regex_lexer.rb +443 -0
  423. data/lib/rouge/template_lexer.rb +21 -0
  424. data/lib/rouge/tex_theme_renderer.rb +132 -0
  425. data/lib/rouge/text_analyzer.rb +50 -0
  426. data/lib/rouge/theme.rb +218 -0
  427. data/lib/rouge/themes/base16.rb +131 -0
  428. data/lib/rouge/themes/bw.rb +41 -0
  429. data/lib/rouge/themes/colorful.rb +68 -0
  430. data/lib/rouge/themes/github.rb +72 -0
  431. data/lib/rouge/themes/gruvbox.rb +168 -0
  432. data/lib/rouge/themes/igor_pro.rb +21 -0
  433. data/lib/rouge/themes/magritte.rb +78 -0
  434. data/lib/rouge/themes/molokai.rb +83 -0
  435. data/lib/rouge/themes/monokai.rb +93 -0
  436. data/lib/rouge/themes/monokai_sublime.rb +93 -0
  437. data/lib/rouge/themes/pastie.rb +70 -0
  438. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  439. data/lib/rouge/themes/tulip.rb +70 -0
  440. data/lib/rouge/token.rb +191 -0
  441. data/lib/rouge/util.rb +102 -0
  442. data/lib/rouge/version.rb +8 -0
  443. data/rouge.gemspec +26 -0
  444. metadata +491 -0
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ module Rouge
6
+ module Lexers
7
+ class Apache < RegexLexer
8
+ title "Apache"
9
+ desc 'configuration files for Apache web server'
10
+ tag 'apache'
11
+ mimetypes 'text/x-httpd-conf', 'text/x-apache-conf'
12
+ filenames '.htaccess', 'httpd.conf'
13
+
14
+ # self-modifying method that loads the keywords file
15
+ def self.keywords
16
+ load File.join(Lexers::BASE_DIR, 'apache/keywords.rb')
17
+ keywords
18
+ end
19
+
20
+ def name_for_token(token, kwtype, tktype)
21
+ if self.class.keywords[kwtype].include? token
22
+ tktype
23
+ else
24
+ Text
25
+ end
26
+ end
27
+
28
+ state :whitespace do
29
+ rule %r/\#.*/, Comment
30
+ rule %r/\s+/m, Text
31
+ end
32
+
33
+ state :root do
34
+ mixin :whitespace
35
+
36
+ rule %r/(<\/?)(\w+)/ do |m|
37
+ groups Punctuation, name_for_token(m[2].downcase, :sections, Name::Label)
38
+ push :section
39
+ end
40
+
41
+ rule %r/\w+/ do |m|
42
+ token name_for_token(m[0].downcase, :directives, Name::Class)
43
+ push :directive
44
+ end
45
+ end
46
+
47
+ state :section do
48
+ # Match section arguments
49
+ rule %r/([^>]+)?(>(?:\r\n?|\n)?)/ do
50
+ groups Literal::String::Regex, Punctuation
51
+ pop!
52
+ end
53
+
54
+ mixin :whitespace
55
+ end
56
+
57
+ state :directive do
58
+ # Match value literals and other directive arguments
59
+ rule %r/\r\n?|\n/, Text, :pop!
60
+
61
+ mixin :whitespace
62
+
63
+ rule %r/\S+/ do |m|
64
+ token name_for_token(m[0], :values, Literal::String::Symbol)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,15 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ # automatically generated by `rake builtins:apache`
5
+ module Rouge
6
+ module Lexers
7
+ def Apache.keywords
8
+ @keywords ||= {}.tap do |h|
9
+ h[:sections] = Set.new ["directory", "directorymatch", "files", "filesmatch", "ifdefine", "ifmodule", "limit", "limitexcept", "location", "locationmatch", "proxy", "proxymatch", "virtualhost"]
10
+ h[:directives] = Set.new ["acceptfilter", "acceptmutex", "acceptpathinfo", "accessconfig", "accessfilename", "action", "addalt", "addaltbyencoding", "addaltbytype", "addcharset", "adddefaultcharset", "adddescription", "addencoding", "addhandler", "addicon", "addiconbyencoding", "addiconbytype", "addinputfilter", "addlanguage", "addmodule", "addmoduleinfo", "addoutputfilter", "addoutputfilterbytype", "addtype", "agentlog", "alias", "aliasmatch", "allow", "allowconnect", "allowencodedslashes", "allowmethods", "allowoverride", "allowoverridelist", "anonymous", "anonymous_authoritative", "anonymous_logemail", "anonymous_mustgiveemail", "anonymous_nouserid", "anonymous_verifyemail", "assignuserid", "authauthoritative", "authdbauthoritative", "authdbgroupfile", "authdbmauthoritative", "asyncrequestworkerfactor", "authbasicauthoritative", "authbasicfake", "authbasicprovider", "authbasicusedigestalgorithm", "authdbduserpwquery", "authdbduserrealmquery", "authdbmgroupfile", "authdbmtype", "authdbmuserfile", "authdbuserfile", "authdigestalgorithm", "authdigestdomain", "authdigestfile", "authdigestgroupfile", "authdigestnccheck", "authdigestnonceformat", "authdigestnoncelifetime", "authdigestprovider", "authdigestqop", "authdigestshmemsize", "authformauthoritative", "authformbody", "authformdisablenostore", "authformfakebasicauth", "authformlocation", "authformloginrequiredlocation", "authformloginsuccesslocation", "authformlogoutlocation", "authformmethod", "authformmimetype", "authformpassword", "authformprovider", "authformsitepassphrase", "authformsize", "authformusername", "authgroupfile", "authldapauthoritative", "authldapauthorizeprefix", "authldapbindauthoritative", "authldapbinddn", "authldapbindpassword", "authldapcharsetconfig", "authldapcompareasuser", "authldapcomparednonserver", "authldapdereferencealiases", "authldapenabled", "authldapfrontpagehack", "authldapgroupattribute", "authldapgroupattributeisdn", "authldapinitialbindasuser", "authldapinitialbindpattern", "authldapmaxsubgroupdepth", "authldapremoteuserattribute", "authldapremoteuserisdn", "authldapsearchasuser", "authldapsubgroupattribute", "authldapsubgroupclass", "authldapurl", "authmerging", "authname", "authncachecontext", "authncacheenable", "authncacheprovidefor", "authncachesocache", "authncachetimeout", "authnzfcgicheckauthnprovider", "authnzfcgidefineprovider", "authtype", "authuserfile", "authzdbdlogintoreferer", "authzdbdquery", "authzdbdredirectquery", "authzdbmtype", "authzsendforbiddenonfailure", "balancergrowth", "balancerinherit", "balancermember", "balancerpersist", "bindaddress", "browsermatch", "browsermatchnocase", "bs2000account", "bufferedlogs", "buffersize", "cachedefaultexpire", "cachedetailheader", "cachedirlength", "cachedirlevels", "cachedisable", "cacheenable", "cacheexpirycheck", "cachefile", "cacheforcecompletion", "cachegcclean", "cachegcdaily", "cachegcinterval", "cachegcmemusage", "cachegcunused", "cacheheader", "cacheignorecachecontrol", "cacheignoreheaders", "cacheignorenolastmod", "cacheignorequerystring", "cacheignoreurlsessionidentifiers", "cachekeybaseurl", "cachelastmodifiedfactor", "cachelock", "cachelockmaxage", "cachelockpath", "cachemaxexpire", "cachemaxfilesize", "cacheminexpire", "cacheminfilesize", "cachenegotiateddocs", "cachequickhandler", "cachereadsize", "cachereadtime", "cacheroot", "cachesize", "cachetimemargin", "cachesocache", "cachesocachemaxsize", "cachesocachemaxtime", "cachesocachemintime", "cachesocachereadsize", "cachesocachereadtime", "cachestaleonerror", "cachestoreexpired", "cachestorenostore", "cachestoreprivate", "cgidscripttimeout", "cgimapextension", "cgipassauth", "charsetdefault", "charsetoptions", "charsetsourceenc", "checkcaseonly", "checkspelling", "childperuserid", "clearmodulelist", "chrootdir", "contentdigest", "cookiedomain", "cookieexpires", "cookielog", "cookiename", "cookiestyle", "cookietracking", "coredumpdirectory", "customlog", "dav", "davdepthinfinity", "davgenericlockdb", "davlockdb", "davmintimeout", "dbdexptime", "dbdinitsql", "dbdkeep", "dbdmax", "dbdmin", "dbdparams", "dbdpersist", "dbdpreparesql", "dbdriver", "defaulticon", "defaultlanguage", "defaultmode", "defaultruntimedir", "defaulttype", "define", "deflatebuffersize", "deflatecompressionlevel", "deflatefilternote", "deflateinflatelimitrequestbody", "deflateinflateratioburst", "deflateinflateratiolimit", "deflatememlevel", "deflatewindowsize", "deny", "directorycheckhandler", "directoryindex", "directoryindexredirect", "directoryslash", "doctitle", "doctrailer", "documentroot", "dtraceprivileges", "dumpioinput", "dumpiooutput", "enableexceptionhook", "enablemmap", "enablesendfile", "error", "errordocument", "errorlog", "errorlogformat", "example", "expiresactive", "expiresbytype", "expiresdefault", "extendedstatus", "extfilterdefine", "extfilteroptions", "fallbackresource", "fancyindexing", "fileetag", "filterchain", "filterdeclare", "filterprotocol", "filterprovider", "filtertrace", "forcelanguagepriority", "forcetype", "forensiclog", "globallog", "gprofdir", "gracefulshutdowntimeout", "group", "h2direct", "h2keepalivetimeout", "h2maxsessionstreams", "h2maxworkeridleseconds", "h2maxworkers", "h2minworkers", "h2moderntlsonly", "h2push", "h2pushdiarysize", "h2pushpriority", "h2serializeheaders", "h2sessionextrafiles", "h2streammaxmemsize", "h2streamtimeout", "h2timeout", "h2tlscooldownsecs", "h2tlswarmupsize", "h2upgrade", "h2windowsize", "header", "headername", "headprefix", "headsuffix", "hidesys", "hideurl", "heartbeataddress", "heartbeatlisten", "heartbeatmaxservers", "heartbeatstorage", "heartbeatstorage", "hostnamelookups", "htmldir", "httplogfile", "identitycheck", "identitychecktimeout", "imapbase", "imapdefault", "imapmenu", "include", "includeoptional", "indexheadinsert", "indexignore", "indexignorereset", "indexoptions", "indexorderdefault", "indexstylesheet", "inputsed", "isapiappendlogtoerrors", "isapiappendlogtoquery", "isapicachefile", "isapifakeasync", "isapilognotsupported", "isapireadaheadbuffer", "keepalive", "keepalivetimeout", "keptbodysize", "languagepriority", "lasturls", "ldapcacheentries", "ldapcachettl", "ldapconnectionpoolttl", "ldapconnectiontimeout", "ldaplibrarydebug", "ldapopcacheentries", "ldapopcachettl", "ldapreferralhoplimit", "ldapreferrals", "ldapretries", "ldapretrydelay", "ldapsharedcachefile", "ldapsharedcachesize", "ldaptimeout", "ldaptrustedca", "ldaptrustedcatype", "ldaptrustedclientcert", "ldaptrustedglobalcert", "ldaptrustedmode", "ldapverifyservercert", "limitinternalrecursion", "limitrequestbody", "limitrequestfields", "limitrequestfieldsize", "limitrequestline", "limitxmlrequestbody", "listen", "listenbacklog", "listencoresbucketsratio", "loadfile", "loadmodule", "lockfile", "logformat", "logiotrackttfb", "loglevel", "logmessage", "luaauthzprovider", "luacodecache", "luahookaccesschecker", "luahookauthchecker", "luahookcheckuserid", "luahookfixups", "luahookinsertfilter", "luahooklog", "luahookmaptostorage", "luahooktranslatename", "luahooktypechecker", "luainherit", "luainputfilter", "luamaphandler", "luaoutputfilter", "luapackagecpath", "luapackagepath", "luaquickhandler", "luaroot", "luascope", "maxclients", "maxconnectionsperchild", "maxkeepaliverequests", "maxmemfree", "maxrequestsperchild", "maxrequestsperthread", "maxrangeoverlaps", "maxrangereversals", "maxranges", "maxrequestworkers", "maxspareservers", "maxsparethreads", "maxthreads", "maxthreadsperchild", "mcachemaxobjectcount", "mcachemaxobjectsize", "mcachemaxstreamingbuffer", "mcacheminobjectsize", "mcacheremovalalgorithm", "mcachesize", "memcacheconnttl", "mergetrailers", "metadir", "metafiles", "metasuffix", "mimemagicfile", "minspareservers", "minsparethreads", "mmapfile", "modemstandard", "modmimeusepathinfo", "multiviewsmatch", "mutex", "namevirtualhost", "nocache", "noproxy", "numservers", "nwssltrustedcerts", "nwsslupgradeable", "options", "order", "outputsed", "passenv", "pidfile", "port", "privatedir", "privilegesmode", "protocol", "protocolecho", "protocols", "protocolshonororder", "proxyaddheaders", "proxybadheader", "proxyblock", "proxydomain", "proxyerroroverride", "proxyexpressdbmfile", "proxyexpressdbmtype", "proxyexpressenable", "proxyftpdircharset", "proxyftpescapewildcards", "proxyftplistonwildcard", "proxyhtmlbufsize", "proxyhtmlcharsetout", "proxyhtmldoctype", "proxyhtmlenable", "proxyhtmlevents", "proxyhtmlextended", "proxyhtmlfixups", "proxyhtmlinterp", "proxyhtmllinks", "proxyhtmlmeta", "proxyhtmlstripcomments", "proxyhtmlurlmap", "proxyiobuffersize", "proxymaxforwards", "proxypass", "proxypassinherit", "proxypassinterpolateenv", "proxypassmatch", "proxypassreverse", "proxypassreversecookiedomain", "proxypassreversecookiepath", "proxypreservehost", "proxyreceivebuffersize", "proxyremote", "proxyremotematch", "proxyrequests", "proxyscgiinternalredirect", "proxyscgisendfile", "proxyset", "proxysourceaddress", "proxystatus", "proxytimeout", "proxyvia", "qualifyredirecturl", "readmename", "receivebuffersize", "redirect", "redirectmatch", "redirectpermanent", "redirecttemp", "refererignore", "refererlog", "reflectorheader", "remoteipheader", "remoteipinternalproxy", "remoteipinternalproxylist", "remoteipproxiesheader", "remoteiptrustedproxy", "remoteiptrustedproxylist", "removecharset", "removeencoding", "removehandler", "removeinputfilter", "removelanguage", "removeoutputfilter", "removetype", "requestheader", "requestreadtimeout", "require", "resourceconfig", "rewritebase", "rewritecond", "rewriteengine", "rewritelock", "rewritelog", "rewriteloglevel", "rewritemap", "rewriteoptions", "rewriterule", "rlimitcpu", "rlimitmem", "rlimitnproc", "satisfy", "scoreboardfile", "script", "scriptalias", "scriptaliasmatch", "scriptinterpretersource", "scriptlog", "scriptlogbuffer", "scriptloglength", "scriptsock", "securelisten", "seerequesttail", "sendbuffersize", "serveradmin", "serveralias", "serverlimit", "servername", "serverpath", "serverroot", "serversignature", "servertokens", "servertype", "session", "sessioncookiename", "sessioncookiename2", "sessioncookieremove", "sessioncryptocipher", "sessioncryptodriver", "sessioncryptopassphrase", "sessioncryptopassphrasefile", "sessiondbdcookiename", "sessiondbdcookiename2", "sessiondbdcookieremove", "sessiondbddeletelabel", "sessiondbdinsertlabel", "sessiondbdperuser", "sessiondbdselectlabel", "sessiondbdupdatelabel", "sessionenv", "sessionexclude", "sessionheader", "sessioninclude", "sessionmaxage", "setenv", "setenvif", "setenvifexpr", "setenvifnocase", "sethandler", "setinputfilter", "setoutputfilter", "ssiendtag", "ssierrormsg", "ssietag", "ssilastmodified", "ssilegacyexprparser", "ssistarttag", "ssitimeformat", "ssiundefinedecho", "sslcacertificatefile", "sslcacertificatepath", "sslcadnrequestfile", "sslcadnrequestpath", "sslcarevocationcheck", "sslcarevocationfile", "sslcarevocationpath", "sslcertificatechainfile", "sslcertificatefile", "sslcertificatekeyfile", "sslciphersuite", "sslcompression", "sslcryptodevice", "sslengine", "sslfips", "sslhonorcipherorder", "sslinsecurerenegotiation", "sslmutex", "sslocspdefaultresponder", "sslocspenable", "sslocspoverrideresponder", "sslocspproxyurl", "sslocsprespondertimeout", "sslocspresponsemaxage", "sslocspresponsetimeskew", "sslocspuserequestnonce", "sslopensslconfcmd", "ssloptions", "sslpassphrasedialog", "sslprotocol", "sslproxycacertificatefile", "sslproxycacertificatepath", "sslproxycarevocationcheck", "sslproxycarevocationfile", "sslproxycarevocationpath", "sslproxycheckpeercn", "sslproxycheckpeerexpire", "sslproxycheckpeername", "sslproxyciphersuite", "sslproxyengine", "sslproxymachinecertificatechainfile", "sslproxymachinecertificatefile", "sslproxymachinecertificatepath", "sslproxyprotocol", "sslproxyverify", "sslproxyverifydepth", "sslrandomseed", "sslrenegbuffersize", "sslrequire", "sslrequiressl", "sslsessioncache", "sslsessioncachetimeout", "sslsessionticketkeyfile", "sslsessiontickets", "sslsrpunknownuserseed", "sslsrpverifierfile", "sslstaplingcache", "sslstaplingerrorcachetimeout", "sslstaplingfaketrylater", "sslstaplingforceurl", "sslstaplingrespondertimeout", "sslstaplingresponsemaxage", "sslstaplingresponsetimeskew", "sslstaplingreturnrespondererrors", "sslstaplingstandardcachetimeout", "sslstrictsnivhostcheck", "sslusername", "sslusestapling", "sslverifyclient", "sslverifydepth", "startservers", "startthreads", "substitute", "substituteinheritbefore", "substitutemaxlinelength", "suexec", "suexecusergroup", "threadlimit", "threadsperchild", "threadstacksize", "timeout", "topsites", "topurls", "traceenable", "transferlog", "typesconfig", "undefine", "undefmacro", "unsetenv", "use", "usecanonicalname", "usecanonicalphysicalport", "user", "userdir", "vhostcgimode", "vhostcgiprivs", "vhostgroup", "vhostprivs", "vhostsecure", "vhostuser", "virtualdocumentroot", "virtualdocumentrootip", "virtualscriptalias", "virtualscriptaliasip", "win32disableacceptex", "watchdoginterval", "xbithack", "xml2encalias", "xml2encdefault", "xml2startparse"]
11
+ h[:values] = Set.new ["add", "All", "allow", "any", "append", "AuthConfig", "Basic", "CONNECT", "DELETE", "deny", "Digest", "double", "downgrade-1.0", "email", "env", "error", "ExecCGI", "FancyIndexing", "FileInfo", "FollowSymLinks", "force-response-1.0", "formatted", "from", "full", "Full", "GET", "gone", "group", "IconsAreLinks", "Includes", "IncludesNOEXEC", "Indexes", "inetd", "inherit", "Limit", "map", "Minimal", "MultiViews", "mutual-failure", "nocontent", "nokeepalive", "none", "None", "off", "on", "Options", "OPTIONS", "OS", "permanent", "POST", "PUT", "referer", "ScanHTMLTitles", "seeother", "semi-formatted", "set", "standalone", "SuppressDescription", "SuppressLastModified", "SuppressSize", "SymLinksIfOwnerMatch", "temporary", "unformatted", "unset", "URL", "user", "valid-user"]
12
+ end
13
+ end
14
+ end
15
+ end
@@ -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