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,52 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Properties < RegexLexer
7
+ title ".properties"
8
+ desc '.properties config files for Java'
9
+ tag 'properties'
10
+
11
+ filenames '*.properties'
12
+ mimetypes 'text/x-java-properties'
13
+
14
+ identifier = /[\w.-]+/
15
+
16
+ state :basic do
17
+ rule %r/[!#].*?\n/, Comment
18
+ rule %r/\s+/, Text
19
+ rule %r/\\\n/, Str::Escape
20
+ end
21
+
22
+ state :root do
23
+ mixin :basic
24
+
25
+ rule %r/(#{identifier})(\s*)([=:])/ do
26
+ groups Name::Property, Text, Punctuation
27
+ push :value
28
+ end
29
+ end
30
+
31
+ state :value do
32
+ rule %r/\n/, Text, :pop!
33
+ mixin :basic
34
+ rule %r/"/, Str, :dq
35
+ rule %r/'.*?'/, Str
36
+ mixin :esc_str
37
+ rule %r/[^\\\n]+/, Str
38
+ end
39
+
40
+ state :dq do
41
+ rule %r/"/, Str, :pop!
42
+ mixin :esc_str
43
+ rule %r/[^\\"]+/m, Str
44
+ end
45
+
46
+ state :esc_str do
47
+ rule %r/\\u[0-9]{4}/, Str::Escape
48
+ rule %r/\\./m, Str::Escape
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,71 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Protobuf < RegexLexer
7
+ title 'Protobuf'
8
+ desc 'Google\'s language-neutral, platform-neutral, extensible mechanism for serializing structured data'
9
+ tag 'protobuf'
10
+ aliases 'proto'
11
+ filenames '*.proto'
12
+ mimetypes 'text/x-proto'
13
+
14
+ kw = /\b(ctype|default|extensions|import|max|oneof|option|optional|packed|repeated|required|returns|rpc|to)\b/
15
+ datatype = /\b(bool|bytes|double|fixed32|fixed64|float|int32|int64|sfixed32|sfixed64|sint32|sint64|string|uint32|uint64)\b/
16
+
17
+ state :root do
18
+ rule %r/[\s]+/, Text
19
+ rule %r/[,;{}\[\]()]/, Punctuation
20
+ rule %r/\/(\\\n)?\/($|(.|\n)*?[^\\]$)/, Comment::Single
21
+ rule %r/\/(\\\n)?\*(.|\n)*?\*(\\\n)?\//, Comment::Multiline
22
+ rule kw, Keyword
23
+ rule datatype, Keyword::Type
24
+ rule %r/true|false/, Keyword::Constant
25
+ rule %r/(package)(\s+)/ do
26
+ groups Keyword::Namespace, Text
27
+ push :package
28
+ end
29
+
30
+ rule %r/(message|extend)(\s+)/ do
31
+ groups Keyword::Declaration, Text
32
+ push :message
33
+ end
34
+
35
+ rule %r/(enum|group|service)(\s+)/ do
36
+ groups Keyword::Declaration, Text
37
+ push :type
38
+ end
39
+
40
+ rule %r/".*?"/, Str
41
+ rule %r/'.*?'/, Str
42
+ rule %r/(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*/, Num::Float
43
+ rule %r/(\d+\.\d*|\.\d+|\d+[fF])[fF]?/, Num::Float
44
+ rule %r/(\-?(inf|nan))\b/, Num::Float
45
+ rule %r/0x[0-9a-fA-F]+[LlUu]*/, Num::Hex
46
+ rule %r/0[0-7]+[LlUu]*/, Num::Oct
47
+ rule %r/\d+[LlUu]*/, Num::Integer
48
+ rule %r/[+-=]/, Operator
49
+ rule %r/([a-zA-Z_][\w.]*)([ \t]*)(=)/ do
50
+ groups Name::Attribute, Text, Operator
51
+ end
52
+ rule %r/[a-zA-Z_][\w.]*/, Name
53
+ end
54
+
55
+ state :package do
56
+ rule %r/[a-zA-Z_]\w*/, Name::Namespace, :pop!
57
+ rule(//) { pop! }
58
+ end
59
+
60
+ state :message do
61
+ rule %r/[a-zA-Z_]\w*/, Name::Class, :pop!
62
+ rule(//) { pop! }
63
+ end
64
+
65
+ state :type do
66
+ rule %r/[a-zA-Z_]\w*/, Name, :pop!
67
+ rule(//) { pop! }
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,129 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Puppet < RegexLexer
7
+ title "Puppet"
8
+ desc 'The Puppet configuration management language (puppetlabs.org)'
9
+ tag 'puppet'
10
+ aliases 'pp'
11
+ filenames '*.pp'
12
+
13
+ def self.detect?(text)
14
+ return true if text.shebang? 'puppet-apply'
15
+ return true if text.shebang? 'puppet'
16
+ end
17
+
18
+ def self.keywords
19
+ @keywords ||= Set.new %w(
20
+ and case class default define else elsif if in import inherits
21
+ node unless
22
+ )
23
+ end
24
+
25
+ def self.constants
26
+ @constants ||= Set.new %w(
27
+ false true undef
28
+ )
29
+ end
30
+
31
+ def self.metaparameters
32
+ @metaparameters ||= Set.new %w(
33
+ before require notify subscribe
34
+ )
35
+ end
36
+
37
+ id = /[a-z]\w*/
38
+ cap_id = /[A-Z]\w*/
39
+ qualname = /(::)?(#{id}::)*\w+/
40
+
41
+ state :whitespace do
42
+ rule %r/\s+/m, Text
43
+ rule %r/#.*?\n/, Comment
44
+ end
45
+
46
+ state :root do
47
+ mixin :whitespace
48
+
49
+ rule %r/[$]#{qualname}/, Name::Variable
50
+ rule %r/(#{id})(?=\s*[=+]>)/m do |m|
51
+ if self.class.metaparameters.include? m[0]
52
+ token Keyword::Pseudo
53
+ else
54
+ token Name::Property
55
+ end
56
+ end
57
+
58
+ rule %r/(#{qualname})(?=\s*[(])/m, Name::Function
59
+ rule cap_id, Name::Class
60
+
61
+ rule %r/[+=|~-]>|<[|~-]/, Punctuation
62
+ rule %r/[|:}();\[\]]/, Punctuation
63
+
64
+ # HACK for case statements and selectors
65
+ rule %r/{/, Punctuation, :regex_allowed
66
+ rule %r/,/, Punctuation, :regex_allowed
67
+
68
+ rule %r/(in|and|or)\b/, Operator::Word
69
+ rule %r/[=!<>]=/, Operator
70
+ rule %r/[=!]~/, Operator, :regex_allowed
71
+ rule %r([.=<>!+*/-]), Operator
72
+
73
+ rule %r/(class|include)(\s*)(#{qualname})/ do
74
+ groups Keyword, Text, Name::Class
75
+ end
76
+
77
+ rule %r/node\b/, Keyword, :regex_allowed
78
+
79
+ rule %r/'(\\[\\']|[^'])*'/m, Str::Single
80
+ rule %r/"/, Str::Double, :dquotes
81
+
82
+ rule %r/\d+([.]\d+)?(e[+-]\d+)?/, Num
83
+
84
+ # a valid regex. TODO: regexes are only allowed
85
+ # in certain places in puppet.
86
+ rule qualname do |m|
87
+ if self.class.keywords.include? m[0]
88
+ token Keyword
89
+ elsif self.class.constants.include? m[0]
90
+ token Keyword::Constant
91
+ else
92
+ token Name
93
+ end
94
+ end
95
+ end
96
+
97
+ state :regex_allowed do
98
+ mixin :whitespace
99
+ rule %r(/), Str::Regex, :regex
100
+
101
+ rule(//) { pop! }
102
+ end
103
+
104
+ state :regex do
105
+ rule %r(/), Str::Regex, :pop!
106
+ rule %r/\\./, Str::Escape
107
+ rule %r/[(){}]/, Str::Interpol
108
+ rule %r/\[/, Str::Interpol, :regex_class
109
+ rule %r/./, Str::Regex
110
+ end
111
+
112
+ state :regex_class do
113
+ rule %r/\]/, Str::Interpol, :pop!
114
+ rule %r/(?<!\[)-(?=\])/, Str::Regex
115
+ rule %r/-/, Str::Interpol
116
+ rule %r/\\./, Str::Escape
117
+ rule %r/[^\\\]-]+/, Str::Regex
118
+ end
119
+
120
+ state :dquotes do
121
+ rule %r/"/, Str::Double, :pop!
122
+ rule %r/[^$\\"]+/m, Str::Double
123
+ rule %r/\\./m, Str::Escape
124
+ rule %r/[$]#{qualname}/, Name::Variable
125
+ rule %r/[$][{]#{qualname}[}]/, Name::Variable
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,248 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Python < RegexLexer
7
+ title "Python"
8
+ desc "The Python programming language (python.org)"
9
+ tag 'python'
10
+ aliases 'py'
11
+ filenames '*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac',
12
+ '*.bzl', 'BUCK', 'BUILD', 'BUILD.bazel', 'WORKSPACE'
13
+ mimetypes 'text/x-python', 'application/x-python'
14
+
15
+ def self.detect?(text)
16
+ return true if text.shebang?(/pythonw?(?:[23](?:\.\d+)?)?/)
17
+ end
18
+
19
+ def self.keywords
20
+ @keywords ||= %w(
21
+ assert break continue del elif else except exec
22
+ finally for global if lambda pass print raise
23
+ return try while yield as with from import yield
24
+ async await nonlocal
25
+ )
26
+ end
27
+
28
+ def self.builtins
29
+ @builtins ||= %w(
30
+ __import__ abs all any apply ascii basestring bin bool buffer
31
+ bytearray bytes callable chr classmethod cmp coerce compile
32
+ complex delattr dict dir divmod enumerate eval execfile exit
33
+ file filter float format frozenset getattr globals hasattr hash hex id
34
+ input int intern isinstance issubclass iter len list locals
35
+ long map max memoryview min next object oct open ord pow property range
36
+ raw_input reduce reload repr reversed round set setattr slice
37
+ sorted staticmethod str sum super tuple type unichr unicode
38
+ vars xrange zip
39
+ )
40
+ end
41
+
42
+ def self.builtins_pseudo
43
+ @builtins_pseudo ||= %w(self None Ellipsis NotImplemented False True)
44
+ end
45
+
46
+ def self.exceptions
47
+ @exceptions ||= %w(
48
+ ArithmeticError AssertionError AttributeError
49
+ BaseException BlockingIOError BrokenPipeError BufferError
50
+ BytesWarning ChildProcessError ConnectionAbortedError
51
+ ConnectionError ConnectionRefusedError ConnectionResetError
52
+ DeprecationWarning EOFError EnvironmentError
53
+ Exception FileExistsError FileNotFoundError
54
+ FloatingPointError FutureWarning GeneratorExit IOError
55
+ ImportError ImportWarning IndentationError IndexError
56
+ InterruptedError IsADirectoryError KeyError KeyboardInterrupt
57
+ LookupError MemoryError ModuleNotFoundError NameError
58
+ NotADirectoryError NotImplemented NotImplementedError OSError
59
+ OverflowError OverflowWarning PendingDeprecationWarning
60
+ ProcessLookupError RecursionError ReferenceError ResourceWarning
61
+ RuntimeError RuntimeWarning StandardError StopAsyncIteration
62
+ StopIteration SyntaxError SyntaxWarning SystemError SystemExit
63
+ TabError TimeoutError TypeError UnboundLocalError UnicodeDecodeError
64
+ UnicodeEncodeError UnicodeError UnicodeTranslateError
65
+ UnicodeWarning UserWarning ValueError VMSError Warning
66
+ WindowsError ZeroDivisionError
67
+ )
68
+ end
69
+
70
+ identifier = /[a-z_][a-z0-9_]*/i
71
+ dotted_identifier = /[a-z_.][a-z0-9_.]*/i
72
+ state :root do
73
+ rule %r/\n+/m, Text
74
+ rule %r/^(:)(\s*)([ru]{,2}""".*?""")/mi do
75
+ groups Punctuation, Text, Str::Doc
76
+ end
77
+
78
+ rule %r/[^\S\n]+/, Text
79
+ rule %r(#(.*)?\n?), Comment::Single
80
+ rule %r/[\[\]{}:(),;]/, Punctuation
81
+ rule %r/\\\n/, Text
82
+ rule %r/\\/, Text
83
+
84
+ rule %r/(in|is|and|or|not)\b/, Operator::Word
85
+ rule %r/(<<|>>|\/\/|\*\*)=?/, Operator
86
+ rule %r/[-~+\/*%=<>&^|@]=?|!=/, Operator
87
+ rule %r/\.(?![0-9])/, Operator # so it doesn't match float literals
88
+
89
+ rule %r/(from)((?:\\\s|\s)+)(#{dotted_identifier})((?:\\\s|\s)+)(import)/ do
90
+ groups Keyword::Namespace,
91
+ Text,
92
+ Name::Namespace,
93
+ Text,
94
+ Keyword::Namespace
95
+ end
96
+
97
+ rule %r/(import)(\s+)(#{dotted_identifier})/ do
98
+ groups Keyword::Namespace, Text, Name::Namespace
99
+ end
100
+
101
+ rule %r/(def)((?:\s|\\\s)+)/ do
102
+ groups Keyword, Text
103
+ push :funcname
104
+ end
105
+
106
+ rule %r/(class)((?:\s|\\\s)+)/ do
107
+ groups Keyword, Text
108
+ push :classname
109
+ end
110
+
111
+ # TODO: not in python 3
112
+ rule %r/`.*?`/, Str::Backtick
113
+ rule %r/(?:r|ur|ru)"""/i, Str, :raw_tdqs
114
+ rule %r/(?:r|ur|ru)'''/i, Str, :raw_tsqs
115
+ rule %r/(?:r|ur|ru)"/i, Str, :raw_dqs
116
+ rule %r/(?:r|ur|ru)'/i, Str, :raw_sqs
117
+ rule %r/u?"""/i, Str, :tdqs
118
+ rule %r/u?'''/i, Str, :tsqs
119
+ rule %r/u?"/i, Str, :dqs
120
+ rule %r/u?'/i, Str, :sqs
121
+
122
+ rule %r/@#{dotted_identifier}/i, Name::Decorator
123
+
124
+ # using negative lookbehind so we don't match property names
125
+ rule %r/(?<!\.)#{identifier}/ do |m|
126
+ if self.class.keywords.include? m[0]
127
+ token Keyword
128
+ elsif self.class.exceptions.include? m[0]
129
+ token Name::Builtin
130
+ elsif self.class.builtins.include? m[0]
131
+ token Name::Builtin
132
+ elsif self.class.builtins_pseudo.include? m[0]
133
+ token Name::Builtin::Pseudo
134
+ else
135
+ token Name
136
+ end
137
+ end
138
+
139
+ rule identifier, Name
140
+
141
+ digits = /[0-9](_?[0-9])*/
142
+ decimal = /((#{digits})?\.#{digits}|#{digits}\.)/
143
+ exponent = /e[+-]?#{digits}/i
144
+ rule %r/#{decimal}(#{exponent})?j?/i, Num::Float
145
+ rule %r/#{digits}#{exponent}j?/i, Num::Float
146
+ rule %r/#{digits}j/i, Num::Float
147
+
148
+ rule %r/0b(_?[0-1])+/i, Num::Bin
149
+ rule %r/0o(_?[0-7])+/i, Num::Oct
150
+ rule %r/0x(_?[a-f0-9])+/i, Num::Hex
151
+ rule %r/\d+L/, Num::Integer::Long
152
+ rule %r/([1-9](_?[0-9])*|0(_?0)*)/, Num::Integer
153
+ end
154
+
155
+ state :funcname do
156
+ rule identifier, Name::Function, :pop!
157
+ end
158
+
159
+ state :classname do
160
+ rule identifier, Name::Class, :pop!
161
+ end
162
+
163
+ state :raise do
164
+ rule %r/from\b/, Keyword
165
+ rule %r/raise\b/, Keyword
166
+ rule %r/yield\b/, Keyword
167
+ rule %r/\n/, Text, :pop!
168
+ rule %r/;/, Punctuation, :pop!
169
+ mixin :root
170
+ end
171
+
172
+ state :yield do
173
+ mixin :raise
174
+ end
175
+
176
+ state :strings do
177
+ rule %r/%(\([a-z0-9_]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/i, Str::Interpol
178
+ end
179
+
180
+ state :strings_double do
181
+ rule %r/[^\\"%\n]+/, Str
182
+ mixin :strings
183
+ end
184
+
185
+ state :strings_single do
186
+ rule %r/[^\\'%\n]+/, Str
187
+ mixin :strings
188
+ end
189
+
190
+ state :nl do
191
+ rule %r/\n/, Str
192
+ end
193
+
194
+ state :escape do
195
+ rule %r(\\
196
+ ( [\\abfnrtv"']
197
+ | \n
198
+ | N{[a-zA-Z][a-zA-Z ]+[a-zA-Z]}
199
+ | u[a-fA-F0-9]{4}
200
+ | U[a-fA-F0-9]{8}
201
+ | x[a-fA-F0-9]{2}
202
+ | [0-7]{1,3}
203
+ )
204
+ )x, Str::Escape
205
+ end
206
+
207
+ state :raw_escape do
208
+ rule %r/\\./, Str
209
+ end
210
+
211
+ state :dqs do
212
+ rule %r/"/, Str, :pop!
213
+ mixin :escape
214
+ mixin :strings_double
215
+ end
216
+
217
+ state :sqs do
218
+ rule %r/'/, Str, :pop!
219
+ mixin :escape
220
+ mixin :strings_single
221
+ end
222
+
223
+ state :tdqs do
224
+ rule %r/"""/, Str, :pop!
225
+ rule %r/"/, Str
226
+ mixin :escape
227
+ mixin :strings_double
228
+ mixin :nl
229
+ end
230
+
231
+ state :tsqs do
232
+ rule %r/'''/, Str, :pop!
233
+ rule %r/'/, Str
234
+ mixin :escape
235
+ mixin :strings_single
236
+ mixin :nl
237
+ end
238
+
239
+ %w(tdqs tsqs dqs sqs).each do |qtype|
240
+ state :"raw_#{qtype}" do
241
+ mixin :raw_escape
242
+ mixin :"#{qtype}"
243
+ end
244
+ end
245
+
246
+ end
247
+ end
248
+ end