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,114 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class CSharp < RegexLexer
7
+ tag 'csharp'
8
+ aliases 'c#', 'cs'
9
+ filenames '*.cs'
10
+ mimetypes 'text/x-csharp'
11
+
12
+ title "C#"
13
+ desc 'a multi-paradigm language targeting .NET'
14
+
15
+ # TODO: support more of unicode
16
+ id = /@?[_a-z]\w*/i
17
+
18
+ #Reserved Identifiers
19
+ #Contextual Keywords
20
+ #LINQ Query Expressions
21
+ keywords = %w(
22
+ abstract as base break case catch checked const continue
23
+ default delegate do else enum event explicit extern false
24
+ finally fixed for foreach goto if implicit in interface
25
+ internal is lock new null operator out override params private
26
+ protected public readonly ref return sealed sizeof stackalloc
27
+ static switch this throw true try typeof unchecked unsafe
28
+ virtual void volatile while
29
+ add alias async await get global partial remove set value where
30
+ yield nameof
31
+ ascending by descending equals from group in into join let on
32
+ orderby select
33
+ )
34
+
35
+ keywords_type = %w(
36
+ bool byte char decimal double dynamic float int long object
37
+ sbyte short string uint ulong ushort var
38
+ )
39
+
40
+ cpp_keywords = %w(
41
+ if endif else elif define undef line error warning region
42
+ endregion pragma
43
+ )
44
+
45
+ state :whitespace do
46
+ rule %r/\s+/m, Text
47
+ rule %r(//.*?$), Comment::Single
48
+ rule %r(/[*].*?[*]/)m, Comment::Multiline
49
+ end
50
+
51
+ state :nest do
52
+ rule %r/{/, Punctuation, :nest
53
+ rule %r/}/, Punctuation, :pop!
54
+ mixin :root
55
+ end
56
+
57
+ state :splice_string do
58
+ rule %r/\\./, Str
59
+ rule %r/{/, Punctuation, :nest
60
+ rule %r/"|\n/, Str, :pop!
61
+ rule %r/./, Str
62
+ end
63
+
64
+ state :splice_literal do
65
+ rule %r/""/, Str
66
+ rule %r/{/, Punctuation, :nest
67
+ rule %r/"/, Str, :pop!
68
+ rule %r/./, Str
69
+ end
70
+
71
+ state :root do
72
+ mixin :whitespace
73
+
74
+ rule %r/[$]\s*"/, Str, :splice_string
75
+ rule %r/[$]@\s*"/, Str, :splice_literal
76
+
77
+ rule %r/(<\[)\s*(#{id}:)?/, Keyword
78
+ rule %r/\]>/, Keyword
79
+
80
+ rule %r/[~!%^&*()+=|\[\]{}:;,.<>\/?-]/, Punctuation
81
+ rule %r/@"(""|[^"])*"/m, Str
82
+ rule %r/"(\\.|.)*?["\n]/, Str
83
+ rule %r/'(\\.|.)'/, Str::Char
84
+ rule %r/0x[0-9a-f]+[lu]?/i, Num
85
+ rule %r(
86
+ [0-9]
87
+ ([.][0-9]*)? # decimal
88
+ (e[+-][0-9]+)? # exponent
89
+ [fldu]? # type
90
+ )ix, Num
91
+ rule %r/\b(?:class|struct|interface)\b/, Keyword, :class
92
+ rule %r/\b(?:namespace|using)\b/, Keyword, :namespace
93
+ rule %r/^#[ \t]*(#{cpp_keywords.join('|')})\b.*?\n/,
94
+ Comment::Preproc
95
+ rule %r/\b(#{keywords.join('|')})\b/, Keyword
96
+ rule %r/\b(#{keywords_type.join('|')})\b/, Keyword::Type
97
+ rule %r/#{id}(?=\s*[(])/, Name::Function
98
+ rule id, Name
99
+ end
100
+
101
+ state :class do
102
+ mixin :whitespace
103
+ rule id, Name::Class, :pop!
104
+ end
105
+
106
+ state :namespace do
107
+ mixin :whitespace
108
+ rule %r/(?=[(])/, Text, :pop!
109
+ rule %r/(#{id}|[.])+/, Name::Namespace, :pop!
110
+ end
111
+
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,274 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class CSS < RegexLexer
7
+ title "CSS"
8
+ desc "Cascading Style Sheets, used to style web pages"
9
+
10
+ tag 'css'
11
+ filenames '*.css'
12
+ mimetypes 'text/css'
13
+
14
+ identifier = /[a-zA-Z0-9_-]+/
15
+ number = /-?(?:[0-9]+(\.[0-9]+)?|\.[0-9]+)/
16
+
17
+ def self.attributes
18
+ @attributes ||= Set.new %w(
19
+ align-content align-items align-self alignment-adjust
20
+ alignment-baseline all anchor-point animation
21
+ animation-delay animation-direction animation-duration
22
+ animation-fill-mode animation-iteration-count animation-name
23
+ animation-play-state animation-timing-function appearance
24
+ azimuth backface-visibility background background-attachment
25
+ background-clip background-color background-image
26
+ background-origin background-position background-repeat
27
+ background-size baseline-shift binding bleed bookmark-label
28
+ bookmark-level bookmark-state bookmark-target border
29
+ border-bottom border-bottom-color border-bottom-left-radius
30
+ border-bottom-right-radius border-bottom-style
31
+ border-bottom-width border-collapse border-color
32
+ border-image border-image-outset border-image-repeat
33
+ border-image-slice border-image-source border-image-width
34
+ border-left border-left-color border-left-style
35
+ border-left-width border-radius border-right
36
+ border-right-color border-right-style border-right-width
37
+ border-spacing border-style border-top border-top-color
38
+ border-top-left-radius border-top-right-radius
39
+ border-top-style border-top-width border-width bottom
40
+ box-align box-decoration-break box-direction box-flex
41
+ box-flex-group box-lines box-ordinal-group box-orient
42
+ box-pack box-shadow box-sizing break-after break-before
43
+ break-inside caption-side clear clip clip-path
44
+ clip-rule color color-profile columns column-count
45
+ column-fill column-gap column-rule column-rule-color
46
+ column-rule-style column-rule-width column-span
47
+ column-width content counter-increment counter-reset
48
+ crop cue cue-after cue-before cursor direction display
49
+ dominant-baseline drop-initial-after-adjust
50
+ drop-initial-after-align drop-initial-before-adjust
51
+ drop-initial-before-align drop-initial-size
52
+ drop-initial-value elevation empty-cells filter fit
53
+ fit-position flex flex-basis flex-direction flex-flow
54
+ flex-grow flex-shrink flex-wrap float float-offset
55
+ font font-family font-feature-settings
56
+ font-kerning font-language-override font-size
57
+ font-size-adjust font-stretch font-style font-synthesis
58
+ font-variant font-variant-alternates font-variant-caps
59
+ font-variant-east-asian font-variant-ligatures
60
+ font-variant-numeric font-variant-position font-weight
61
+ grid-cell grid-column grid-column-align grid-column-sizing
62
+ grid-column-span grid-columns grid-flow grid-row
63
+ grid-row-align grid-row-sizing grid-row-span
64
+ grid-rows grid-template hanging-punctuation height
65
+ hyphenate-after hyphenate-before hyphenate-character
66
+ hyphenate-lines hyphenate-resource hyphens icon
67
+ image-orientation image-rendering image-resolution
68
+ ime-mode inline-box-align justify-content
69
+ left letter-spacing line-break line-height
70
+ line-stacking line-stacking-ruby line-stacking-shift
71
+ line-stacking-strategy list-style list-style-image
72
+ list-style-position list-style-type margin
73
+ margin-bottom margin-left margin-right margin-top
74
+ mark marker-offset marks mark-after mark-before
75
+ marquee-direction marquee-loop marquee-play-count
76
+ marquee-speed marquee-style mask max-height max-width
77
+ min-height min-width move-to nav-down
78
+ nav-index nav-left nav-right nav-up object-fit
79
+ object-position opacity order orphans outline
80
+ outline-color outline-offset outline-style
81
+ outline-width overflow overflow-style overflow-wrap
82
+ overflow-x overflow-y padding padding-bottom
83
+ padding-left padding-right padding-top
84
+ page page-break-after page-break-before
85
+ page-break-inside page-policy pause pause-after
86
+ pause-before perspective perspective-origin
87
+ phonemes pitch pitch-range play-during pointer-events
88
+ position presentation-level punctuation-trim quotes
89
+ rendering-intent resize rest rest-after rest-before
90
+ richness right rotation rotation-point ruby-align
91
+ ruby-overhang ruby-position ruby-span size speak
92
+ speak-as speak-header speak-numeral speak-punctuation
93
+ speech-rate src stress string-set
94
+ tab-size table-layout target target-name
95
+ target-new target-position text-align
96
+ text-align-last text-combine-horizontal
97
+ text-decoration text-decoration-color
98
+ text-decoration-line text-decoration-skip
99
+ text-decoration-style text-emphasis
100
+ text-emphasis-color text-emphasis-position
101
+ text-emphasis-style text-height text-indent
102
+ text-justify text-orientation text-outline
103
+ text-overflow text-rendering text-shadow
104
+ text-space-collapse text-transform
105
+ text-underline-position text-wrap top
106
+ transform transform-origin transform-style
107
+ transition transition-delay transition-duration
108
+ transition-property transition-timing-function
109
+ unicode-bidi vertical-align
110
+ visibility voice-balance voice-duration
111
+ voice-family voice-pitch voice-pitch-range
112
+ voice-range voice-rate voice-stress voice-volume
113
+ volume white-space widows width word-break
114
+ word-spacing word-wrap writing-mode z-index
115
+ )
116
+ end
117
+
118
+ def self.builtins
119
+ @builtins ||= Set.new %w(
120
+ above absolute always armenian aural auto avoid left bottom
121
+ baseline behind below bidi-override blink block bold bolder
122
+ both bottom capitalize center center-left center-right circle
123
+ cjk-ideographic close-quote collapse condensed continuous crop
124
+ cross crosshair cursive dashed decimal decimal-leading-zero
125
+ default digits disc dotted double e-resize embed expanded
126
+ extra-condensed extra-expanded fantasy far-left far-right fast
127
+ faster fixed georgian groove hebrew help hidden hide high higher
128
+ hiragana hiragana-iroha icon inherit inline inline-table inset
129
+ inside invert italic justify katakana katakana-iroha landscape
130
+ large larger left left-side leftwards level lighter line-through
131
+ list-item loud low lower lower-alpha lower-greek lower-roman
132
+ lowercase ltr medium message-box middle mix monospace n-resize
133
+ narrower ne-resize no-close-quote no-open-quote no-repeat none
134
+ normal nowrap nw-resize oblique once open-quote outset outside
135
+ overline pointer portrait px relative repeat repeat-x repeat-y
136
+ rgb ridge right right-side rightwards s-resize sans-serif scroll
137
+ se-resize semi-condensed semi-expanded separate serif show
138
+ silent slow slower small-caps small-caption smaller soft solid
139
+ spell-out square static status-bar super sw-resize table-caption
140
+ table-cell table-column table-column-group table-footer-group
141
+ table-header-group table-row table-row-group text text-bottom
142
+ text-top thick thin top transparent ultra-condensed
143
+ ultra-expanded underline upper-alpha upper-latin upper-roman
144
+ uppercase url visible w-resize wait wider x-fast x-high x-large
145
+ x-loud x-low x-small x-soft xx-large xx-small yes
146
+ )
147
+ end
148
+
149
+ def self.constants
150
+ @constants ||= Set.new %w(
151
+ indigo gold firebrick indianred yellow darkolivegreen
152
+ darkseagreen mediumvioletred mediumorchid chartreuse
153
+ mediumslateblue black springgreen crimson lightsalmon brown
154
+ turquoise olivedrab cyan silver skyblue gray darkturquoise
155
+ goldenrod darkgreen darkviolet darkgray lightpink teal
156
+ darkmagenta lightgoldenrodyellow lavender yellowgreen thistle
157
+ violet navy orchid blue ghostwhite honeydew cornflowerblue
158
+ darkblue darkkhaki mediumpurple cornsilk red bisque slategray
159
+ darkcyan khaki wheat deepskyblue darkred steelblue aliceblue
160
+ gainsboro mediumturquoise floralwhite coral purple lightgrey
161
+ lightcyan darksalmon beige azure lightsteelblue oldlace
162
+ greenyellow royalblue lightseagreen mistyrose sienna lightcoral
163
+ orangered navajowhite lime palegreen burlywood seashell
164
+ mediumspringgreen fuchsia papayawhip blanchedalmond peru
165
+ aquamarine white darkslategray ivory dodgerblue lemonchiffon
166
+ chocolate orange forestgreen slateblue olive mintcream
167
+ antiquewhite darkorange cadetblue moccasin limegreen saddlebrown
168
+ darkslateblue lightskyblue deeppink plum aqua darkgoldenrod
169
+ maroon sandybrown magenta tan rosybrown pink lightblue
170
+ palevioletred mediumseagreen dimgray powderblue seagreen snow
171
+ mediumblue midnightblue paleturquoise palegoldenrod whitesmoke
172
+ darkorchid salmon lightslategray lawngreen lightgreen tomato
173
+ hotpink lightyellow lavenderblush linen mediumaquamarine green
174
+ blueviolet peachpuff
175
+ )
176
+ end
177
+
178
+ # source: http://www.w3.org/TR/CSS21/syndata.html#vendor-keyword-history
179
+ def self.vendor_prefixes
180
+ @vendor_prefixes ||= Set.new %w(
181
+ -ah- -atsc- -hp- -khtml- -moz- -ms- -o- -rim- -ro- -tc- -wap-
182
+ -webkit- -xv- mso- prince-
183
+ )
184
+ end
185
+
186
+ state :root do
187
+ mixin :basics
188
+ rule %r/{/, Punctuation, :stanza
189
+ rule %r/:[:]?#{identifier}/, Name::Decorator
190
+ rule %r/\.#{identifier}/, Name::Class
191
+ rule %r/##{identifier}/, Name::Function
192
+ rule %r/@#{identifier}/, Keyword, :at_rule
193
+ rule identifier, Name::Tag
194
+ rule %r([~^*!%&\[\]()<>|+=@:;,./?-]), Operator
195
+ rule %r/"(\\\\|\\"|[^"])*"/, Str::Single
196
+ rule %r/'(\\\\|\\'|[^'])*'/, Str::Double
197
+ end
198
+
199
+ state :value do
200
+ mixin :basics
201
+ rule %r/url\(.*?\)/, Str::Other
202
+ rule %r/#[0-9a-f]{1,6}/i, Num # colors
203
+ rule %r/#{number}(?:%|(?:em|px|pt|pc|in|mm|cm|ex|rem|ch|vw|vh|vmin|vmax|dpi|dpcm|dppx|deg|grad|rad|turn|s|ms|Hz|kHz)\b)?/, Num
204
+ rule %r/[\[\]():\/.,]/, Punctuation
205
+ rule %r/"(\\\\|\\"|[^"])*"/, Str::Single
206
+ rule %r/'(\\\\|\\'|[^'])*'/, Str::Double
207
+ rule(identifier) do |m|
208
+ if self.class.constants.include? m[0]
209
+ token Name::Constant
210
+ elsif self.class.builtins.include? m[0]
211
+ token Name::Builtin
212
+ else
213
+ token Name
214
+ end
215
+ end
216
+ end
217
+
218
+ state :at_rule do
219
+ rule %r/{(?=\s*#{identifier}\s*:)/m, Punctuation, :at_stanza
220
+ rule %r/{/, Punctuation, :at_body
221
+ rule %r/;/, Punctuation, :pop!
222
+ mixin :value
223
+ end
224
+
225
+ state :at_body do
226
+ mixin :at_content
227
+ mixin :root
228
+ end
229
+
230
+ state :at_stanza do
231
+ mixin :at_content
232
+ mixin :stanza
233
+ end
234
+
235
+ state :at_content do
236
+ rule %r/}/ do
237
+ token Punctuation
238
+ pop! 2
239
+ end
240
+ end
241
+
242
+ state :basics do
243
+ rule %r/\s+/m, Text
244
+ rule %r(/\*(?:.*?)\*/)m, Comment
245
+ end
246
+
247
+ state :stanza do
248
+ mixin :basics
249
+ rule %r/}/, Punctuation, :pop!
250
+ rule %r/(#{identifier})(\s*)(:)/m do |m|
251
+ name_tok = if self.class.attributes.include? m[1]
252
+ Name::Label
253
+ elsif self.class.vendor_prefixes.any? { |p| m[1].start_with?(p) }
254
+ Name::Label
255
+ else
256
+ Name::Property
257
+ end
258
+
259
+ groups name_tok, Text, Punctuation
260
+
261
+ push :stanza_value
262
+ end
263
+ end
264
+
265
+ state :stanza_value do
266
+ rule %r/;/, Punctuation, :pop!
267
+ rule(/(?=})/) { pop! }
268
+ rule %r/!\s*important\b/, Comment::Preproc
269
+ rule %r/^@.*?$/, Comment::Preproc
270
+ mixin :value
271
+ end
272
+ end
273
+ end
274
+ end
@@ -0,0 +1,44 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class CSVS < RegexLexer
7
+ tag 'csvs'
8
+ title "csvs"
9
+ desc 'The CSV Schema Language (digital-preservation.github.io)'
10
+ filenames '*.csvs'
11
+
12
+ state :root do
13
+ rule %r/\s+/m, Text
14
+
15
+ rule %r(//[\S\t ]*), Comment::Single
16
+ rule %r(/\*[^*]*\*/)m, Comment::Multiline
17
+
18
+ rule %r/(version)( )(\d+\.\d+)/ do
19
+ groups Keyword, Text::Whitespace, Num::Float
20
+ end
21
+
22
+ rule %r/T?\d{2}:\d{2}:\d{2}(\.\d{5})?(Z|(?:[-+]\d{2}:\d{2}))?/, Literal::Date
23
+ rule %r/\d{4}-\d{2}-\d{2}/, Literal::Date
24
+ rule %r/\d{2}\/\d{2}\/\d{4}/, Literal::Date
25
+
26
+ rule %r((\d+[.]?\d*|\d*[.]\d+)(e[+-]?[0-9]+)?)i, Num::Float
27
+ rule %r/\d+/, Num::Integer
28
+
29
+ rule %r/@\w+/, Keyword::Pseudo
30
+
31
+ rule %r/[-.\w]+:/, Name::Variable
32
+ rule %r/^"[^"]+"/, Name::Variable
33
+ rule %r/\$([-.\w]+|("[^"]+"))\/?/, Name::Variable
34
+
35
+ rule %r/[A-Z]+/i, Keyword
36
+
37
+ rule %r/"[^"]*"/, Str::Double
38
+ rule %r/'[^\r\n\f']'/, Str::Char
39
+
40
+ rule %r/[,()*]/, Punctuation
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,35 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'cpp.rb'
6
+
7
+ class CUDA < Cpp
8
+ title "CUDA"
9
+ desc "Compute Unified Device Architecture, used for programming with NVIDIA GPU"
10
+
11
+ tag 'cuda'
12
+ filenames '*.cu', '*.cuh'
13
+
14
+ def self.keywords
15
+ @keywords ||= super + Set.new(%w(
16
+ __global__ __device__ __host__ __noinline__ __forceinline__
17
+ __constant__ __shared__ __managed__ __restrict__
18
+ ))
19
+ end
20
+
21
+ def self.keywords_type
22
+ @keywords_type ||= super + Set.new(%w(
23
+ char1 char2 char3 char4 uchar1 uchar2 uchar3 uchar4
24
+ short1 short2 short3 short4 ushort1 ushort2 ushort3 ushort4
25
+ int1 int2 int3 int4 uint1 uint2 uint3 uint4
26
+ long1 long2 long3 long4 ulong1 ulong2 ulong3 ulong4
27
+ longlong1 longlong2 longlong3 longlong4
28
+ ulonglong1 ulonglong2 ulonglong3 ulonglong4
29
+ float1 float2 float3 float4 double1 double2 double3 double4
30
+ dim3
31
+ ))
32
+ end
33
+ end
34
+ end
35
+ end