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,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'set'
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'yaml.rb'
7
+
8
+ class Digdag < YAML
9
+ title 'digdag'
10
+ desc 'A simple, open source, multi-cloud workflow engine (https://www.digdag.io/)'
11
+ tag 'digdag'
12
+ filenames '*.dig'
13
+
14
+ mimetypes 'application/x-digdag'
15
+
16
+ # http://docs.digdag.io/operators.html
17
+ # as of digdag v0.9.10
18
+ KEYWORD_PATTERN = Regexp.union(%w(
19
+ call
20
+ require
21
+ loop
22
+ for_each
23
+ if
24
+ fail
25
+ echo
26
+
27
+ td
28
+ td_run
29
+ td_ddl
30
+ td_load
31
+ td_for_each
32
+ td_wait
33
+ td_wait_table
34
+ td_partial_delete
35
+ td_table_export
36
+
37
+ pg
38
+
39
+ mail
40
+ http
41
+ s3_wait
42
+ redshift
43
+ redshift_load
44
+ redshift_unload
45
+ emr
46
+
47
+ gcs_wait
48
+ bq
49
+ bq_ddl
50
+ bq_extract
51
+ bq_load
52
+
53
+ sh
54
+ py
55
+ rb
56
+ embulk
57
+ ).map { |name| "#{name}>"} + %w(
58
+ _do
59
+ _parallel
60
+ ))
61
+
62
+ prepend :block_nodes do
63
+ rule %r/(#{KEYWORD_PATTERN})(:)(?=\s|$)/ do |m|
64
+ groups Keyword::Reserved, Punctuation::Indicator
65
+ set_indent m[0], :implicit => true
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Docker < RegexLexer
7
+ title "Docker"
8
+ desc "Dockerfile syntax"
9
+ tag 'docker'
10
+ aliases 'dockerfile'
11
+ filenames 'Dockerfile', '*.Dockerfile', '*.docker', 'Dockerfile_*'
12
+ mimetypes 'text/x-dockerfile-config'
13
+
14
+ KEYWORDS = %w(
15
+ FROM MAINTAINER CMD LABEL EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USER WORKDIR ARG STOPSIGNAL HEALTHCHECK SHELL
16
+ ).join('|')
17
+
18
+ start { @shell = Shell.new(@options) }
19
+
20
+ state :root do
21
+ rule %r/\s+/, Text
22
+
23
+ rule %r/^(ONBUILD)(\s+)(#{KEYWORDS})(.*)/io do
24
+ groups Keyword, Text::Whitespace, Keyword, Str
25
+ end
26
+
27
+ rule %r/^(#{KEYWORDS})\b(.*)/io do
28
+ groups Keyword, Str
29
+ end
30
+
31
+ rule %r/#.*?$/, Comment
32
+
33
+ rule %r/^(ONBUILD\s+)?RUN(\s+)/i do
34
+ token Keyword
35
+ push :run
36
+ @shell.reset!
37
+ end
38
+
39
+ rule %r/\w+/, Text
40
+ rule %r/[^\w]+/, Text
41
+ rule %r/./, Text
42
+ end
43
+
44
+ state :run do
45
+ rule %r/\n/, Text, :pop!
46
+ rule %r/\\./m, Str::Escape
47
+ rule(/(\\.|[^\n\\])+/) { delegate @shell }
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Dot < RegexLexer
7
+ title "DOT"
8
+ desc "graph description language"
9
+
10
+ tag 'dot'
11
+ filenames '*.dot'
12
+ mimetypes 'text/vnd.graphviz'
13
+
14
+ start do
15
+ @html = HTML.new(options)
16
+ end
17
+
18
+ state :comments_and_whitespace do
19
+ rule %r/\s+/, Text
20
+ rule %r(#.*), Comment::Single
21
+ rule %r(//.*?$), Comment::Single
22
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
23
+ end
24
+
25
+ state :html do
26
+ rule %r/[^<>]+/ do
27
+ delegate @html
28
+ end
29
+ rule %r/<.+?>/m do
30
+ delegate @html
31
+ end
32
+ rule %r/>/, Punctuation, :pop!
33
+ end
34
+
35
+ state :ID do
36
+ rule %r/([a-zA-Z][a-zA-Z_0-9]*)(\s*)(=)/ do |m|
37
+ token Name, m[1]
38
+ token Text, m[2]
39
+ token Punctuation, m[3]
40
+ end
41
+ rule %r/[a-zA-Z][a-zA-Z_0-9]*/, Name::Variable
42
+ rule %r/([0-9]+)?\.[0-9]+/, Num::Float
43
+ rule %r/[0-9]+/, Num::Integer
44
+ rule %r/"(\\"|[^"])*"/, Str::Double
45
+ rule %r/</ do
46
+ token Punctuation
47
+ @html.reset!
48
+ push :html
49
+ end
50
+ end
51
+
52
+ state :a_list do
53
+ mixin :comments_and_whitespace
54
+ mixin :ID
55
+ rule %r/[=;,]/, Punctuation
56
+ rule %r/\]/, Operator, :pop!
57
+ end
58
+
59
+ state :root do
60
+ mixin :comments_and_whitespace
61
+ rule %r/\b(strict|graph|digraph|subgraph|node|edge)\b/i, Keyword
62
+ rule %r/[{};:=]/, Punctuation
63
+ rule %r/-[->]/, Operator
64
+ rule %r/\[/, Operator, :a_list
65
+ mixin :ID
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,175 @@
1
+ # -*- codding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class ECL < RegexLexer
7
+ tag 'ecl'
8
+ filenames '*.ecl'
9
+ mimetypes 'application/x-ecl'
10
+
11
+ title "ECL"
12
+ desc "Enterprise Control Language (hpccsystems.com)"
13
+
14
+ id = /(#?)\b([a-z_][\w]*?)(\d*)\b/i
15
+
16
+ def self.class_first
17
+ @class_first ||= Set.new %w(
18
+ file date str math metaphone metaphone3 uni audit blas system
19
+ )
20
+ end
21
+
22
+ def self.class_second
23
+ @class_second ||= Set.new %w(
24
+ debug email job log thorlib util workunit
25
+ )
26
+ end
27
+
28
+ def self.functions
29
+ @functions ||= Set.new %w(
30
+ abs acos aggregate allnodes apply ascii asin asstring atan _token ave
31
+ case catch choose choosen choosesets clustersize combine correlation
32
+ cos cosh count covariance cron dataset dedup define denormalize
33
+ dictionary distribute distributed distribution ebcdic enth error
34
+ evaluate event eventextra eventname exists exp failcode failmessage
35
+ fetch fromunicode fromxml getenv getisvalid global graph group hash
36
+ hashcrc having httpcall httpheader if iff index intformat isvalid
37
+ iterate join keyunicode length library limit ln local log loop map
38
+ matched matchlength matchposition matchtext matchunicode max merge
39
+ mergejoin min nofold nolocal nonempty normalize parse pipe power
40
+ preload process project pull random range rank ranked realformat
41
+ recordof regexfind regexreplace regroup rejected rollup round roundup
42
+ row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt
43
+ stepped stored sum table tan tanh thisnode topn tounicode toxml
44
+ transfer transform trim truncate typeof ungroup unicodeorder variance
45
+ which workunit xmldecode xmlencode xmltext xmlunicode apply assert
46
+ build buildindex evaluate fail keydiff keypatch loadxml nothor notify
47
+ output parallel sequential soapcall wait
48
+ )
49
+ end
50
+
51
+ def self.keywords
52
+ @keywords ||= Set.new %w(
53
+ and or in not all any as from atmost before best between case const
54
+ counter csv descend encrypt end endmacro enum except exclusive expire
55
+ export extend fail few first flat full function functionmacro group
56
+ heading hole ifblock import joined keep keyed last left limit load
57
+ local locale lookup many maxcount maxlength _token module interface
58
+ named nocase noroot noscan nosort of only opt outer overwrite packed
59
+ partition penalty physicallength pipe quote record repeat return
60
+ right rows scan self separator service shared skew skip sql store
61
+ terminator thor threshold token transform trim type unicodeorder
62
+ unsorted validate virtual whole wild within xml xpath after cluster
63
+ compressed compression default encoding escape fileposition forward
64
+ grouped inner internal linkcounted literal lzw mofn multiple
65
+ namespace wnotrim noxpath onfail prefetch retry rowset scope smart
66
+ soapaction stable timelimit timeout unordered unstable update use
67
+ width
68
+ )
69
+ end
70
+
71
+ def self.template
72
+ @template ||= Set.new %w(
73
+ append apply break constant debug declare demangle else elseif end
74
+ endregion error expand export exportxml for forall getdatatype if
75
+ ifdefined inmodule isdefined isvalid line link loop mangle onwarning
76
+ option region set stored text trace uniquename warning webservice
77
+ workunit loadxml
78
+ )
79
+ end
80
+
81
+ def self.type
82
+ @type ||= Set.new %w(
83
+ ascii big_endian boolean data decimal ebcdic grouped integer
84
+ linkcounted pattern qstring real record rule set of streamed string
85
+ token udecimal unicode utf8 unsigned varstring varunicode
86
+ )
87
+ end
88
+
89
+ def self.typed
90
+ @typed ||= Set.new %w(
91
+ data string qstring varstring varunicode unicode utf8
92
+ )
93
+ end
94
+
95
+ state :single_quote do
96
+ rule %r([xDQUV]?'([^'\\]*(?:\\.[^'\\]*)*)'), Str::Single
97
+ rule %r/\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)/, Text
98
+ end
99
+
100
+ state :inline_whitespace do
101
+ rule %r/[ \t\r]+/, Text
102
+ rule %r/\\\n/, Text # line continuation
103
+ rule %r(/[*].*?[*]/)m, Comment::Multiline
104
+ end
105
+
106
+ state :whitespace do
107
+ rule %r/\n+/m, Text
108
+ rule %r(//.*), Comment::Single
109
+ mixin :inline_whitespace
110
+ end
111
+
112
+ state :root do
113
+ mixin :whitespace
114
+ mixin :single_quote
115
+
116
+ rule %r(\b(?i:(and|not|or|in))\b), Operator::Word
117
+ rule %r([:=|>|<|<>|/|\\|\+|-|=]), Operator
118
+ rule %r([\[\]{}();,\&,\.,\%]), Punctuation
119
+
120
+ rule %r(\b(?i:(beginc\+\+.*?endc\+\+)))m, Str::Single
121
+ rule %r(\b(?i:(embed.*?endembed)))m, Str::Single
122
+
123
+ rule %r(\b(\w+)\.(\w+)\.(\w+)) do |m|
124
+ if m[1] == "std" &&
125
+ self.class.class_first.include?(m[2]) &&
126
+ self.class.class_second.include?(m[3])
127
+ token Name::Class
128
+ else
129
+ token Name::Variable
130
+ end
131
+ end
132
+
133
+ rule %r(\b(?i:(u)?decimal)(\d+(_\d+)?)\b), Keyword::Type
134
+
135
+ rule %r/\d+\.\d+(e[\+\-]?\d+)?/i, Num::Float
136
+ rule %r/x[0-9a-f]+/i, Num::Hex
137
+
138
+ rule %r/0x[0-9a-f]+/i, Num::Hex
139
+ rule %r/0[0-9a-f]+x/i, Num::Hex
140
+ rule %r(0[bB][01]+), Num::Bin
141
+ rule %r([01]+[bB]), Num::Bin
142
+ rule %r(\d+), Num::Integer
143
+
144
+ rule id do |m|
145
+ name_only = m[2].downcase
146
+ name = name_only + m[3]
147
+ number = (m[3] == "") ? nil : m[3].to_i
148
+ if m[1] == "#"
149
+ if self.class.template.include? name
150
+ token Keyword::Type
151
+ else
152
+ token Error
153
+ end
154
+ elsif self.class.typed.include?(name_only) && number != nil
155
+ token Keyword::Type
156
+ elsif self.class.type.include? name
157
+ token Keyword::Type
158
+ elsif self.class.keywords.include? name
159
+ token Keyword
160
+ elsif self.class.functions.include? name
161
+ token Name::Function
162
+ elsif ["integer", "unsigned"].include?(name_only) && (1..8).cover?(number)
163
+ token Keyword::Type
164
+ elsif name_only == "real" && [4, 8].include?(number)
165
+ token Keyword::Type
166
+ elsif ["true", "false"].include? name
167
+ token Keyword::Constant
168
+ else
169
+ token Name::Other
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,52 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class EEX < TemplateLexer
6
+ title "EEX"
7
+ desc "Embedded Elixir"
8
+
9
+ tag 'eex'
10
+ aliases 'leex'
11
+
12
+ filenames '*.eex', '*.leex'
13
+
14
+ def initialize(opts={})
15
+ @elixir_lexer = Elixir.new(opts)
16
+
17
+ super(opts)
18
+ end
19
+
20
+ start do
21
+ parent.reset!
22
+ @elixir_lexer.reset!
23
+ end
24
+
25
+ open = /<%%|<%=|<%#|<%/
26
+ close = /%%>|%>/
27
+
28
+ state :root do
29
+ rule %r/<%#/, Comment, :comment
30
+
31
+ rule open, Comment::Preproc, :elixir
32
+
33
+ rule %r/.+?(?=#{open})|.+/mo do
34
+ delegate parent
35
+ end
36
+ end
37
+
38
+ state :comment do
39
+ rule close, Comment, :pop!
40
+ rule %r/.+?(?=#{close})|.+/mo, Comment
41
+ end
42
+
43
+ state :elixir do
44
+ rule close, Comment::Preproc, :pop!
45
+
46
+ rule %r/.+?(?=#{close})|.+/mo do
47
+ delegate @elixir_lexer
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,66 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Eiffel < RegexLexer
7
+ title "Eiffel"
8
+ desc "Eiffel programming language"
9
+
10
+ tag 'eiffel'
11
+ filenames '*.e'
12
+ mimetypes 'text/x-eiffel'
13
+
14
+ LanguageKeywords = %w(
15
+ across agent alias all and attached as assign attribute check
16
+ class convert create debug deferred detachable do else elseif end
17
+ ensure expanded export external feature from frozen if implies inherit
18
+ inspect invariant like local loop not note obsolete old once or
19
+ Precursor redefine rename require rescue retry select separate
20
+ some then undefine until variant Void when xor
21
+ )
22
+
23
+ BooleanConstants = %w(True False)
24
+
25
+ LanguageVariables = %w(Current Result)
26
+
27
+ SimpleString = /(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/
28
+
29
+ state :root do
30
+ rule %r/"\[/, Str::Other, :aligned_verbatim_string
31
+ rule %r/"\{/, Str::Other, :non_aligned_verbatim_string
32
+ rule %r/"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/, Str::Double
33
+ rule %r/--.*/, Comment::Single
34
+ rule %r/'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/, Str::Char
35
+
36
+ rule %r/(?:#{LanguageKeywords.join('|')})\b/, Keyword
37
+ rule %r/(?:#{LanguageVariables.join('|')})\b/, Keyword::Variable
38
+ rule %r/(?:#{BooleanConstants.join('|')})\b/, Keyword::Constant
39
+
40
+ rule %r/\b0[xX][\da-fA-F](?:_*[\da-fA-F])*b/, Num::Hex
41
+ rule %r/\b0[cC][0-7](?:_*[0-7])*\b/, Num::Oct
42
+ rule %r/\b0[bB][01](?:_*[01])*\b/, Num::Bin
43
+ rule %r/\d(?:_*\d)*/, Num::Integer
44
+ rule %r/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/, Num::Float
45
+
46
+ rule %r/:=|<<|>>|\(\||\|\)|->|\.|[{}\[\];(),:?]/, Punctuation::Indicator
47
+ rule %r/\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/, Operator
48
+
49
+ rule %r/[A-Z][\dA-Z_]*/, Name::Class
50
+ rule %r/[A-Za-z][\dA-Za-z_]*/, Name
51
+ rule %r/\s+/, Text
52
+ end
53
+
54
+ state :aligned_verbatim_string do
55
+ rule %r/]"/, Str::Other, :pop!
56
+ rule SimpleString, Str::Other
57
+ end
58
+
59
+ state :non_aligned_verbatim_string do
60
+ rule %r/}"/, Str::Other, :pop!
61
+ rule SimpleString, Str::Other
62
+ end
63
+ end
64
+ end
65
+ end
66
+