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,54 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class INI < RegexLexer
7
+ title "INI"
8
+ desc 'the INI configuration format'
9
+ tag 'ini'
10
+
11
+ # TODO add more here
12
+ filenames '*.ini', '*.INI', '*.gitconfig'
13
+ mimetypes 'text/x-ini'
14
+
15
+ identifier = /[\w\-.]+/
16
+
17
+ state :basic do
18
+ rule %r/[;#].*?\n/, Comment
19
+ rule %r/\s+/, Text
20
+ rule %r/\\\n/, Str::Escape
21
+ end
22
+
23
+ state :root do
24
+ mixin :basic
25
+
26
+ rule %r/(#{identifier})(\s*)(=)/ do
27
+ groups Name::Property, Text, Punctuation
28
+ push :value
29
+ end
30
+
31
+ rule %r/\[.*?\]/, Name::Namespace
32
+ end
33
+
34
+ state :value do
35
+ rule %r/\n/, Text, :pop!
36
+ mixin :basic
37
+ rule %r/"/, Str, :dq
38
+ rule %r/'.*?'/, Str
39
+ mixin :esc_str
40
+ rule %r/[^\\\n]+/, Str
41
+ end
42
+
43
+ state :dq do
44
+ rule %r/"/, Str, :pop!
45
+ mixin :esc_str
46
+ rule %r/[^\\"]+/m, Str
47
+ end
48
+
49
+ state :esc_str do
50
+ rule %r/\\./m, Str::Escape
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class IO < RegexLexer
7
+ tag 'io'
8
+ title "Io"
9
+ desc 'The IO programming language (http://iolanguage.com)'
10
+ mimetypes 'text/x-iosrc'
11
+ filenames '*.io'
12
+
13
+ def self.detect?(text)
14
+ return true if text.shebang? 'io'
15
+ end
16
+
17
+ def self.constants
18
+ @constants ||= Set.new %w(nil false true)
19
+ end
20
+
21
+ def self.builtins
22
+ @builtins ||= Set.new %w(
23
+ args call clone do doFile doString else elseif for if list
24
+ method return super then
25
+ )
26
+ end
27
+
28
+ state :root do
29
+ rule %r/\s+/m, Text
30
+ rule %r(//.*), Comment::Single
31
+ rule %r(#.*), Comment::Single
32
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
33
+ rule %r(/[+]), Comment::Multiline, :nested_comment
34
+
35
+ rule %r/"(\\\\|\\"|[^"])*"/, Str
36
+
37
+ rule %r(:?:=), Keyword
38
+ rule %r/[()]/, Punctuation
39
+
40
+ rule %r([-=;,*+><!/|^.%&\[\]{}]), Operator
41
+
42
+ rule %r/[A-Z]\w*/, Name::Class
43
+
44
+ rule %r/[a-z_]\w*/ do |m|
45
+ name = m[0]
46
+
47
+ if self.class.constants.include? name
48
+ token Keyword::Constant
49
+ elsif self.class.builtins.include? name
50
+ token Name::Builtin
51
+ else
52
+ token Name
53
+ end
54
+ end
55
+
56
+ rule %r((\d+[.]?\d*|\d*[.]\d+)(e[+-]?[0-9]+)?)i, Num::Float
57
+ rule %r/\d+/, Num::Integer
58
+
59
+ rule %r/@@?/, Keyword
60
+ end
61
+
62
+ state :nested_comment do
63
+ rule %r([^/+]+)m, Comment::Multiline
64
+ rule %r(/[+]), Comment::Multiline, :nested_comment
65
+ rule %r([+]/), Comment::Multiline, :pop!
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,67 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'console.rb'
7
+
8
+ class IRBLexer < ConsoleLexer
9
+ tag 'irb'
10
+ aliases 'pry'
11
+
12
+ desc 'Shell sessions in IRB or Pry'
13
+
14
+ # unlike the superclass, we do not accept any options
15
+ @option_docs = {}
16
+
17
+ def output_lexer
18
+ @output_lexer ||= IRBOutputLexer.new(@options)
19
+ end
20
+
21
+ def lang_lexer
22
+ @lang_lexer ||= Ruby.new(@options)
23
+ end
24
+
25
+ def prompt_regex
26
+ /^.*?(irb|pry).*?[>"*]/
27
+ end
28
+
29
+ def allow_comments?
30
+ true
31
+ end
32
+ end
33
+
34
+ load_lexer 'ruby.rb'
35
+ class IRBOutputLexer < Ruby
36
+ tag 'irb_output'
37
+
38
+ start do
39
+ push :stdout
40
+ end
41
+
42
+ state :has_irb_output do
43
+ rule %r(=>), Punctuation, :pop!
44
+ rule %r/.+?(\n|$)/, Generic::Output
45
+ end
46
+
47
+ state :irb_error do
48
+ rule %r/.+?(\n|$)/, Generic::Error
49
+ mixin :has_irb_output
50
+ end
51
+
52
+ state :stdout do
53
+ rule %r/\w+?(Error|Exception):.+?(\n|$)/, Generic::Error, :irb_error
54
+ mixin :has_irb_output
55
+ end
56
+
57
+ prepend :root do
58
+ rule %r/#</, Keyword::Type, :irb_object
59
+ end
60
+
61
+ state :irb_object do
62
+ rule %r/>/, Keyword::Type, :pop!
63
+ mixin :root
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,91 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Java < RegexLexer
7
+ title "Java"
8
+ desc "The Java programming language (java.com)"
9
+
10
+ tag 'java'
11
+ filenames '*.java'
12
+ mimetypes 'text/x-java'
13
+
14
+ keywords = %w(
15
+ assert break case catch continue default do else finally for
16
+ if goto instanceof new return switch this throw try while
17
+ )
18
+
19
+ declarations = %w(
20
+ abstract const enum extends final implements native private protected
21
+ public static strictfp super synchronized throws transient volatile
22
+ )
23
+
24
+ types = %w(boolean byte char double float int long short var void)
25
+
26
+ id = /[[:alpha:]_][[:word:]]*/
27
+ const_name = /[[:upper:]][[:upper:][:digit:]_]*\b/
28
+ class_name = /[[:upper:]][[:alnum:]]*\b/
29
+
30
+ state :root do
31
+ rule %r/[^\S\n]+/, Text
32
+ rule %r(//.*?$), Comment::Single
33
+ rule %r(/\*.*?\*/)m, Comment::Multiline
34
+ # keywords: go before method names to avoid lexing "throw new XYZ"
35
+ # as a method signature
36
+ rule %r/(?:#{keywords.join('|')})\b/, Keyword
37
+
38
+ rule %r(
39
+ (\s*(?:[a-zA-Z_][a-zA-Z0-9_.\[\]<>]*\s+)+?) # return arguments
40
+ ([a-zA-Z_][a-zA-Z0-9_]*) # method name
41
+ (\s*)(\() # signature start
42
+ )mx do |m|
43
+ # TODO: do this better, this shouldn't need a delegation
44
+ delegate Java, m[1]
45
+ token Name::Function, m[2]
46
+ token Text, m[3]
47
+ token Operator, m[4]
48
+ end
49
+
50
+ rule %r/@#{id}/, Name::Decorator
51
+ rule %r/(?:#{declarations.join('|')})\b/, Keyword::Declaration
52
+ rule %r/(?:#{types.join('|')})\b/, Keyword::Type
53
+ rule %r/(?:true|false|null)\b/, Keyword::Constant
54
+ rule %r/(?:class|interface)\b/, Keyword::Declaration, :class
55
+ rule %r/(?:import|package)\b/, Keyword::Namespace, :import
56
+ rule %r/"(\\\\|\\"|[^"])*"/, Str
57
+ rule %r/'(?:\\.|[^\\]|\\u[0-9a-f]{4})'/, Str::Char
58
+ rule %r/(\.)(#{id})/ do
59
+ groups Operator, Name::Attribute
60
+ end
61
+
62
+ rule %r/#{id}:/, Name::Label
63
+ rule const_name, Name::Constant
64
+ rule class_name, Name::Class
65
+ rule %r/\$?#{id}/, Name
66
+ rule %r/[~^*!%&\[\](){}<>\|+=:;,.\/?-]/, Operator
67
+
68
+ digit = /[0-9]_+[0-9]|[0-9]/
69
+ bin_digit = /[01]_+[01]|[01]/
70
+ oct_digit = /[0-7]_+[0-7]|[0-7]/
71
+ hex_digit = /[0-9a-f]_+[0-9a-f]|[0-9a-f]/i
72
+ rule %r/#{digit}+\.#{digit}+([eE]#{digit}+)?[fd]?/, Num::Float
73
+ rule %r/0b#{bin_digit}+/i, Num::Bin
74
+ rule %r/0x#{hex_digit}+/i, Num::Hex
75
+ rule %r/0#{oct_digit}+/, Num::Oct
76
+ rule %r/#{digit}+L?/, Num::Integer
77
+ rule %r/\n/, Text
78
+ end
79
+
80
+ state :class do
81
+ rule %r/\s+/m, Text
82
+ rule id, Name::Class, :pop!
83
+ end
84
+
85
+ state :import do
86
+ rule %r/\s+/m, Text
87
+ rule %r/[a-z0-9_.]+\*?/i, Name::Namespace, :pop!
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,279 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ # IMPORTANT NOTICE:
7
+ #
8
+ # Please do not copy this lexer and open a pull request
9
+ # for a new language. It will not get merged, you will
10
+ # be unhappy, and kittens will cry.
11
+ #
12
+ class Javascript < RegexLexer
13
+ title "JavaScript"
14
+ desc "JavaScript, the browser scripting language"
15
+
16
+ tag 'javascript'
17
+ aliases 'js'
18
+ filenames '*.js', '*.mjs'
19
+ mimetypes 'application/javascript', 'application/x-javascript',
20
+ 'text/javascript', 'text/x-javascript'
21
+
22
+ def self.detect?(text)
23
+ return 1 if text.shebang?('node')
24
+ return 1 if text.shebang?('jsc')
25
+ # TODO: rhino, spidermonkey, etc
26
+ end
27
+
28
+ state :multiline_comment do
29
+ rule %r([*]/), Comment::Multiline, :pop!
30
+ rule %r([^*/]+), Comment::Multiline
31
+ rule %r([*/]), Comment::Multiline
32
+ end
33
+
34
+ state :comments_and_whitespace do
35
+ rule %r/\s+/, Text
36
+ rule %r/<!--/, Comment # really...?
37
+ rule %r(//.*?$), Comment::Single
38
+ rule %r(/[*]), Comment::Multiline, :multiline_comment
39
+ end
40
+
41
+ state :expr_start do
42
+ mixin :comments_and_whitespace
43
+
44
+ rule %r(/) do
45
+ token Str::Regex
46
+ goto :regex
47
+ end
48
+
49
+ rule %r/[{]/ do
50
+ token Punctuation
51
+ goto :object
52
+ end
53
+
54
+ rule %r//, Text, :pop!
55
+ end
56
+
57
+ state :regex do
58
+ rule %r(/) do
59
+ token Str::Regex
60
+ goto :regex_end
61
+ end
62
+
63
+ rule %r([^/]\n), Error, :pop!
64
+
65
+ rule %r/\n/, Error, :pop!
66
+ rule %r/\[\^/, Str::Escape, :regex_group
67
+ rule %r/\[/, Str::Escape, :regex_group
68
+ rule %r/\\./, Str::Escape
69
+ rule %r{[(][?][:=<!]}, Str::Escape
70
+ rule %r/[{][\d,]+[}]/, Str::Escape
71
+ rule %r/[()?]/, Str::Escape
72
+ rule %r/./, Str::Regex
73
+ end
74
+
75
+ state :regex_end do
76
+ rule %r/[gimuy]+/, Str::Regex, :pop!
77
+ rule(//) { pop! }
78
+ end
79
+
80
+ state :regex_group do
81
+ # specially highlight / in a group to indicate that it doesn't
82
+ # close the regex
83
+ rule %r(/), Str::Escape
84
+
85
+ rule %r([^/]\n) do
86
+ token Error
87
+ pop! 2
88
+ end
89
+
90
+ rule %r/\]/, Str::Escape, :pop!
91
+ rule %r/\\./, Str::Escape
92
+ rule %r/./, Str::Regex
93
+ end
94
+
95
+ state :bad_regex do
96
+ rule %r/[^\n]+/, Error, :pop!
97
+ end
98
+
99
+ def self.keywords
100
+ @keywords ||= Set.new %w(
101
+ as async await break case catch continue debugger default delete
102
+ do else export finally from for if import in instanceof new of
103
+ return super switch this throw try typeof void while yield
104
+ )
105
+ end
106
+
107
+ def self.declarations
108
+ @declarations ||= Set.new %w(
109
+ var let const with function class
110
+ extends constructor get set static
111
+ )
112
+ end
113
+
114
+ def self.reserved
115
+ @reserved ||= Set.new %w(
116
+ enum implements interface
117
+ package private protected public
118
+ )
119
+ end
120
+
121
+ def self.constants
122
+ @constants ||= Set.new %w(true false null NaN Infinity undefined)
123
+ end
124
+
125
+ def self.builtins
126
+ @builtins ||= %w(
127
+ Array Boolean Date Error Function Math netscape
128
+ Number Object Packages RegExp String sun decodeURI
129
+ decodeURIComponent encodeURI encodeURIComponent
130
+ Error eval isFinite isNaN parseFloat parseInt
131
+ document window navigator self global
132
+ Promise Set Map WeakSet WeakMap Symbol Proxy Reflect
133
+ Int8Array Uint8Array Uint8ClampedArray
134
+ Int16Array Uint16Array Uint16ClampedArray
135
+ Int32Array Uint32Array Uint32ClampedArray
136
+ Float32Array Float64Array DataView ArrayBuffer
137
+ )
138
+ end
139
+
140
+ def self.id_regex
141
+ /[$a-z_][a-z0-9_]*/io
142
+ end
143
+
144
+ id = self.id_regex
145
+
146
+ state :root do
147
+ rule %r/\A\s*#!.*?\n/m, Comment::Preproc, :statement
148
+ rule %r((?<=\n)(?=\s|/|<!--)), Text, :expr_start
149
+ mixin :comments_and_whitespace
150
+ rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | ===
151
+ | !== )x,
152
+ Operator, :expr_start
153
+ rule %r([-<>+*%&|\^/!=]=?), Operator, :expr_start
154
+ rule %r/[(\[,]/, Punctuation, :expr_start
155
+ rule %r/;/, Punctuation, :statement
156
+ rule %r/[)\].]/, Punctuation
157
+
158
+ rule %r/`/ do
159
+ token Str::Double
160
+ push :template_string
161
+ end
162
+
163
+ rule %r/[?]/ do
164
+ token Punctuation
165
+ push :ternary
166
+ push :expr_start
167
+ end
168
+
169
+ rule %r/(\@)(\w+)?/ do
170
+ groups Punctuation, Name::Decorator
171
+ push :expr_start
172
+ end
173
+
174
+ rule %r/[{}]/, Punctuation, :statement
175
+
176
+ rule id do |m|
177
+ if self.class.keywords.include? m[0]
178
+ token Keyword
179
+ push :expr_start
180
+ elsif self.class.declarations.include? m[0]
181
+ token Keyword::Declaration
182
+ push :expr_start
183
+ elsif self.class.reserved.include? m[0]
184
+ token Keyword::Reserved
185
+ elsif self.class.constants.include? m[0]
186
+ token Keyword::Constant
187
+ elsif self.class.builtins.include? m[0]
188
+ token Name::Builtin
189
+ else
190
+ token Name::Other
191
+ end
192
+ end
193
+
194
+ rule %r/[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
195
+ rule %r/0x[0-9a-fA-F]+/i, Num::Hex
196
+ rule %r/0o[0-7][0-7_]*/i, Num::Oct
197
+ rule %r/0b[01][01_]*/i, Num::Bin
198
+ rule %r/[0-9]+/, Num::Integer
199
+
200
+ rule %r/"/, Str::Delimiter, :dq
201
+ rule %r/'/, Str::Delimiter, :sq
202
+ rule %r/:/, Punctuation
203
+ end
204
+
205
+ state :dq do
206
+ rule %r/\\[\\nrt"]?/, Str::Escape
207
+ rule %r/[^\\"]+/, Str::Double
208
+ rule %r/"/, Str::Delimiter, :pop!
209
+ end
210
+
211
+ state :sq do
212
+ rule %r/\\[\\nrt']?/, Str::Escape
213
+ rule %r/[^\\']+/, Str::Single
214
+ rule %r/'/, Str::Delimiter, :pop!
215
+ end
216
+
217
+ # braced parts that aren't object literals
218
+ state :statement do
219
+ rule %r/case\b/ do
220
+ token Keyword
221
+ goto :expr_start
222
+ end
223
+
224
+ rule %r/(#{id})(\s*)(:)/ do
225
+ groups Name::Label, Text, Punctuation
226
+ end
227
+
228
+ rule %r/[{}]/, Punctuation
229
+
230
+ mixin :expr_start
231
+ end
232
+
233
+ # object literals
234
+ state :object do
235
+ mixin :comments_and_whitespace
236
+
237
+ rule %r/[{]/ do
238
+ token Punctuation
239
+ push
240
+ end
241
+
242
+ rule %r/[}]/ do
243
+ token Punctuation
244
+ goto :statement
245
+ end
246
+
247
+ rule %r/(#{id})(\s*)(:)/ do
248
+ groups Name::Attribute, Text, Punctuation
249
+ push :expr_start
250
+ end
251
+
252
+ rule %r/:/, Punctuation
253
+ mixin :root
254
+ end
255
+
256
+ # ternary expressions, where <id>: is not a label!
257
+ state :ternary do
258
+ rule %r/:/ do
259
+ token Punctuation
260
+ goto :expr_start
261
+ end
262
+
263
+ mixin :root
264
+ end
265
+
266
+ # template strings
267
+ state :template_string do
268
+ rule %r/\${/, Punctuation, :template_string_expr
269
+ rule %r/`/, Str::Double, :pop!
270
+ rule %r/(\\\\|\\[\$`]|[^\$`]|\$(?!{))*/, Str::Double
271
+ end
272
+
273
+ state :template_string_expr do
274
+ rule %r/}/, Punctuation, :pop!
275
+ mixin :root
276
+ end
277
+ end
278
+ end
279
+ end