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,135 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Make < RegexLexer
7
+ title "Make"
8
+ desc "Makefile syntax"
9
+ tag 'make'
10
+ aliases 'makefile', 'mf', 'gnumake', 'bsdmake'
11
+ filenames '*.make', '*.mak', '*.mk', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile', '*,fe1'
12
+ mimetypes 'text/x-makefile'
13
+
14
+ def self.functions
15
+ @functions ||= %w(
16
+ abspath addprefix addsuffix and basename call dir error eval file
17
+ filter filter-out findstring firstword flavor foreach if join lastword
18
+ notdir or origin patsubst realpath shell sort strip subst suffix value
19
+ warning wildcard word wordlist words
20
+ )
21
+ end
22
+
23
+ # TODO: Add support for special keywords
24
+ # bsd_special = %w(
25
+ # include undef error warning if else elif endif for endfor
26
+ # )
27
+
28
+ def initialize(opts={})
29
+ super
30
+ @shell = Shell.new(opts)
31
+ end
32
+
33
+ start { @shell.reset! }
34
+
35
+ state :root do
36
+ rule %r/\s+/, Text
37
+
38
+ rule %r/#.*?\n/, Comment
39
+
40
+ rule %r/([-s]?include)((?:[\t ]+[^\t\n #]+)+)/ do
41
+ groups Keyword, Literal::String::Other
42
+ end
43
+
44
+ rule %r/(ifn?def|ifn?eq)([\t ]+)([^#\n]+)/ do
45
+ groups Keyword, Text, Name::Variable
46
+ end
47
+
48
+ rule %r/(?:else|endif)[\t ]*(?=[#\n])/, Keyword
49
+
50
+ rule %r/(export)([\t ]+)(?=[\w\${}()\t -]+\n)/ do
51
+ groups Keyword, Text
52
+ push :export
53
+ end
54
+
55
+ rule %r/export[\t ]+/, Keyword
56
+
57
+ # assignment
58
+ rule %r/([\w${}().-]+)([\t ]*)([!?:+]?=)/m do |m|
59
+ token Name::Variable, m[1]
60
+ token Text, m[2]
61
+ token Operator, m[3]
62
+ push :shell_line
63
+ end
64
+
65
+ rule %r/"(\\\\|\\.|[^"\\])*"/, Str::Double
66
+ rule %r/'(\\\\|\\.|[^'\\])*'/, Str::Single
67
+ rule %r/([^\n:]+)(:+)([ \t]*)/ do
68
+ groups Name::Label, Operator, Text
69
+ push :block_header
70
+ end
71
+ end
72
+
73
+ state :export do
74
+ rule %r/[\w\${}()-]/, Name::Variable
75
+ rule %r/\n/, Text, :pop!
76
+ rule %r/[\t ]+/, Text
77
+ end
78
+
79
+ state :block_header do
80
+ rule %r/[^,\\\n#]+/, Name::Function
81
+ rule %r/,/, Punctuation
82
+ rule %r/#.*?/, Comment
83
+ rule %r/\\\n/, Text
84
+ rule %r/\\./, Text
85
+ rule %r/\n/ do
86
+ token Text
87
+ goto :block_body
88
+ end
89
+ end
90
+
91
+ state :block_body do
92
+ rule %r/(ifn?def|ifn?eq)([\t ]+)([^#\n]+)(#.*)?(\n)/ do
93
+ groups Keyword, Text, Name::Variable, Comment, Text
94
+ end
95
+
96
+ rule %r/(else|endif)([\t ]*)(#.*)?(\n)/ do
97
+ groups Keyword, Text, Comment, Text
98
+ end
99
+
100
+ rule %r/(\t[\t ]*)([@-]?)/ do
101
+ groups Text, Punctuation
102
+ push :shell_line
103
+ end
104
+
105
+ rule(//) { @shell.reset!; pop! }
106
+ end
107
+
108
+ state :shell do
109
+ # macro interpolation
110
+ rule %r/\$[({][\t ]*\w[\w:=%.]*[\t ]*[)}]/i, Name::Variable
111
+ # function invocation
112
+ rule %r/(\$[({])([\t ]*)(#{Make.functions.join('|')})([\t ]+)/m do
113
+ groups Name::Function, Text, Name::Builtin, Text
114
+ push :shell_expr
115
+ end
116
+
117
+ rule(/\\./m) { delegate @shell }
118
+ stop = /\$\(|\$\{|\(|\)|\}|\\|$/
119
+ rule(/.+?(?=#{stop})/m) { delegate @shell }
120
+ rule(stop) { delegate @shell }
121
+ end
122
+
123
+ state :shell_expr do
124
+ rule(/[({]/) { delegate @shell; push }
125
+ rule %r/[)}]/, Name::Function, :pop!
126
+ mixin :shell
127
+ end
128
+
129
+ state :shell_line do
130
+ rule %r/\n/, Text, :pop!
131
+ mixin :shell
132
+ end
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,182 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Markdown < RegexLexer
7
+ title "Markdown"
8
+ desc "Markdown, a light-weight markup language for authors"
9
+
10
+ tag 'markdown'
11
+ aliases 'md', 'mkd'
12
+ filenames '*.markdown', '*.md', '*.mkd'
13
+ mimetypes 'text/x-markdown'
14
+
15
+ def html
16
+ @html ||= HTML.new(options)
17
+ end
18
+
19
+ start { html.reset! }
20
+
21
+ edot = /\\.|[^\\\n]/
22
+
23
+ state :root do
24
+ # YAML frontmatter
25
+ rule(/\A(---\s*\n.*?\n?)^(---\s*$\n?)/m) { delegate YAML }
26
+
27
+ rule %r/\\./, Str::Escape
28
+
29
+ rule %r/^[\S ]+\n(?:---*)\n/, Generic::Heading
30
+ rule %r/^[\S ]+\n(?:===*)\n/, Generic::Subheading
31
+
32
+ rule %r/^#(?=[^#]).*?$/, Generic::Heading
33
+ rule %r/^##*.*?$/, Generic::Subheading
34
+
35
+ rule %r/^([ \t]*)(`{3,}|~{3,})([^\n]*\n)((.*?)(\n\1)(\2))?/m do |m|
36
+ name = m[3].strip
37
+ sublexer =
38
+ begin
39
+ Lexer.find_fancy(name.empty? ? "guess" : name, m[5], @options)
40
+ rescue Guesser::Ambiguous => e
41
+ e.alternatives.first.new(@options)
42
+ end
43
+
44
+ sublexer ||= PlainText.new(@options.merge(:token => Str::Backtick))
45
+ sublexer.reset!
46
+
47
+ token Text, m[1]
48
+ token Punctuation, m[2]
49
+ token Name::Label, m[3]
50
+ if m[5]
51
+ delegate sublexer, m[5]
52
+ end
53
+
54
+ token Text, m[6]
55
+
56
+ if m[7]
57
+ token Punctuation, m[7]
58
+ else
59
+ push do
60
+ rule %r/^([ \t]*)(#{m[2]})/ do |mb|
61
+ pop!
62
+ token Text, mb[1]
63
+ token Punctuation, mb[2]
64
+ end
65
+ rule %r/^.*\n/ do |mb|
66
+ delegate sublexer, mb[1]
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ rule %r/\n\n(( |\t).*?\n|\n)+/, Str::Backtick
73
+
74
+ rule %r/(`+)(?:#{edot}|\n)+?\1/, Str::Backtick
75
+
76
+ # various uses of * are in order of precedence
77
+
78
+ # line breaks
79
+ rule %r/^(\s*[*]){3,}\s*$/, Punctuation
80
+ rule %r/^(\s*[-]){3,}\s*$/, Punctuation
81
+
82
+ # bulleted lists
83
+ rule %r/^\s*[*+-](?=\s)/, Punctuation
84
+
85
+ # numbered lists
86
+ rule %r/^\s*\d+\./, Punctuation
87
+
88
+ # blockquotes
89
+ rule %r/^\s*>.*?$/, Generic::Traceback
90
+
91
+ # link references
92
+ # [foo]: bar "baz"
93
+ rule %r(^
94
+ (\s*) # leading whitespace
95
+ (\[) (#{edot}+?) (\]) # the reference
96
+ (\s*) (:) # colon
97
+ )x do
98
+ groups Text, Punctuation, Str::Symbol, Punctuation, Text, Punctuation
99
+
100
+ push :title
101
+ push :url
102
+ end
103
+
104
+ # links and images
105
+ rule %r/(!?\[)(#{edot}*?)(\])(?=[\[(])/ do
106
+ groups Punctuation, Name::Variable, Punctuation
107
+ push :link
108
+ end
109
+
110
+ rule %r/[*][*]#{edot}*?[*][*]/, Generic::Strong
111
+ rule %r/__#{edot}*?__/, Generic::Strong
112
+
113
+ rule %r/[*]#{edot}*?[*]/, Generic::Emph
114
+ rule %r/_#{edot}*?_/, Generic::Emph
115
+
116
+ # Automatic links
117
+ rule %r/<.*?@.+[.].+>/, Name::Variable
118
+ rule %r[<(https?|mailto|ftp)://#{edot}*?>], Name::Variable
119
+
120
+ rule %r/[^\\`\[*\n&<]+/, Text
121
+
122
+ # inline html
123
+ rule(/&\S*;/) { delegate html }
124
+ rule(/<#{edot}*?>/) { delegate html }
125
+ rule %r/[&<]/, Text
126
+
127
+ # An opening square bracket that is not a link
128
+ rule %r/\[/, Text
129
+
130
+ rule %r/\n/, Text
131
+ end
132
+
133
+ state :link do
134
+ rule %r/(\[)(#{edot}*?)(\])/ do
135
+ groups Punctuation, Str::Symbol, Punctuation
136
+ pop!
137
+ end
138
+
139
+ rule %r/[(]/ do
140
+ token Punctuation
141
+ push :inline_title
142
+ push :inline_url
143
+ end
144
+
145
+ rule %r/[ \t]+/, Text
146
+
147
+ rule(//) { pop! }
148
+ end
149
+
150
+ state :url do
151
+ rule %r/[ \t]+/, Text
152
+
153
+ # the url
154
+ rule %r/(<)(#{edot}*?)(>)/ do
155
+ groups Name::Tag, Str::Other, Name::Tag
156
+ pop!
157
+ end
158
+
159
+ rule %r/\S+/, Str::Other, :pop!
160
+ end
161
+
162
+ state :title do
163
+ rule %r/"#{edot}*?"/, Name::Namespace
164
+ rule %r/'#{edot}*?'/, Name::Namespace
165
+ rule %r/[(]#{edot}*?[)]/, Name::Namespace
166
+ rule %r/\s*(?=["'()])/, Text
167
+ rule(//) { pop! }
168
+ end
169
+
170
+ state :inline_title do
171
+ rule %r/[)]/, Punctuation, :pop!
172
+ mixin :title
173
+ end
174
+
175
+ state :inline_url do
176
+ rule %r/[^<\s)]+/, Str::Other, :pop!
177
+ rule %r/\s+/m, Text
178
+ mixin :url
179
+ end
180
+ end
181
+ end
182
+ end
@@ -0,0 +1,110 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Mason < TemplateLexer
7
+ title 'Mason'
8
+ desc 'The HTML::Mason framework (https://metacpan.org/pod/HTML::Mason)'
9
+ tag 'mason'
10
+ filenames '*.mi', '*.mc', '*.mas', '*.m', '*.mhtml', '*.mcomp', 'autohandler', 'dhandler'
11
+ mimetypes 'text/x-mason', 'application/x-mason'
12
+
13
+ def initialize(*)
14
+ super
15
+ @perl = Perl.new
16
+ end
17
+
18
+ # Note: If you add a tag in the lines below, you also need to modify "disambiguate '*.m'" in file disambiguation.rb
19
+ TEXT_BLOCKS = %w(text doc)
20
+ PERL_BLOCKS = %w(args flags attr init once shared perl cleanup filter)
21
+ COMPONENTS = %w(def method)
22
+
23
+ state :root do
24
+ mixin :mason_tags
25
+ end
26
+
27
+ state :mason_tags do
28
+ rule %r/\s+/, Text::Whitespace
29
+
30
+ rule %r/<%(#{TEXT_BLOCKS.join('|')})>/oi, Comment::Preproc, :text_block
31
+
32
+ rule %r/<%(#{PERL_BLOCKS.join('|')})>/oi, Comment::Preproc, :perl_block
33
+
34
+ rule %r/(<%(#{COMPONENTS.join('|')}))([^>]*)(>)/oi do |m|
35
+ token Comment::Preproc, m[1]
36
+ token Name, m[3]
37
+ token Comment::Preproc, m[4]
38
+ push :component_block
39
+ end
40
+
41
+ # perl line
42
+ rule %r/^(%)(.*)$/ do |m|
43
+ token Comment::Preproc, m[1]
44
+ delegate @perl, m[2]
45
+ end
46
+
47
+ # start of component call
48
+ rule %r/<%/, Comment::Preproc, :component_call
49
+
50
+ # start of component with content
51
+ rule %r/<&\|/ do
52
+ token Comment::Preproc
53
+ push :component_with_content
54
+ push :component_sub
55
+ end
56
+
57
+ # start of component substitution
58
+ rule %r/<&/, Comment::Preproc, :component_sub
59
+
60
+ # fallback to HTML until a mason tag is encountered
61
+ rule(/(.+?)(?=(<\/?&|<\/?%|^%|^#))/m) { delegate parent }
62
+
63
+ # if we get here, there's no more mason tags, so we parse the rest of the doc as HTML
64
+ rule(/.+/m) { delegate parent }
65
+ end
66
+
67
+ state :perl_block do
68
+ rule %r/<\/%(#{PERL_BLOCKS.join('|')})>/oi, Comment::Preproc, :pop!
69
+ rule %r/\s+/, Text::Whitespace
70
+ rule %r/^(#.*)$/, Comment
71
+ rule(/(.*?[^"])(?=<\/%)/m) { delegate @perl }
72
+ end
73
+
74
+ state :text_block do
75
+ rule %r/<\/%(#{TEXT_BLOCKS.join('|')})>/oi, Comment::Preproc, :pop!
76
+ rule %r/\s+/, Text::Whitespace
77
+ rule %r/^(#.*)$/, Comment
78
+ rule %r/(.*?[^"])(?=<\/%)/m, Comment
79
+ end
80
+
81
+ state :component_block do
82
+ rule %r/<\/%(#{COMPONENTS.join('|')})>/oi, Comment::Preproc, :pop!
83
+ rule %r/\s+/, Text::Whitespace
84
+ rule %r/^(#.*)$/, Comment
85
+ mixin :mason_tags
86
+ end
87
+
88
+ state :component_with_content do
89
+ rule %r/<\/&>/ do
90
+ token Comment::Preproc
91
+ pop!
92
+ end
93
+
94
+ mixin :mason_tags
95
+ end
96
+
97
+ state :component_sub do
98
+ rule %r/&>/, Comment::Preproc, :pop!
99
+
100
+ rule(/(.*?)(?=&>)/m) { delegate @perl }
101
+ end
102
+
103
+ state :component_call do
104
+ rule %r/%>/, Comment::Preproc, :pop!
105
+
106
+ rule(/(.*?)(?=%>)/m) { delegate @perl }
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,96 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Mathematica < RegexLexer
7
+ title "Mathematica"
8
+ desc "Wolfram Mathematica, the world's definitive system for modern technical computing."
9
+ tag 'mathematica'
10
+ aliases 'wl'
11
+ filenames '*.m', '*.wl'
12
+ mimetypes 'application/vnd.wolfram.mathematica.package', 'application/vnd.wolfram.wl'
13
+
14
+ # Mathematica has various input forms for numbers. We need to handle numbers in bases, precision, accuracy,
15
+ # and *^ scientific notation. All this works for integers and real numbers. Some examples
16
+ # 1 1234567 1.1 .3 0.2 1*^10 2*^+10 3*^-10
17
+ # 1`1 1``1 1.2` 1.2``1.234*^-10 1.2``1.234*^+10 1.2``1.234*^10
18
+ # 2^^01001 10^^1.2``20.1234*^-10
19
+ base = /(?:\d+)/
20
+ number = /(?:\.\d+|\d+\.\d*|\d+)/
21
+ number_base = /(?:\.\w+|\w+\.\w*|\w+)/
22
+ precision = /`(`?#{number})?/
23
+
24
+ operators = /[+\-*\/|,;.:@~=><&`'^?!_%]/
25
+ braces = /[\[\](){}]/
26
+
27
+ string = /"(\\\\|\\"|[^"])*"/
28
+
29
+ # symbols and namespaced symbols. Note the special form \[Gamma] for named characters. These are also symbols.
30
+ # Module With Block Integrate Table Plot
31
+ # x32 $x x$ $Context` Context123`$x `Private`Context
32
+ # \[Gamma] \[Alpha]x32 Context`\[Xi]
33
+ identifier = /[a-zA-Z$][$a-zA-Z0-9]*/
34
+ named_character = /\\\[#{identifier}\]/
35
+ symbol = /(#{identifier}|#{named_character})+/
36
+ context_symbol = /`?#{symbol}(`#{symbol})*`?/
37
+
38
+ # Slots for pure functions.
39
+ # Examples: # ## #1 ##3 #Test #"Test" #[Test] #["Test"]
40
+ association_slot = /#(#{identifier}|\"#{identifier}\")/
41
+ slot = /#{association_slot}|#[0-9]*/
42
+
43
+ # Handling of message like symbol::usage or symbol::"argx"
44
+ message = /::(#{identifier}|#{string})/
45
+
46
+ # Highlighting of the special in and out markers that are prepended when you copy a cell
47
+ in_out = /(In|Out)\[[0-9]+\]:?=/
48
+
49
+ # Although Module, With and Block are normal built-in symbols, we give them a special treatment as they are
50
+ # the most important expressions for defining local variables
51
+ def self.keywords
52
+ @keywords = Set.new %w(
53
+ Module With Block
54
+ )
55
+ end
56
+
57
+ # The list of built-in symbols comes from a wolfram server and is created automatically by rake
58
+ def self.builtins
59
+ load File.join(__dir__, 'mathematica/builtins.rb')
60
+ self.builtins
61
+ end
62
+
63
+ state :root do
64
+ rule %r/\s+/, Text::Whitespace
65
+ rule %r/\(\*/, Comment, :comment
66
+ rule %r/#{base}\^\^#{number_base}#{precision}?(\*\^[+-]?\d+)?/, Num # a number with a base
67
+ rule %r/(?:#{number}#{precision}?(?:\*\^[+-]?\d+)?)/, Num # all other numbers
68
+ rule message, Name::Tag
69
+ rule in_out, Generic::Prompt
70
+ rule %r/#{context_symbol}/m do |m|
71
+ match = m[0]
72
+ if self.class.keywords.include? match
73
+ token Name::Builtin::Pseudo
74
+ elsif self.class.builtins.include? match
75
+ token Name::Builtin
76
+ else
77
+ token Name::Variable
78
+ end
79
+ end
80
+ rule slot, Name::Function
81
+ rule operators, Operator
82
+ rule braces, Punctuation
83
+ rule string, Str
84
+ end
85
+
86
+ # Allow for nested comments and special treatment of ::Section:: or :Author: markup
87
+ state :comment do
88
+ rule %r/\(\*/, Comment, :comment
89
+ rule %r/\*\)/, Comment, :pop!
90
+ rule %r/::#{identifier}::/, Comment::Preproc
91
+ rule %r/[ ]:(#{identifier}|[^\S])+:[ ]/, Comment::Preproc
92
+ rule %r/./, Comment
93
+ end
94
+ end
95
+ end
96
+ end