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,30 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'javascript.rb'
7
+ load_lexer 'typescript/common.rb'
8
+
9
+ class Typescript < Javascript
10
+ include TypescriptCommon
11
+
12
+ title "TypeScript"
13
+ desc "TypeScript, a superset of JavaScript"
14
+
15
+ tag 'typescript'
16
+ aliases 'ts'
17
+
18
+ filenames '*.ts', '*.d.ts'
19
+
20
+ mimetypes 'text/typescript'
21
+
22
+ prepend :statement do
23
+ rule %r/(#{Javascript.id_regex})(\??)(\s*)(:)/ do
24
+ groups Name::Label, Punctuation, Text, Punctuation
25
+ push :expr_start
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ module TypescriptCommon
7
+ def self.keywords
8
+ @keywords ||= super + Set.new(%w(
9
+ is namespace static private protected public
10
+ implements readonly
11
+ ))
12
+ end
13
+
14
+ def self.declarations
15
+ @declarations ||= super + Set.new(%w(
16
+ type abstract
17
+ ))
18
+ end
19
+
20
+ def self.reserved
21
+ @reserved ||= super + Set.new(%w(
22
+ string any void number namespace module
23
+ declare default interface keyof
24
+ ))
25
+ end
26
+
27
+ def self.builtins
28
+ @builtins ||= super + %w(
29
+ Pick Partial Readonly Record
30
+ )
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,78 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Vala < RegexLexer
7
+ tag 'vala'
8
+ filenames '*.vala'
9
+ mimetypes 'text/x-vala'
10
+
11
+ title "Vala"
12
+ desc 'A programming language similar to csharp.'
13
+
14
+ id = /@?[_a-z]\w*/i
15
+
16
+ keywords = %w(
17
+ abstract as async base break case catch const construct continue
18
+ default delegate delete do dynamic else ensures enum errordomain
19
+ extern false finally for foreach get global if in inline interface
20
+ internal is lock new null out override owned private protected
21
+ public ref requires return set signal sizeof static switch this
22
+ throw throws true try typeof unowned var value virtual void weak
23
+ while yield
24
+ )
25
+
26
+ keywords_type = %w(
27
+ bool char double float int int8 int16 int32 int64 long short size_t
28
+ ssize_t string unichar uint uint8 uint16 uint32 uint64 ulong ushort
29
+ )
30
+
31
+ state :whitespace do
32
+ rule %r/\s+/m, Text
33
+ rule %r(//.*?$), Comment::Single
34
+ rule %r(/[*].*?[*]/)m, Comment::Multiline
35
+ end
36
+
37
+ state :root do
38
+ mixin :whitespace
39
+
40
+ rule %r/^\s*\[.*?\]/, Name::Attribute
41
+
42
+ rule %r/(<\[)\s*(#{id}:)?/, Keyword
43
+ rule %r/\]>/, Keyword
44
+
45
+ rule %r/[~!%^&*()+=|\[\]{}:;,.<>\/?-]/, Punctuation
46
+ rule %r/@"(\\.|.)*?"/, Str
47
+ rule %r/"(\\.|.)*?["\n]/, Str
48
+ rule %r/'(\\.|.)'/, Str::Char
49
+ rule %r/0x[0-9a-f]+[lu]?/i, Num
50
+ rule %r(
51
+ [0-9]
52
+ ([.][0-9]*)? # decimal
53
+ (e[+-][0-9]+)? # exponent
54
+ [fldu]? # type
55
+ )ix, Num
56
+ rule %r/\b(#{keywords.join('|')})\b/, Keyword
57
+ rule %r/\b(#{keywords_type.join('|')})\b/, Keyword::Type
58
+ rule %r/class|struct/, Keyword, :class
59
+ rule %r/namespace|using/, Keyword, :namespace
60
+ rule %r/#{id}(?=\s*[(])/, Name::Function
61
+ rule id, Name
62
+
63
+ rule %r/#.*/, Comment::Preproc
64
+ end
65
+
66
+ state :class do
67
+ mixin :whitespace
68
+ rule id, Name::Class, :pop!
69
+ end
70
+
71
+ state :namespace do
72
+ mixin :whitespace
73
+ rule %r/(?=[(])/, Text, :pop!
74
+ rule %r/(#{id}|[.])+/, Name::Namespace, :pop!
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,168 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Varnish < RegexLexer
7
+ title 'VCL: Varnish Configuration Language'
8
+ desc 'The configuration language for Varnish HTTP Cache (varnish-cache.org)'
9
+
10
+ tag 'vcl'
11
+ aliases 'varnishconf', 'varnish'
12
+ filenames '*.vcl'
13
+ mimetypes 'text/x-varnish', 'text/x-vcl'
14
+
15
+ SPACE = '[ \f\n\r\t\v]+'
16
+
17
+ # backend acl
18
+ def self.keywords
19
+ @keywords ||= Set.new %w[
20
+ vcl set unset include import if else elseif elif elsif director probe
21
+ backend acl
22
+
23
+ declare local
24
+ BOOL FLOAT INTEGER IP RTIME STRING TIME
25
+ ]
26
+ end
27
+
28
+ def self.functions
29
+ @functions ||= Set.new %w[
30
+ ban call hash_data new regsub regsuball return rollback
31
+ std.cache_req_body std.collect std.duration std.fileread std.healthy
32
+ std.integer std.ip std.log std.port std.querysort std.random std.real
33
+ std.real2time std.rollback std.set_ip_tos std.strstr std.syslog
34
+ std.time std.time2integer std.time2real std.timestamp std.tolower
35
+ std.toupper synth synthetic
36
+ ]
37
+ end
38
+
39
+ def self.variables
40
+ @variables ||= Set.new %w[
41
+ bereq bereq.backend bereq.between_bytes_timeout bereq.connect_timeout
42
+ bereq.first_byte_timeout bereq.method bereq.proto bereq.retries
43
+ bereq.uncacheable bereq.url bereq.xid beresp beresp.age
44
+ beresp.backend beresp.backend.ip beresp.backend.name beresp.do_esi
45
+ beresp.do_gunzip beresp.do_gzip beresp.do_stream beresp.grace
46
+ beresp.keep beresp.proto beresp.reason beresp.status
47
+ beresp.storage_hint beresp.ttl beresp.uncacheable beresp.was_304
48
+ client.identity client.ip local.ip now obj.age obj.grace obj.hits
49
+ obj.keep obj.proto obj.reason obj.status obj.ttl obj.uncacheable
50
+ remote.ip req req.backend_hint req.can_gzip req.esi req.esi_level
51
+ req.hash_always_miss req.hash_ignore_busy req.method req.proto
52
+ req.restarts req.ttl req.url req.xid resp resp.proto resp.reason
53
+ resp.status server.hostname server.identity server.ip
54
+ ]
55
+ end
56
+
57
+ # This is never used
58
+ # def self.routines
59
+ # @routines ||= Set.new %w[
60
+ # backend_error backend_fetch backend_response purge deliver fini hash
61
+ # hit init miss pass pipe recv synth
62
+ # ]
63
+ # end
64
+
65
+ state :root do
66
+ # long strings ({" ... "})
67
+ rule %r/\{".*?"}/m, Str::Single
68
+
69
+ # heredoc style long strings ({xyz"..."xyz})
70
+ rule %r/\{(\w+)".*?"(\1)\}/m, Str::Single
71
+
72
+ # comments
73
+ rule %r'/\*.*?\*/'m, Comment::Multiline
74
+ rule %r'(?://|#).*', Comment::Single
75
+
76
+ rule %r/true|false/, Keyword::Constant
77
+
78
+ # "wildcard variables"
79
+ var_prefix = Regexp.union(%w(beresp bereq resp req obj))
80
+ rule %r/(?:#{var_prefix})\.http\.[\w.-]+/ do
81
+ token Name::Variable
82
+ end
83
+
84
+ # local variables (var.*)
85
+ rule %r/(?:var)\.[\w.-]+/ do
86
+ token Name::Variable
87
+ end
88
+
89
+ rule %r/(sub)(#{SPACE})([\w-]+)/ do
90
+ groups Keyword, Text, Name::Function
91
+ end
92
+
93
+ # inline C (C{ ... }C)
94
+ rule %r/C\{/ do
95
+ token Comment::Preproc
96
+ push :inline_c
97
+ end
98
+
99
+ rule %r/\.?[a-z_][\w.-]*/i do |m|
100
+ next token Keyword if self.class.keywords.include? m[0]
101
+ next token Name::Function if self.class.functions.include? m[0]
102
+ next token Name::Variable if self.class.variables.include? m[0]
103
+ token Text
104
+ end
105
+
106
+ ## for number literals
107
+
108
+ decimal = %r/[0-9]+/
109
+ hex = %r/[0-9a-f]+/i
110
+
111
+ numeric = %r{
112
+ (?:
113
+ 0x#{hex}
114
+ (?:\.#{hex})?
115
+ (?:p[+-]?#{hex})?
116
+ )
117
+ |
118
+ (?:
119
+ #{decimal}
120
+ (?:\.#{decimal})?
121
+ (?:e[+-]?#{decimal})?
122
+ )
123
+ }xi
124
+
125
+ # duration literals
126
+ duration_suffix = Regexp.union(%w(ms s m h d w y))
127
+ rule %r/#{numeric}#{duration_suffix}/, Num::Other
128
+
129
+ # numeric literals (integer / float)
130
+ rule numeric do |m|
131
+ case m[0]
132
+ when /^#{decimal}$/
133
+ token Num::Integer
134
+ when /^0x#{hex}$/
135
+ token Num::Integer
136
+ else
137
+ token Num::Float
138
+ end
139
+ end
140
+
141
+ # standard strings
142
+ rule %r/"/, Str::Double, :string
143
+
144
+ rule %r'[&|+-]{2}|[<=>!*/+-]=|<<|>>|!~|[-+*/%><=!&|~]', Operator
145
+
146
+ rule %r/[{}();.,]/, Punctuation
147
+
148
+ rule %r/\r\n?|\n/, Text
149
+ rule %r/./, Text
150
+ end
151
+
152
+ state :string do
153
+ rule %r/"/, Str::Double, :pop!
154
+ rule %r/\\[\\"nt]/, Str::Escape
155
+
156
+ rule %r/\r\n?|\n/, Str::Double
157
+ rule %r/./, Str::Double
158
+ end
159
+
160
+ state :inline_c do
161
+ rule %r/}C/, Comment::Preproc, :pop!
162
+ rule %r/.*?(?=}C)/m do
163
+ delegate C
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end
@@ -0,0 +1,165 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class VisualBasic < RegexLexer
7
+ title "Visual Basic"
8
+ desc "Visual Basic"
9
+ tag 'vb'
10
+ aliases 'visualbasic'
11
+ filenames '*.vbs', '*.vb'
12
+ mimetypes 'text/x-visualbasic', 'application/x-visualbasic'
13
+
14
+ def self.keywords
15
+ @keywords ||= Set.new %w(
16
+ AddHandler Alias ByRef ByVal CBool CByte CChar CDate CDbl CDec
17
+ CInt CLng CObj CSByte CShort CSng CStr CType CUInt CULng CUShort
18
+ Call Case Catch Class Const Continue Declare Default Delegate
19
+ Dim DirectCast Do Each Else ElseIf End EndIf Enum Erase Error
20
+ Event Exit False Finally For Friend Function Get Global GoSub
21
+ GoTo Handles If Implements Imports Inherits Interface Let
22
+ Lib Loop Me Module MustInherit MustOverride MyBase MyClass
23
+ Namespace Narrowing New Next Not NotInheritable NotOverridable
24
+ Nothing Of On Operator Option Optional Overloads Overridable
25
+ Overrides ParamArray Partial Private Property Protected Public
26
+ RaiseEvent ReDim ReadOnly RemoveHandler Resume Return Select Set
27
+ Shadows Shared Single Static Step Stop Structure Sub SyncLock
28
+ Then Throw To True Try TryCast Using Wend When While Widening
29
+ With WithEvents WriteOnly
30
+ )
31
+ end
32
+
33
+ def self.keywords_type
34
+ @keywords_type ||= Set.new %w(
35
+ Boolean Byte Char Date Decimal Double Integer Long Object
36
+ SByte Short Single String Variant UInteger ULong UShort
37
+ )
38
+ end
39
+
40
+ def self.operator_words
41
+ @operator_words ||= Set.new %w(
42
+ AddressOf And AndAlso As GetType In Is IsNot Like Mod Or OrElse
43
+ TypeOf Xor
44
+ )
45
+ end
46
+
47
+ def self.builtins
48
+ @builtins ||= Set.new %w(
49
+ Console ConsoleColor
50
+ )
51
+ end
52
+
53
+ id = /[a-z_]\w*/i
54
+ upper_id = /[A-Z]\w*/
55
+
56
+ state :whitespace do
57
+ rule %r/\s+/, Text
58
+ rule %r/\n/, Text, :bol
59
+ rule %r/rem\b.*?$/i, Comment::Single
60
+ rule %r(%\{.*?%\})m, Comment::Multiline
61
+ rule %r/'.*$/, Comment::Single
62
+ end
63
+
64
+ state :bol do
65
+ rule %r/\s+/, Text
66
+ rule %r/<.*?>/, Name::Attribute
67
+ rule(//) { :pop! }
68
+ end
69
+
70
+ state :root do
71
+ mixin :whitespace
72
+ rule %r(
73
+ [#]If\b .*? \bThen
74
+ | [#]ElseIf\b .*? \bThen
75
+ | [#]End \s+ If
76
+ | [#]Const
77
+ | [#]ExternalSource .*? \n
78
+ | [#]End \s+ ExternalSource
79
+ | [#]Region .*? \n
80
+ | [#]End \s+ Region
81
+ | [#]ExternalChecksum
82
+ )x, Comment::Preproc
83
+ rule %r/[.]/, Punctuation, :dotted
84
+ rule %r/[(){}!#,:]/, Punctuation
85
+ rule %r/Option\s+(Strict|Explicit|Compare)\s+(On|Off|Binary|Text)/,
86
+ Keyword::Declaration
87
+ rule %r/End\b/, Keyword, :end
88
+ rule %r/(Dim|Const)\b/, Keyword, :dim
89
+ rule %r/(Function|Sub|Property)\b/, Keyword, :funcname
90
+ rule %r/(Class|Structure|Enum)\b/, Keyword, :classname
91
+ rule %r/(Module|Namespace|Imports)\b/, Keyword, :namespace
92
+
93
+ rule upper_id do |m|
94
+ match = m[0]
95
+ if self.class.keywords.include? match
96
+ token Keyword
97
+ elsif self.class.keywords_type.include? match
98
+ token Keyword::Type
99
+ elsif self.class.operator_words.include? match
100
+ token Operator::Word
101
+ elsif self.class.builtins.include? match
102
+ token Name::Builtin
103
+ else
104
+ token Name
105
+ end
106
+ end
107
+
108
+ rule(
109
+ %r(&=|[*]=|/=|\\=|\^=|\+=|-=|<<=|>>=|<<|>>|:=|<=|>=|<>|[-&*/\\^+=<>.]),
110
+ Operator
111
+ )
112
+
113
+ rule %r/"/, Str, :string
114
+ rule %r/#{id}[%&@!#\$]?/, Name
115
+ rule %r/#.*?#/, Literal::Date
116
+
117
+ rule %r/(\d+\.\d*|\d*\.\d+)(f[+-]?\d+)?/i, Num::Float
118
+ rule %r/\d+([SILDFR]|US|UI|UL)?/, Num::Integer
119
+ rule %r/&H[0-9a-f]+([SILDFR]|US|UI|UL)?/, Num::Integer
120
+ rule %r/&O[0-7]+([SILDFR]|US|UI|UL)?/, Num::Integer
121
+
122
+ rule %r/_\n/, Keyword
123
+ end
124
+
125
+ state :dotted do
126
+ mixin :whitespace
127
+ rule id, Name, :pop!
128
+ end
129
+
130
+ state :string do
131
+ rule %r/""/, Str::Escape
132
+ rule %r/"C?/, Str, :pop!
133
+ rule %r/[^"]+/, Str
134
+ end
135
+
136
+ state :dim do
137
+ mixin :whitespace
138
+ rule id, Name::Variable, :pop!
139
+ rule(//) { pop! }
140
+ end
141
+
142
+ state :funcname do
143
+ mixin :whitespace
144
+ rule id, Name::Function, :pop!
145
+ end
146
+
147
+ state :classname do
148
+ mixin :whitespace
149
+ rule id, Name::Class, :pop!
150
+ end
151
+
152
+ state :namespace do
153
+ mixin :whitespace
154
+ rule %r/#{id}([.]#{id})*/, Name::Namespace, :pop!
155
+ end
156
+
157
+ state :end do
158
+ mixin :whitespace
159
+ rule %r/(Function|Sub|Property|Class|Structure|Enum|Module|Namespace)\b/,
160
+ Keyword, :pop!
161
+ rule(//) { pop! }
162
+ end
163
+ end
164
+ end
165
+ end