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,32 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'c.rb'
7
+
8
+ class Slice < C
9
+ tag 'slice'
10
+ filenames '*.ice'
11
+ mimetypes 'text/slice'
12
+
13
+ title "Slice"
14
+ desc "Specification Language for Ice (doc.zeroc.com)"
15
+
16
+ def self.keywords
17
+ @keywords ||= Set.new %w(
18
+ extends implements enum interface struct class module dictionary
19
+ const optional out throws exception local idempotent sequence
20
+
21
+ Object LocalObject Value
22
+ )
23
+ end
24
+
25
+ def self.keywords_type
26
+ @keywords_type ||= Set.new %w(
27
+ bool string byte long float double int void short
28
+ )
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,229 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ # A lexer for the Slim tempalte language
7
+ # @see http://slim-lang.org
8
+ class Slim < RegexLexer
9
+ include Indentation
10
+
11
+ title "Slim"
12
+ desc 'The Slim template language'
13
+
14
+ tag 'slim'
15
+
16
+ filenames '*.slim'
17
+
18
+ # Ruby identifier characters
19
+ ruby_chars = /[\w\!\?\@\$]/
20
+
21
+ # Since you are allowed to wrap lines with a backslash, include \\\n in characters
22
+ dot = /(\\\n|.)/
23
+
24
+ def ruby
25
+ @ruby ||= Ruby.new(options)
26
+ end
27
+
28
+ def html
29
+ @html ||= HTML.new(options)
30
+ end
31
+
32
+ def filters
33
+ @filters ||= {
34
+ 'ruby' => ruby,
35
+ 'erb' => ERB.new(options),
36
+ 'javascript' => Javascript.new(options),
37
+ 'css' => CSS.new(options),
38
+ 'coffee' => Coffeescript.new(options),
39
+ 'markdown' => Markdown.new(options),
40
+ 'scss' => Scss.new(options),
41
+ 'sass' => Sass.new(options)
42
+ }
43
+ end
44
+
45
+ start { ruby.reset!; html.reset! }
46
+
47
+ state :root do
48
+ rule %r/\s*\n/, Text
49
+ rule(/\s*/) { |m| token Text; indentation(m[0]) }
50
+ end
51
+
52
+ state :content do
53
+ mixin :css
54
+
55
+ rule %r/\/#{dot}*/, Comment, :indented_block
56
+
57
+ rule %r/(doctype)(\s+)(.*)/ do
58
+ groups Name::Namespace, Text::Whitespace, Text
59
+ pop!
60
+ end
61
+
62
+ # filters, shamelessly ripped from HAML
63
+ rule %r/(\w*):\s*\n/ do |m|
64
+ token Name::Decorator
65
+ pop!
66
+ starts_block :filter_block
67
+
68
+ filter_name = m[1].strip
69
+
70
+ @filter_lexer = self.filters[filter_name]
71
+ @filter_lexer.reset! unless @filter_lexer.nil?
72
+
73
+ puts " slim: filter #{filter_name.inspect} #{@filter_lexer.inspect}" if @debug
74
+ end
75
+
76
+ # Text
77
+ rule %r([\|'](?=\s)) do
78
+ token Punctuation
79
+ pop!
80
+ starts_block :plain_block
81
+ goto :plain_block
82
+ end
83
+
84
+ rule %r/-|==|=/, Punctuation, :ruby_line
85
+
86
+ # Dynamic tags
87
+ rule %r/(\*)(#{ruby_chars}+\(.*?\))/ do |m|
88
+ token Punctuation, m[1]
89
+ delegate ruby, m[2]
90
+ push :tag
91
+ end
92
+
93
+ rule %r/(\*)(#{ruby_chars}+)/ do |m|
94
+ token Punctuation, m[1]
95
+ delegate ruby, m[2]
96
+ push :tag
97
+ end
98
+
99
+ #rule %r/<\w+(?=.*>)/, Keyword::Constant, :tag # Maybe do this, look ahead and stuff
100
+ rule %r((</?[\w\s\=\'\"]+?/?>)) do |m| # Dirty html
101
+ delegate html, m[1]
102
+ pop!
103
+ end
104
+
105
+ # Ordinary slim tags
106
+ rule %r/\w+/, Name::Tag, :tag
107
+
108
+ end
109
+
110
+ state :tag do
111
+ mixin :css
112
+ mixin :indented_block
113
+ mixin :interpolation
114
+
115
+ # Whitespace control
116
+ rule %r/[<>]/, Punctuation
117
+
118
+ # Trim whitespace
119
+ rule %r/\s+?/, Text::Whitespace
120
+
121
+ # Splats, these two might be mergable?
122
+ rule %r/(\*)(#{ruby_chars}+)/ do |m|
123
+ token Punctuation, m[1]
124
+ delegate ruby, m[2]
125
+ end
126
+
127
+ rule %r/(\*)(\{#{dot}+?\})/ do |m|
128
+ token Punctuation, m[1]
129
+ delegate ruby, m[2]
130
+ end
131
+
132
+ # Attributes
133
+ rule %r/([\w\-]+)(\s*)(\=)/ do |m|
134
+ token Name::Attribute, m[1]
135
+ token Text::Whitespace, m[2]
136
+ token Punctuation, m[3]
137
+ push :html_attr
138
+ end
139
+
140
+ # Ruby value
141
+ rule %r/(\=)(#{dot}+)/ do |m|
142
+ token Punctuation, m[1]
143
+ #token Keyword::Constant, m[2]
144
+ delegate ruby, m[2]
145
+ end
146
+
147
+ # HTML Entities
148
+ rule(/&\S*?;/, Name::Entity)
149
+
150
+ rule %r/#{dot}+?/, Text
151
+
152
+ rule %r/\s*\n/, Text::Whitespace, :pop!
153
+ end
154
+
155
+ state :css do
156
+ rule(/\.[\w-]*/) { token Name::Class; goto :tag }
157
+ rule(/#[a-zA-Z][\w:-]*/) { token Name::Function; goto :tag }
158
+ end
159
+
160
+ state :html_attr do
161
+ # Strings, double/single quoted
162
+ rule(/\s*(['"])#{dot}*?\1/, Literal::String, :pop!)
163
+
164
+ # Ruby stuff
165
+ rule(/(#{ruby_chars}+\(.*?\))/) { |m| delegate ruby, m[1]; pop! }
166
+ rule(/(#{ruby_chars}+)/) { |m| delegate ruby, m[1]; pop! }
167
+
168
+ rule %r/\s+/, Text::Whitespace
169
+ end
170
+
171
+ state :ruby_line do
172
+ # Need at top
173
+ mixin :indented_block
174
+
175
+ rule(/[,\\]\s*\n/) { delegate ruby }
176
+ rule %r/[ ]\|[ \t]*\n/, Str::Escape
177
+ rule(/.*?(?=([,\\]$| \|)?[ \t]*$)/) { delegate ruby }
178
+ end
179
+
180
+ state :filter_block do
181
+ rule %r/([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/ do
182
+ if @filter_lexer
183
+ delegate @filter_lexer
184
+ else
185
+ token Name::Decorator
186
+ end
187
+ end
188
+
189
+ mixin :interpolation
190
+ mixin :indented_block
191
+ end
192
+
193
+ state :plain_block do
194
+ mixin :interpolation
195
+
196
+ rule %r((</?[\w\s\=\'\"]+?/?>)) do |m| # Dirty html
197
+ delegate html, m[1]
198
+ end
199
+
200
+ # HTML Entities
201
+ rule(/&\S*?;/, Name::Entity)
202
+
203
+ #rule %r/([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/ do
204
+ rule %r/#{dot}+?/, Text
205
+
206
+ mixin :indented_block
207
+ end
208
+
209
+ state :interpolation do
210
+ rule %r/#[{]/, Str::Interpol, :ruby_interp
211
+ end
212
+
213
+ state :ruby_interp do
214
+ rule %r/[}]/, Str::Interpol, :pop!
215
+ mixin :ruby_interp_inner
216
+ end
217
+
218
+ state :ruby_interp_inner do
219
+ rule(/[{]/) { delegate ruby; push :ruby_interp_inner }
220
+ rule(/[}]/) { delegate ruby; pop! }
221
+ rule(/[^{}]+/) { delegate ruby }
222
+ end
223
+
224
+ state :indented_block do
225
+ rule(/(?<!\\)\n/) { token Text; reset_stack }
226
+ end
227
+ end
228
+ end
229
+ end
@@ -0,0 +1,117 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Smalltalk < RegexLexer
7
+ title "Smalltalk"
8
+ desc 'The Smalltalk programming language'
9
+
10
+ tag 'smalltalk'
11
+ aliases 'st', 'squeak'
12
+ filenames '*.st'
13
+ mimetypes 'text/x-smalltalk'
14
+
15
+ ops = %r([-+*/\\~<>=|&!?,@%])
16
+
17
+ state :root do
18
+ rule %r/(<)(\w+:)(.*?)(>)/ do
19
+ groups Punctuation, Keyword, Text, Punctuation
20
+ end
21
+
22
+ # mixin :squeak_fileout
23
+ mixin :whitespaces
24
+ mixin :method_definition
25
+ rule %r/([|])([\w\s]*)([|])/ do
26
+ groups Punctuation, Name::Variable, Punctuation
27
+ end
28
+ mixin :objects
29
+ rule %r/\^|:=|_/, Operator
30
+
31
+ rule %r/[)}\]]/, Punctuation, :after_object
32
+ rule %r/[({\[!]/, Punctuation
33
+ end
34
+
35
+ state :method_definition do
36
+ rule %r/([a-z]\w*:)(\s*)(\w+)/i do
37
+ groups Name::Function, Text, Name::Variable
38
+ end
39
+
40
+ rule %r/^(\s*)(\b[a-z]\w*\b)(\s*)$/i do
41
+ groups Text, Name::Function, Text
42
+ end
43
+
44
+ rule %r(^(\s*)(#{ops}+)(\s*)(\w+)(\s*)$) do
45
+ groups Text, Name::Function, Text, Name::Variable, Text
46
+ end
47
+ end
48
+
49
+ state :block_variables do
50
+ mixin :whitespaces
51
+ rule %r/(:)(\s*)(\w+)/ do
52
+ groups Operator, Text, Name::Variable
53
+ end
54
+
55
+ rule %r/[|]/, Punctuation, :pop!
56
+
57
+ rule(//) { pop! }
58
+ end
59
+
60
+ state :literals do
61
+ rule %r/'(''|.)*?'/m, Str, :after_object
62
+ rule %r/[$]./, Str::Char, :after_object
63
+ rule %r/#[(]/, Str::Symbol, :parenth
64
+ rule %r/(\d+r)?-?\d+(\.\d+)?(e-?\d+)?/,
65
+ Num, :after_object
66
+ rule %r/#("[^"]*"|#{ops}+|[\w:]+)/,
67
+ Str::Symbol, :after_object
68
+ end
69
+
70
+ state :parenth do
71
+ rule %r/[)]/ do
72
+ token Str::Symbol
73
+ goto :after_object
74
+ end
75
+
76
+ mixin :inner_parenth
77
+ end
78
+
79
+ state :inner_parenth do
80
+ rule %r/#[(]/, Str::Symbol, :inner_parenth
81
+ rule %r/[)]/, Str::Symbol, :pop!
82
+ mixin :whitespaces
83
+ mixin :literals
84
+ rule %r/(#{ops}|[\w:])+/, Str::Symbol
85
+ end
86
+
87
+ state :whitespaces do
88
+ rule %r/! !$/, Keyword # squeak chunk delimiter
89
+ rule %r/\s+/m, Text
90
+ rule %r/".*?"/m, Comment
91
+ end
92
+
93
+ state :objects do
94
+ rule %r/\[/, Punctuation, :block_variables
95
+ rule %r/(self|super|true|false|nil|thisContext)\b/,
96
+ Name::Builtin::Pseudo, :after_object
97
+ rule %r/[A-Z]\w*(?!:)\b/, Name::Class, :after_object
98
+ rule %r/[a-z]\w*(?!:)\b/, Name::Variable, :after_object
99
+ mixin :literals
100
+ end
101
+
102
+ state :after_object do
103
+ mixin :whitespaces
104
+ rule %r/(ifTrue|ifFalse|whileTrue|whileFalse|timesRepeat):/,
105
+ Name::Builtin, :pop!
106
+ rule %r/new(?!:)\b/, Name::Builtin
107
+ rule %r/:=|_/, Operator, :pop!
108
+ rule %r/[a-z]+\w*:/i, Name::Function, :pop!
109
+ rule %r/[a-z]+\w*/i, Name::Function
110
+ rule %r/#{ops}+/, Name::Function, :pop!
111
+ rule %r/[.]/, Punctuation, :pop!
112
+ rule %r/;/, Punctuation
113
+ rule(//) { pop! }
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,81 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Smarty < TemplateLexer
7
+ title "Smarty"
8
+ desc 'Smarty Template Engine'
9
+ tag 'smarty'
10
+ aliases 'smarty'
11
+ filenames '*.tpl', '*.smarty'
12
+ mimetypes 'application/x-smarty', 'text/x-smarty'
13
+
14
+ def self.builtins
15
+ @builtins ||= %w(
16
+ append assign block call capture config_load debug extends
17
+ for foreach foreachelse break continue function if elseif
18
+ else include include_php insert ldelim rdelim literal nocache
19
+ php section sectionelse setfilter strip while
20
+ counter cycle eval fetch html_checkboxes html_image html_options
21
+ html_radios html_select_date html_select_time html_table
22
+ mailto math textformat
23
+ capitalize cat count_characters count_paragraphs
24
+ count_sentences count_words date_format default escape
25
+ from_charset indent lower nl2br regex_replace replace spacify
26
+ string_format strip strip_tags to_charset truncate unescape
27
+ upper wordwrap
28
+ )
29
+ end
30
+
31
+
32
+ state :root do
33
+ rule(/\{\s+/) { delegate parent }
34
+
35
+ # block comments
36
+ rule %r/\{\*.*?\*\}/m, Comment
37
+
38
+ rule %r/\{\/?(?![\s*])/ do
39
+ token Keyword
40
+ push :smarty
41
+ end
42
+
43
+
44
+ rule(/.*?(?={[\/a-zA-Z0-9$#*"'])|.*/m) { delegate parent }
45
+ rule(/.+/m) { delegate parent }
46
+ end
47
+
48
+ state :comment do
49
+ rule(/{\*/) { token Comment; push }
50
+ rule(/\*}/) { token Comment; pop! }
51
+ rule(/[^{}]+/m) { token Comment }
52
+ end
53
+
54
+ state :smarty do
55
+ # allow nested tags
56
+ rule %r/\{\/?(?![\s*])/ do
57
+ token Keyword
58
+ push :smarty
59
+ end
60
+
61
+ rule %r/}/, Keyword, :pop!
62
+ rule %r/\s+/m, Text
63
+ rule %r([~!%^&*()+=|\[\]:;,.<>/@?-]), Operator
64
+ rule %r/#[a-zA-Z_]\w*#/, Name::Variable
65
+ rule %r/\$[a-zA-Z_]\w*(\.\w+)*/, Name::Variable
66
+ rule %r/(true|false|null)\b/, Keyword::Constant
67
+ rule %r/[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?/, Num
68
+ rule %r/"(\\.|.)*?"/, Str::Double
69
+ rule %r/'(\\.|.)*?'/, Str::Single
70
+
71
+ rule %r/([a-zA-Z_]\w*)/ do |m|
72
+ if self.class.builtins.include? m[0]
73
+ token Name::Builtin
74
+ else
75
+ token Name::Attribute
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end