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,211 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Nix < RegexLexer
7
+ title 'Nix'
8
+ desc 'The Nix expression language (https://nixos.org/nix/manual/#ch-expression-language)'
9
+ tag 'nix'
10
+ aliases 'nixos'
11
+ filenames '*.nix'
12
+
13
+ state :whitespaces do
14
+ rule %r/^\s*\n\s*$/m, Text
15
+ rule %r/\s+/, Text
16
+ end
17
+
18
+ state :comment do
19
+ rule %r/#.*$/, Comment
20
+ rule %r(/\*), Comment, :multiline_comment
21
+ end
22
+
23
+ state :multiline_comment do
24
+ rule %r(\*/), Comment, :pop!
25
+ rule %r/./, Comment
26
+ end
27
+
28
+ state :number do
29
+ rule %r/[0-9]/, Num::Integer
30
+ end
31
+
32
+ state :null do
33
+ rule %r/(null)/, Keyword::Constant
34
+ end
35
+
36
+ state :boolean do
37
+ rule %r/(true|false)/, Keyword::Constant
38
+ end
39
+
40
+ state :binding do
41
+ rule %r/[a-zA-Z_][a-zA-Z0-9-]*/, Name::Variable
42
+ end
43
+
44
+ state :path do
45
+ word = "[a-zA-Z0-9\._-]+"
46
+ section = "(\/#{word})"
47
+ prefix = "[a-z\+]+:\/\/"
48
+ root = /#{section}+/.source
49
+ tilde = /~#{section}+/.source
50
+ basic = /#{word}(\/#{word})+/.source
51
+ url = /#{prefix}(\/?#{basic})/.source
52
+ rule %r/(#{root}|#{tilde}|#{basic}|#{url})/, Str::Other
53
+ end
54
+
55
+ state :string do
56
+ rule %r/"/, Str::Double, :double_quoted_string
57
+ rule %r/''/, Str::Double, :indented_string
58
+ end
59
+
60
+ state :string_content do
61
+ rule %r/\\./, Str::Escape
62
+ rule %r/\$\$/, Str::Escape
63
+ rule %r/\${/, Str::Interpol, :string_interpolated_arg
64
+ end
65
+
66
+ state :indented_string_content do
67
+ rule %r/'''/, Str::Escape
68
+ rule %r/''\$/, Str::Escape
69
+ rule %r/\$\$/, Str::Escape
70
+ rule %r/''\\./, Str::Escape
71
+ rule %r/\${/, Str::Interpol, :string_interpolated_arg
72
+ end
73
+
74
+ state :string_interpolated_arg do
75
+ mixin :expression
76
+ rule %r/}/, Str::Interpol, :pop!
77
+ end
78
+
79
+ state :indented_string do
80
+ mixin :indented_string_content
81
+ rule %r/''/, Str::Double, :pop!
82
+ rule %r/./, Str::Double
83
+ end
84
+
85
+ state :double_quoted_string do
86
+ mixin :string_content
87
+ rule %r/"/, Str::Double, :pop!
88
+ rule %r/./, Str::Double
89
+ end
90
+
91
+ state :operator do
92
+ rule %r/(\.|\?|\+\+|\+|!=|!|\/\/|\=\=|&&|\|\||->|\/|\*|-|<|>|<=|=>)/, Operator
93
+ end
94
+
95
+ state :assignment do
96
+ rule %r/(=)/, Operator
97
+ rule %r/(@)/, Operator
98
+ end
99
+
100
+ state :accessor do
101
+ rule %r/(\$)/, Punctuation
102
+ end
103
+
104
+ state :delimiter do
105
+ rule %r/(;|,|:)/, Punctuation
106
+ end
107
+
108
+ state :atom_content do
109
+ mixin :expression
110
+ rule %r/\)/, Punctuation, :pop!
111
+ end
112
+
113
+ state :atom do
114
+ rule %r/\(/, Punctuation, :atom_content
115
+ end
116
+
117
+ state :list do
118
+ rule %r/\[/, Punctuation, :list_content
119
+ end
120
+
121
+ state :list_content do
122
+ rule %r/\]/, Punctuation, :pop!
123
+ mixin :expression
124
+ end
125
+
126
+ state :set do
127
+ rule %r/{/, Punctuation, :set_content
128
+ end
129
+
130
+ state :set_content do
131
+ rule %r/}/, Punctuation, :pop!
132
+ mixin :expression
133
+ end
134
+
135
+ state :expression do
136
+ mixin :ignore
137
+ mixin :comment
138
+ mixin :boolean
139
+ mixin :null
140
+ mixin :number
141
+ mixin :path
142
+ mixin :string
143
+ mixin :keywords
144
+ mixin :operator
145
+ mixin :accessor
146
+ mixin :assignment
147
+ mixin :delimiter
148
+ mixin :binding
149
+ mixin :atom
150
+ mixin :set
151
+ mixin :list
152
+ end
153
+
154
+ state :keywords do
155
+ mixin :keywords_namespace
156
+ mixin :keywords_declaration
157
+ mixin :keywords_conditional
158
+ mixin :keywords_reserved
159
+ mixin :keywords_builtin
160
+ end
161
+
162
+ state :keywords_namespace do
163
+ keywords = %w(with in inherit)
164
+ rule %r/(?:#{keywords.join('|')})\b/, Keyword::Namespace
165
+ end
166
+
167
+ state :keywords_declaration do
168
+ keywords = %w(let)
169
+ rule %r/(?:#{keywords.join('|')})\b/, Keyword::Declaration
170
+ end
171
+
172
+ state :keywords_conditional do
173
+ keywords = %w(if then else)
174
+ rule %r/(?:#{keywords.join('|')})\b/, Keyword
175
+ end
176
+
177
+ state :keywords_reserved do
178
+ keywords = %w(rec assert map)
179
+ rule %r/(?:#{keywords.join('|')})\b/, Keyword::Reserved
180
+ end
181
+
182
+ state :keywords_builtin do
183
+ keywords = %w(
184
+ abort
185
+ baseNameOf
186
+ builtins
187
+ derivation
188
+ fetchTarball
189
+ import
190
+ isNull
191
+ removeAttrs
192
+ throw
193
+ toString
194
+ )
195
+ rule %r/(?:#{keywords.join('|')})\b/, Keyword::Reserved
196
+ end
197
+
198
+ state :ignore do
199
+ mixin :whitespaces
200
+ end
201
+
202
+ state :root do
203
+ mixin :ignore
204
+ mixin :expression
205
+ end
206
+
207
+ start do
208
+ end
209
+ end
210
+ end
211
+ end
@@ -0,0 +1,21 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'c.rb'
7
+ load_lexer 'objective_c/common.rb'
8
+
9
+ class ObjectiveC < C
10
+ extend ObjectiveCCommon
11
+
12
+ tag 'objective_c'
13
+ title "Objective-C"
14
+ desc 'an extension of C commonly used to write Apple software'
15
+ aliases 'objc', 'obj-c', 'obj_c', 'objectivec'
16
+ filenames '*.m', '*.h'
17
+
18
+ mimetypes 'text/x-objective_c', 'application/x-objective_c'
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,184 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ module ObjectiveCCommon
7
+ id = /[a-z$_][a-z0-9$_]*/i
8
+
9
+ def at_keywords
10
+ @at_keywords ||= %w(
11
+ selector private protected public encode synchronized try
12
+ throw catch finally end property synthesize dynamic optional
13
+ interface implementation import autoreleasepool
14
+ )
15
+ end
16
+
17
+ def at_builtins
18
+ @at_builtins ||= %w(true false YES NO)
19
+ end
20
+
21
+ def builtins
22
+ @builtins ||= %w(YES NO nil)
23
+ end
24
+
25
+ def self.extended(base)
26
+ base.prepend :statements do
27
+ rule %r/@"/, base::Str, :string
28
+ rule %r/@'(\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|\\.|[^\\'\n]')/,
29
+ base::Str::Char
30
+ rule %r/@(\d+[.]\d*|[.]\d+|\d+)e[+-]?\d+l?/i,
31
+ base::Num::Float
32
+ rule %r/@(\d+[.]\d*|[.]\d+|\d+f)f?/i, base::Num::Float
33
+ rule %r/@0x\h+[lL]?/, base::Num::Hex
34
+ rule %r/@0[0-7]+l?/i, base::Num::Oct
35
+ rule %r/@\d+l?/, base::Num::Integer
36
+ rule %r/\bin\b/, base::Keyword
37
+
38
+ rule %r/@(?:interface|implementation)\b/, base::Keyword, :objc_classname
39
+ rule %r/@(?:class|protocol)\b/, base::Keyword, :forward_classname
40
+
41
+ rule %r/@([[:alnum:]]+)/ do |m|
42
+ if base.at_keywords.include? m[1]
43
+ token base::Keyword
44
+ elsif base.at_builtins.include? m[1]
45
+ token base::Name::Builtin
46
+ else
47
+ token base::Error
48
+ end
49
+ end
50
+
51
+ rule %r/[?]/, base::Punctuation, :ternary
52
+ rule %r/\[/, base::Punctuation, :message
53
+ rule %r/@\[/, base::Punctuation, :array_literal
54
+ rule %r/@\{/, base::Punctuation, :dictionary_literal
55
+ end
56
+
57
+ id = /[a-z$_][a-z0-9$_]*/i
58
+
59
+ base.state :ternary do
60
+ rule %r/:/, base::Punctuation, :pop!
61
+ mixin :statements
62
+ end
63
+
64
+ base.state :message_shared do
65
+ rule %r/\]/, base::Punctuation, :pop!
66
+ rule %r/\{/, base::Punctuation, :pop!
67
+ rule %r/;/, base::Error
68
+
69
+ mixin :statements
70
+ end
71
+
72
+ base.state :message do
73
+ rule %r/(#{id})(\s*)(:)/ do
74
+ groups(base::Name::Function, base::Text, base::Punctuation)
75
+ goto :message_with_args
76
+ end
77
+
78
+ rule %r/(#{id})(\s*)(\])/ do
79
+ groups(base::Name::Function, base::Text, base::Punctuation)
80
+ pop!
81
+ end
82
+
83
+ mixin :message_shared
84
+ end
85
+
86
+ base.state :message_with_args do
87
+ rule %r/\{/, base::Punctuation, :function
88
+ rule %r/(#{id})(\s*)(:)/ do
89
+ groups(base::Name::Function, base::Text, base::Punctuation)
90
+ pop!
91
+ end
92
+
93
+ mixin :message_shared
94
+ end
95
+
96
+ base.state :array_literal do
97
+ rule %r/]/, base::Punctuation, :pop!
98
+ rule %r/,/, base::Punctuation
99
+ mixin :statements
100
+ end
101
+
102
+ base.state :dictionary_literal do
103
+ rule %r/}/, base::Punctuation, :pop!
104
+ rule %r/,/, base::Punctuation
105
+ mixin :statements
106
+ end
107
+
108
+ base.state :objc_classname do
109
+ mixin :whitespace
110
+
111
+ rule %r/(#{id})(\s*)(:)(\s*)(#{id})/ do
112
+ groups(base::Name::Class, base::Text,
113
+ base::Punctuation, base::Text,
114
+ base::Name::Class)
115
+ pop!
116
+ end
117
+
118
+ rule %r/(#{id})(\s*)([(])(\s*)(#{id})(\s*)([)])/ do
119
+ groups(base::Name::Class, base::Text,
120
+ base::Punctuation, base::Text,
121
+ base::Name::Label, base::Text,
122
+ base::Punctuation)
123
+ pop!
124
+ end
125
+
126
+ rule id, base::Name::Class, :pop!
127
+ end
128
+
129
+ base.state :forward_classname do
130
+ mixin :whitespace
131
+
132
+ rule %r/(#{id})(\s*)(,)(\s*)/ do
133
+ groups(base::Name::Class, base::Text, base::Punctuation, base::Text)
134
+ push
135
+ end
136
+
137
+ rule %r/(#{id})(\s*)(;?)/ do
138
+ groups(base::Name::Class, base::Text, base::Punctuation)
139
+ pop!
140
+ end
141
+ end
142
+
143
+ base.prepend :root do
144
+ rule %r(
145
+ ([-+])(\s*)
146
+ ([(].*?[)])?(\s*)
147
+ (?=#{id}:?)
148
+ )ix do |m|
149
+ token base::Keyword, m[1]
150
+ token base::Text, m[2]
151
+ recurse(m[3]) if m[3]
152
+ token base::Text, m[4]
153
+ push :method_definition
154
+ end
155
+ end
156
+
157
+ base.state :method_definition do
158
+ rule %r/,/, base::Punctuation
159
+ rule %r/[.][.][.]/, base::Punctuation
160
+ rule %r/([(].*?[)])(#{id})/ do |m|
161
+ recurse m[1]; token base::Name::Variable, m[2]
162
+ end
163
+
164
+ rule %r/(#{id})(\s*)(:)/m do
165
+ groups(base::Name::Function, base::Text, base::Punctuation)
166
+ end
167
+
168
+ rule %r/;/, base::Punctuation, :pop!
169
+
170
+ rule %r/{/ do
171
+ token base::Punctuation
172
+ goto :function
173
+ end
174
+
175
+ mixin :inline_whitespace
176
+ rule %r(//.*?\n), base::Comment::Single
177
+ rule %r/\s+/m, base::Text
178
+
179
+ rule(//) { pop! }
180
+ end
181
+ end
182
+ end
183
+ end
184
+ end
@@ -0,0 +1,31 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'cpp.rb'
7
+ load_lexer 'objective_c/common.rb'
8
+
9
+ class ObjectiveCpp < Cpp
10
+ extend ObjectiveCCommon
11
+
12
+ tag 'objective_cpp'
13
+ title "Objective-C++"
14
+ desc 'an extension of C++ uncommonly used to write Apple software'
15
+ aliases 'objcpp', 'obj-cpp', 'obj_cpp', 'objectivecpp',
16
+ 'objc++', 'obj-c++', 'obj_c++', 'objectivec++'
17
+ filenames '*.mm', '*.h'
18
+
19
+ mimetypes 'text/x-objective-c++', 'application/x-objective-c++'
20
+
21
+ prepend :statements do
22
+ rule %r/(\.)(class)/ do
23
+ groups(Operator, Name::Builtin::Pseudo)
24
+ end
25
+ rule %r/(@selector)(\()(class)(\))/ do
26
+ groups(Keyword, Punctuation, Name::Builtin::Pseudo, Punctuation)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end