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,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Tap < RegexLexer
6
+ title 'TAP'
7
+ desc 'Test Anything Protocol'
8
+ tag 'tap'
9
+ aliases 'tap'
10
+ filenames '*.tap'
11
+
12
+ mimetypes 'text/x-tap', 'application/x-tap'
13
+
14
+ state :root do
15
+ # A TAP version may be specified.
16
+ rule %r/^TAP version \d+\n/, Name::Namespace
17
+
18
+ # Specify a plan with a plan line.
19
+ rule %r/^1\.\.\d+/, Keyword::Declaration, :plan
20
+
21
+ # A test failure
22
+ rule %r/^(not ok)([^\S\n]*)(\d*)/ do
23
+ groups Generic::Error, Text, Literal::Number::Integer
24
+ push :test
25
+ end
26
+
27
+ # A test success
28
+ rule %r/^(ok)([^\S\n]*)(\d*)/ do
29
+ groups Keyword::Reserved, Text, Literal::Number::Integer
30
+ push :test
31
+ end
32
+
33
+ # Diagnostics start with a hash.
34
+ rule %r/^#.*\n/, Comment
35
+
36
+ # TAP's version of an abort statement.
37
+ rule %r/^Bail out!.*\n/, Generic::Error
38
+
39
+ # # TAP ignores any unrecognized lines.
40
+ rule %r/^.*\n/, Text
41
+ end
42
+
43
+ state :plan do
44
+ # Consume whitespace (but not newline).
45
+ rule %r/[^\S\n]+/, Text
46
+
47
+ # A plan may have a directive with it.
48
+ rule %r/#/, Comment, :directive
49
+
50
+ # Or it could just end.
51
+ rule %r/\n/, Comment, :pop!
52
+
53
+ # Anything else is wrong.
54
+ rule %r/.*\n/, Generic::Error, :pop!
55
+ end
56
+
57
+ state :test do
58
+ # Consume whitespace (but not newline).
59
+ rule %r/[^\S\n]+/, Text
60
+
61
+ # A test may have a directive with it.
62
+ rule %r/#/, Comment, :directive
63
+
64
+ rule %r/\S+/, Text
65
+
66
+ rule %r/\n/, Text, :pop!
67
+ end
68
+
69
+ state :directive do
70
+ # Consume whitespace (but not newline).
71
+ rule %r/[^\S\n]+/, Comment
72
+
73
+ # Extract todo items.
74
+ rule %r/(?i)\bTODO\b/, Comment::Preproc
75
+
76
+ # Extract skip items.
77
+ rule %r/(?i)\bSKIP\S*/, Comment::Preproc
78
+
79
+ rule %r/\S+/, Comment
80
+
81
+ rule %r/\n/ do
82
+ token Comment
83
+ pop! 2
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+
@@ -0,0 +1,193 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class TCL < RegexLexer
7
+ title "Tcl"
8
+ desc "The Tool Command Language (tcl.tk)"
9
+ tag 'tcl'
10
+ filenames '*.tcl'
11
+ mimetypes 'text/x-tcl', 'text/x-script.tcl', 'application/x-tcl'
12
+
13
+ def self.detect?(text)
14
+ return true if text.shebang? 'tclsh'
15
+ return true if text.shebang? 'wish'
16
+ return true if text.shebang? 'jimsh'
17
+ end
18
+
19
+ KEYWORDS = %w(
20
+ after apply array break catch continue elseif else error
21
+ eval expr for foreach global if namespace proc rename return
22
+ set switch then trace unset update uplevel upvar variable
23
+ vwait while
24
+ )
25
+
26
+ BUILTINS = %w(
27
+ append bgerror binary cd chan clock close concat dde dict
28
+ encoding eof exec exit fblocked fconfigure fcopy file
29
+ fileevent flush format gets glob history http incr info interp
30
+ join lappend lassign lindex linsert list llength load loadTk
31
+ lrange lrepeat lreplace lreverse lsearch lset lsort mathfunc
32
+ mathop memory msgcat open package pid pkg::create pkg_mkIndex
33
+ platform platform::shell puts pwd re_syntax read refchan
34
+ regexp registry regsub scan seek socket source split string
35
+ subst tell time tm unknown unload
36
+ )
37
+
38
+ OPEN = %w| \( \[ \{ " |
39
+ CLOSE = %w| \) \] \} |
40
+ ALL = OPEN + CLOSE
41
+ END_LINE = CLOSE + %w(; \n)
42
+ END_WORD = END_LINE + %w(\r \t \v)
43
+
44
+ CHARS = lambda { |list| Regexp.new %/[#{list.join}]/ }
45
+ NOT_CHARS = lambda { |list| Regexp.new %/[^#{list.join}]/ }
46
+
47
+ state :word do
48
+ rule %r/\{\*\}/, Keyword
49
+
50
+ mixin :brace_abort
51
+ mixin :interp
52
+ rule %r/\{/, Punctuation, :brace
53
+ rule %r/\(/, Punctuation, :paren
54
+ rule %r/"/, Str::Double, :string
55
+ rule %r/#{NOT_CHARS[END_WORD]}+?(?=#{CHARS[OPEN+['\\\\']]})/, Text
56
+ end
57
+
58
+ def self.gen_command_state(name='')
59
+ state(:"command#{name}") do
60
+ mixin :word
61
+
62
+ rule %r/##{NOT_CHARS[END_LINE]}+/, Comment::Single
63
+
64
+ rule %r/(?=#{CHARS[END_WORD]})/ do
65
+ push :"params#{name}"
66
+ end
67
+
68
+ rule %r/#{NOT_CHARS[END_WORD]}+/ do |m|
69
+ if KEYWORDS.include? m[0]
70
+ token Keyword
71
+ elsif BUILTINS.include? m[0]
72
+ token Name::Builtin
73
+ else
74
+ token Text
75
+ end
76
+ end
77
+
78
+ mixin :whitespace
79
+ end
80
+ end
81
+
82
+ def self.gen_delimiter_states(name, close, opts={})
83
+ gen_command_state("_in_#{name}")
84
+
85
+ state :"params_in_#{name}" do
86
+ rule close do
87
+ token Punctuation
88
+ pop! 2
89
+ end
90
+
91
+ # mismatched delimiters. Braced strings with mismatched
92
+ # closing delimiters should be okay, since this is standard
93
+ # practice, like {]]]]}
94
+ if opts[:strict]
95
+ rule CHARS[CLOSE - [close]], Error
96
+ else
97
+ rule CHARS[CLOSE - [close]], Text
98
+ end
99
+
100
+ mixin :params
101
+ end
102
+
103
+ state name do
104
+ rule close, Punctuation, :pop!
105
+ mixin :"command_in_#{name}"
106
+ end
107
+ end
108
+
109
+
110
+ # tcl is freaking impossible. If we're in braces and we encounter
111
+ # a close brace, we have to drop everything and close the brace.
112
+ # This is so silly things like {abc"def} and {abc]def} don't b0rk
113
+ # everything after them.
114
+
115
+ # TODO: TCL seems to have this aborting behavior quite a lot.
116
+ # such things as [ abc" ] are a runtime error, but will still
117
+ # parse. Currently something like this will muck up the lex.
118
+ state :brace_abort do
119
+ rule %r/}/ do
120
+ if in_state? :brace
121
+ pop! until state? :brace
122
+ pop!
123
+ token Punctuation
124
+ else
125
+ token Error
126
+ end
127
+ end
128
+ end
129
+
130
+ state :params do
131
+ rule %r/;/, Punctuation, :pop!
132
+ rule %r/\n/, Text, :pop!
133
+ rule %r/else|elseif|then/, Keyword
134
+ mixin :word
135
+ mixin :whitespace
136
+ rule %r/#{NOT_CHARS[END_WORD]}+/, Text
137
+ end
138
+
139
+ gen_delimiter_states :brace, /\}/, :strict => false
140
+ gen_delimiter_states :paren, /\)/, :strict => true
141
+ gen_delimiter_states :bracket, /\]/, :strict => true
142
+ gen_command_state
143
+
144
+ state :root do
145
+ mixin :command
146
+ end
147
+
148
+ state :whitespace do
149
+ # not a multiline regex because we want to capture \n sometimes
150
+ rule %r/\s+/, Text
151
+ end
152
+
153
+ state :interp do
154
+ rule %r/\[/, Punctuation, :bracket
155
+ rule %r/\$[a-z0-9.:-]+/, Name::Variable
156
+ rule %r/\$\{.*?\}/m, Name::Variable
157
+ rule %r/\$/, Text
158
+
159
+ # escape sequences
160
+ rule %r/\\[0-7]{3}/, Str::Escape
161
+ rule %r/\\x[0-9a-f]{2}/i, Str::Escape
162
+ rule %r/\\u[0-9a-f]{4}/i, Str::Escape
163
+ rule %r/\\./m, Str::Escape
164
+ end
165
+
166
+ state :string do
167
+ rule %r/"/, Str::Double, :pop!
168
+ mixin :interp
169
+ rule %r/[^\\\[\$"{}]+/m, Str::Double
170
+
171
+ # strings have to keep count of their internal braces, to support
172
+ # for example { "{ }" }.
173
+ rule %r/{/ do
174
+ @brace_count ||= 0
175
+ @brace_count += 1
176
+
177
+ token Str::Double
178
+ end
179
+
180
+ rule %r/}/ do
181
+ if in_state? :brace and @brace_count.to_i == 0
182
+ pop! until state? :brace
183
+ pop!
184
+ token Punctuation
185
+ else
186
+ @brace_count -= 1
187
+ token Str::Double
188
+ end
189
+ end
190
+ end
191
+ end
192
+ end
193
+ end
@@ -0,0 +1,113 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'hcl.rb'
7
+
8
+ class Terraform < Hcl
9
+ title "Terraform"
10
+ desc "Terraform HCL Interpolations"
11
+
12
+ tag 'terraform'
13
+ aliases 'tf'
14
+ filenames '*.tf'
15
+
16
+ def self.keywords
17
+ @keywords ||= Set.new %w(
18
+ terraform module provider variable resource data provisioner output
19
+ )
20
+ end
21
+
22
+ def self.declarations
23
+ @declarations ||= Set.new %w(
24
+ var local
25
+ )
26
+ end
27
+
28
+ def self.reserved
29
+ @reserved ||= Set.new %w()
30
+ end
31
+
32
+ def self.constants
33
+ @constants ||= Set.new %w(true false null)
34
+ end
35
+
36
+ def self.builtins
37
+ @builtins ||= %w()
38
+ end
39
+
40
+ prepend :hash do
41
+ rule %r/[.,()*]/, Punctuation
42
+ end
43
+
44
+ prepend :array do
45
+ rule %r/[.,()*]/, Punctuation
46
+ end
47
+
48
+ state :strings do
49
+ rule %r/\\./, Str::Escape
50
+ rule %r/\$\{/ do
51
+ token Keyword
52
+ push :interpolation
53
+ end
54
+ end
55
+
56
+ state :dq do
57
+ rule %r/[^\\"\$]+/, Str::Double
58
+ mixin :strings
59
+ rule %r/"/, Str::Double, :pop!
60
+ end
61
+
62
+ state :sq do
63
+ rule %r/[^\\'\$]+/, Str::Single
64
+ mixin :strings
65
+ rule %r/'/, Str::Single, :pop!
66
+ end
67
+
68
+ state :heredoc do
69
+ rule %r/\n/, Str::Heredoc, :heredoc_nl
70
+ rule %r/[^$\n]+/, Str::Heredoc
71
+ rule %r/[$]/, Str::Heredoc
72
+ mixin :strings
73
+ end
74
+
75
+ state :interpolation do
76
+ rule %r/\}/ do
77
+ token Keyword
78
+ pop!
79
+ end
80
+
81
+ mixin :expression
82
+ end
83
+
84
+ id = /[$a-z_\-][a-z0-9_\-]*/io
85
+
86
+ state :expression do
87
+ mixin :primitives
88
+ rule %r/\s+/, Text
89
+
90
+ rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | == | != )x, Operator
91
+ rule %r([-<>+*%&|\^/!=?:]=?), Operator
92
+ rule %r/[(\[,]/, Punctuation
93
+ rule %r/[)\].]/, Punctuation
94
+
95
+ rule id do |m|
96
+ if self.class.keywords.include? m[0]
97
+ token Keyword
98
+ elsif self.class.declarations.include? m[0]
99
+ token Keyword::Declaration
100
+ elsif self.class.reserved.include? m[0]
101
+ token Keyword::Reserved
102
+ elsif self.class.constants.include? m[0]
103
+ token Keyword::Constant
104
+ elsif self.class.builtins.include? m[0]
105
+ token Name::Builtin
106
+ else
107
+ token Name::Other
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,70 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class TeX < RegexLexer
7
+ title "TeX"
8
+ desc "The TeX typesetting system"
9
+ tag 'tex'
10
+ aliases 'TeX', 'LaTeX', 'latex'
11
+
12
+ filenames '*.tex', '*.aux', '*.toc', '*.sty', '*.cls'
13
+ mimetypes 'text/x-tex', 'text/x-latex'
14
+
15
+ def self.detect?(text)
16
+ return true if text =~ /\A\s*\\(documentclass|input|documentstyle|relax|ProvidesPackage|ProvidesClass)/
17
+ end
18
+
19
+ command = /\\([a-z]+|\s+|.)/i
20
+
21
+ state :general do
22
+ rule %r/%.*$/, Comment
23
+ rule %r/[{}&_^]/, Punctuation
24
+ end
25
+
26
+ state :root do
27
+ rule %r/\\\[/, Punctuation, :displaymath
28
+ rule %r/\\\(/, Punctuation, :inlinemath
29
+ rule %r/\$\$/, Punctuation, :displaymath
30
+ rule %r/\$/, Punctuation, :inlinemath
31
+ rule %r/\\(begin|end)\{.*?\}/, Name::Tag
32
+
33
+ rule %r/(\\verb)\b(\S)(.*?)(\2)/ do
34
+ groups Name::Builtin, Keyword::Pseudo, Str::Other, Keyword::Pseudo
35
+ end
36
+
37
+ rule command, Keyword, :command
38
+ mixin :general
39
+ rule %r/[^\\$%&_^{}]+/, Text
40
+ end
41
+
42
+ state :math do
43
+ rule command, Name::Variable
44
+ mixin :general
45
+ rule %r/[0-9]+/, Num
46
+ rule %r/[-=!+*\/()\[\]]/, Operator
47
+ rule %r/[^=!+*\/()\[\]\\$%&_^{}0-9-]+/, Name::Builtin
48
+ end
49
+
50
+ state :inlinemath do
51
+ rule %r/\\\)/, Punctuation, :pop!
52
+ rule %r/\$/, Punctuation, :pop!
53
+ mixin :math
54
+ end
55
+
56
+ state :displaymath do
57
+ rule %r/\\\]/, Punctuation, :pop!
58
+ rule %r/\$\$/, Punctuation, :pop!
59
+ rule %r/\$/, Name::Builtin
60
+ mixin :math
61
+ end
62
+
63
+ state :command do
64
+ rule %r/\[.*?\]/, Name::Attribute
65
+ rule %r/\*/, Keyword
66
+ rule(//) { pop! }
67
+ end
68
+ end
69
+ end
70
+ end