rouge 3.18.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 (444) 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 +107 -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/cypher +5 -0
  41. data/lib/rouge/demos/cython +6 -0
  42. data/lib/rouge/demos/d +16 -0
  43. data/lib/rouge/demos/dart +6 -0
  44. data/lib/rouge/demos/datastudio +21 -0
  45. data/lib/rouge/demos/diff +7 -0
  46. data/lib/rouge/demos/digdag +19 -0
  47. data/lib/rouge/demos/docker +9 -0
  48. data/lib/rouge/demos/dot +5 -0
  49. data/lib/rouge/demos/ecl +18 -0
  50. data/lib/rouge/demos/eex +1 -0
  51. data/lib/rouge/demos/eiffel +30 -0
  52. data/lib/rouge/demos/elixir +1 -0
  53. data/lib/rouge/demos/elm +4 -0
  54. data/lib/rouge/demos/epp +4 -0
  55. data/lib/rouge/demos/erb +1 -0
  56. data/lib/rouge/demos/erlang +7 -0
  57. data/lib/rouge/demos/escape +3 -0
  58. data/lib/rouge/demos/factor +5 -0
  59. data/lib/rouge/demos/fortran +22 -0
  60. data/lib/rouge/demos/freefem +16 -0
  61. data/lib/rouge/demos/fsharp +12 -0
  62. data/lib/rouge/demos/gdscript +18 -0
  63. data/lib/rouge/demos/ghc-cmm +23 -0
  64. data/lib/rouge/demos/ghc-core +26 -0
  65. data/lib/rouge/demos/gherkin +17 -0
  66. data/lib/rouge/demos/glsl +14 -0
  67. data/lib/rouge/demos/go +7 -0
  68. data/lib/rouge/demos/gradle +10 -0
  69. data/lib/rouge/demos/graphql +17 -0
  70. data/lib/rouge/demos/groovy +9 -0
  71. data/lib/rouge/demos/hack +5 -0
  72. data/lib/rouge/demos/haml +5 -0
  73. data/lib/rouge/demos/handlebars +7 -0
  74. data/lib/rouge/demos/haskell +6 -0
  75. data/lib/rouge/demos/haxe +5 -0
  76. data/lib/rouge/demos/hcl +7 -0
  77. data/lib/rouge/demos/hocon +8 -0
  78. data/lib/rouge/demos/hql +5 -0
  79. data/lib/rouge/demos/html +8 -0
  80. data/lib/rouge/demos/http +14 -0
  81. data/lib/rouge/demos/hylang +10 -0
  82. data/lib/rouge/demos/idlang +8 -0
  83. data/lib/rouge/demos/igorpro +9 -0
  84. data/lib/rouge/demos/ini +4 -0
  85. data/lib/rouge/demos/io +11 -0
  86. data/lib/rouge/demos/irb +4 -0
  87. data/lib/rouge/demos/irb_output +2 -0
  88. data/lib/rouge/demos/isbl +4 -0
  89. data/lib/rouge/demos/java +5 -0
  90. data/lib/rouge/demos/javascript +1 -0
  91. data/lib/rouge/demos/jinja +9 -0
  92. data/lib/rouge/demos/jsl +3 -0
  93. data/lib/rouge/demos/json +1 -0
  94. data/lib/rouge/demos/json-doc +1 -0
  95. data/lib/rouge/demos/jsonnet +28 -0
  96. data/lib/rouge/demos/jsp +29 -0
  97. data/lib/rouge/demos/jsx +17 -0
  98. data/lib/rouge/demos/julia +11 -0
  99. data/lib/rouge/demos/kotlin +3 -0
  100. data/lib/rouge/demos/lasso +12 -0
  101. data/lib/rouge/demos/liquid +10 -0
  102. data/lib/rouge/demos/literate_coffeescript +3 -0
  103. data/lib/rouge/demos/literate_haskell +7 -0
  104. data/lib/rouge/demos/llvm +20 -0
  105. data/lib/rouge/demos/lua +12 -0
  106. data/lib/rouge/demos/lustre +6 -0
  107. data/lib/rouge/demos/lutin +18 -0
  108. data/lib/rouge/demos/m68k +16 -0
  109. data/lib/rouge/demos/magik +6 -0
  110. data/lib/rouge/demos/make +6 -0
  111. data/lib/rouge/demos/markdown +4 -0
  112. data/lib/rouge/demos/mason +22 -0
  113. data/lib/rouge/demos/mathematica +8 -0
  114. data/lib/rouge/demos/matlab +6 -0
  115. data/lib/rouge/demos/minizinc +23 -0
  116. data/lib/rouge/demos/moonscript +16 -0
  117. data/lib/rouge/demos/mosel +10 -0
  118. data/lib/rouge/demos/msgtrans +4 -0
  119. data/lib/rouge/demos/mxml +22 -0
  120. data/lib/rouge/demos/nasm +26 -0
  121. data/lib/rouge/demos/nesasm +11 -0
  122. data/lib/rouge/demos/nginx +5 -0
  123. data/lib/rouge/demos/nim +27 -0
  124. data/lib/rouge/demos/nix +19 -0
  125. data/lib/rouge/demos/objective_c +18 -0
  126. data/lib/rouge/demos/objective_cpp +17 -0
  127. data/lib/rouge/demos/ocaml +12 -0
  128. data/lib/rouge/demos/openedge +4 -0
  129. data/lib/rouge/demos/opentype_feature_file +6 -0
  130. data/lib/rouge/demos/pascal +14 -0
  131. data/lib/rouge/demos/perl +5 -0
  132. data/lib/rouge/demos/php +3 -0
  133. data/lib/rouge/demos/plaintext +1 -0
  134. data/lib/rouge/demos/plist +11 -0
  135. data/lib/rouge/demos/pony +17 -0
  136. data/lib/rouge/demos/powershell +13 -0
  137. data/lib/rouge/demos/praat +26 -0
  138. data/lib/rouge/demos/prolog +9 -0
  139. data/lib/rouge/demos/prometheus +9 -0
  140. data/lib/rouge/demos/properties +7 -0
  141. data/lib/rouge/demos/protobuf +5 -0
  142. data/lib/rouge/demos/puppet +6 -0
  143. data/lib/rouge/demos/python +6 -0
  144. data/lib/rouge/demos/q +8 -0
  145. data/lib/rouge/demos/qml +9 -0
  146. data/lib/rouge/demos/r +8 -0
  147. data/lib/rouge/demos/racket +24 -0
  148. data/lib/rouge/demos/reasonml +12 -0
  149. data/lib/rouge/demos/rego +8 -0
  150. data/lib/rouge/demos/robot_framework +27 -0
  151. data/lib/rouge/demos/ruby +9 -0
  152. data/lib/rouge/demos/rust +12 -0
  153. data/lib/rouge/demos/sas +13 -0
  154. data/lib/rouge/demos/sass +3 -0
  155. data/lib/rouge/demos/scala +3 -0
  156. data/lib/rouge/demos/scheme +4 -0
  157. data/lib/rouge/demos/scss +5 -0
  158. data/lib/rouge/demos/sed +4 -0
  159. data/lib/rouge/demos/shell +2 -0
  160. data/lib/rouge/demos/sieve +10 -0
  161. data/lib/rouge/demos/slice +10 -0
  162. data/lib/rouge/demos/slim +17 -0
  163. data/lib/rouge/demos/smalltalk +6 -0
  164. data/lib/rouge/demos/smarty +12 -0
  165. data/lib/rouge/demos/sml +4 -0
  166. data/lib/rouge/demos/solidity +13 -0
  167. data/lib/rouge/demos/sparql +6 -0
  168. data/lib/rouge/demos/sqf +14 -0
  169. data/lib/rouge/demos/sql +1 -0
  170. data/lib/rouge/demos/supercollider +11 -0
  171. data/lib/rouge/demos/swift +5 -0
  172. data/lib/rouge/demos/tap +5 -0
  173. data/lib/rouge/demos/tcl +1 -0
  174. data/lib/rouge/demos/terraform +16 -0
  175. data/lib/rouge/demos/tex +1 -0
  176. data/lib/rouge/demos/toml +9 -0
  177. data/lib/rouge/demos/tsx +17 -0
  178. data/lib/rouge/demos/ttcn3 +6 -0
  179. data/lib/rouge/demos/tulip +13 -0
  180. data/lib/rouge/demos/turtle +26 -0
  181. data/lib/rouge/demos/twig +9 -0
  182. data/lib/rouge/demos/typescript +1 -0
  183. data/lib/rouge/demos/vala +8 -0
  184. data/lib/rouge/demos/vb +4 -0
  185. data/lib/rouge/demos/vcl +12 -0
  186. data/lib/rouge/demos/verilog +27 -0
  187. data/lib/rouge/demos/vhdl +23 -0
  188. data/lib/rouge/demos/viml +14 -0
  189. data/lib/rouge/demos/vue +11 -0
  190. data/lib/rouge/demos/wollok +11 -0
  191. data/lib/rouge/demos/xml +2 -0
  192. data/lib/rouge/demos/xojo +14 -0
  193. data/lib/rouge/demos/xpath +2 -0
  194. data/lib/rouge/demos/xquery +22 -0
  195. data/lib/rouge/demos/yaml +4 -0
  196. data/lib/rouge/demos/yang +17 -0
  197. data/lib/rouge/formatter.rb +112 -0
  198. data/lib/rouge/formatters/html.rb +56 -0
  199. data/lib/rouge/formatters/html_inline.rb +31 -0
  200. data/lib/rouge/formatters/html_legacy.rb +45 -0
  201. data/lib/rouge/formatters/html_line_table.rb +53 -0
  202. data/lib/rouge/formatters/html_linewise.rb +23 -0
  203. data/lib/rouge/formatters/html_pygments.rb +18 -0
  204. data/lib/rouge/formatters/html_table.rb +51 -0
  205. data/lib/rouge/formatters/null.rb +20 -0
  206. data/lib/rouge/formatters/terminal256.rb +198 -0
  207. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  208. data/lib/rouge/formatters/tex.rb +92 -0
  209. data/lib/rouge/guesser.rb +57 -0
  210. data/lib/rouge/guessers/disambiguation.rb +136 -0
  211. data/lib/rouge/guessers/filename.rb +27 -0
  212. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  213. data/lib/rouge/guessers/mimetype.rb +16 -0
  214. data/lib/rouge/guessers/modeline.rb +46 -0
  215. data/lib/rouge/guessers/source.rb +31 -0
  216. data/lib/rouge/guessers/util.rb +34 -0
  217. data/lib/rouge/lexer.rb +517 -0
  218. data/lib/rouge/lexers/abap.rb +240 -0
  219. data/lib/rouge/lexers/actionscript.rb +196 -0
  220. data/lib/rouge/lexers/ada.rb +162 -0
  221. data/lib/rouge/lexers/apache.rb +69 -0
  222. data/lib/rouge/lexers/apache/keywords.rb +15 -0
  223. data/lib/rouge/lexers/apex.rb +126 -0
  224. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  225. data/lib/rouge/lexers/apple_script.rb +370 -0
  226. data/lib/rouge/lexers/armasm.rb +145 -0
  227. data/lib/rouge/lexers/awk.rb +162 -0
  228. data/lib/rouge/lexers/batchfile.rb +164 -0
  229. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  230. data/lib/rouge/lexers/biml.rb +43 -0
  231. data/lib/rouge/lexers/bpf.rb +118 -0
  232. data/lib/rouge/lexers/brainfuck.rb +53 -0
  233. data/lib/rouge/lexers/bsl.rb +82 -0
  234. data/lib/rouge/lexers/c.rb +190 -0
  235. data/lib/rouge/lexers/ceylon.rb +96 -0
  236. data/lib/rouge/lexers/cfscript.rb +154 -0
  237. data/lib/rouge/lexers/clean.rb +156 -0
  238. data/lib/rouge/lexers/clojure.rb +113 -0
  239. data/lib/rouge/lexers/cmake.rb +208 -0
  240. data/lib/rouge/lexers/cmhg.rb +34 -0
  241. data/lib/rouge/lexers/coffeescript.rb +215 -0
  242. data/lib/rouge/lexers/common_lisp.rb +346 -0
  243. data/lib/rouge/lexers/conf.rb +25 -0
  244. data/lib/rouge/lexers/console.rb +190 -0
  245. data/lib/rouge/lexers/coq.rb +191 -0
  246. data/lib/rouge/lexers/cpp.rb +89 -0
  247. data/lib/rouge/lexers/crystal.rb +430 -0
  248. data/lib/rouge/lexers/csharp.rb +114 -0
  249. data/lib/rouge/lexers/css.rb +274 -0
  250. data/lib/rouge/lexers/csvs.rb +44 -0
  251. data/lib/rouge/lexers/cuda.rb +35 -0
  252. data/lib/rouge/lexers/cypher.rb +108 -0
  253. data/lib/rouge/lexers/cython.rb +151 -0
  254. data/lib/rouge/lexers/d.rb +177 -0
  255. data/lib/rouge/lexers/dart.rb +105 -0
  256. data/lib/rouge/lexers/datastudio.rb +138 -0
  257. data/lib/rouge/lexers/diff.rb +37 -0
  258. data/lib/rouge/lexers/digdag.rb +70 -0
  259. data/lib/rouge/lexers/docker.rb +51 -0
  260. data/lib/rouge/lexers/dot.rb +69 -0
  261. data/lib/rouge/lexers/ecl.rb +175 -0
  262. data/lib/rouge/lexers/eex.rb +52 -0
  263. data/lib/rouge/lexers/eiffel.rb +66 -0
  264. data/lib/rouge/lexers/elixir.rb +149 -0
  265. data/lib/rouge/lexers/elm.rb +90 -0
  266. data/lib/rouge/lexers/epp.rb +51 -0
  267. data/lib/rouge/lexers/erb.rb +53 -0
  268. data/lib/rouge/lexers/erlang.rb +115 -0
  269. data/lib/rouge/lexers/escape.rb +58 -0
  270. data/lib/rouge/lexers/factor.rb +303 -0
  271. data/lib/rouge/lexers/fortran.rb +178 -0
  272. data/lib/rouge/lexers/freefem.rb +240 -0
  273. data/lib/rouge/lexers/fsharp.rb +120 -0
  274. data/lib/rouge/lexers/gdscript.rb +171 -0
  275. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  276. data/lib/rouge/lexers/ghc_core.rb +151 -0
  277. data/lib/rouge/lexers/gherkin.rb +140 -0
  278. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  279. data/lib/rouge/lexers/glsl.rb +132 -0
  280. data/lib/rouge/lexers/go.rb +175 -0
  281. data/lib/rouge/lexers/gradle.rb +38 -0
  282. data/lib/rouge/lexers/graphql.rb +261 -0
  283. data/lib/rouge/lexers/groovy.rb +111 -0
  284. data/lib/rouge/lexers/hack.rb +49 -0
  285. data/lib/rouge/lexers/haml.rb +226 -0
  286. data/lib/rouge/lexers/handlebars.rb +91 -0
  287. data/lib/rouge/lexers/haskell.rb +199 -0
  288. data/lib/rouge/lexers/haxe.rb +246 -0
  289. data/lib/rouge/lexers/hcl.rb +163 -0
  290. data/lib/rouge/lexers/hocon.rb +86 -0
  291. data/lib/rouge/lexers/hql.rb +139 -0
  292. data/lib/rouge/lexers/html.rb +141 -0
  293. data/lib/rouge/lexers/http.rb +81 -0
  294. data/lib/rouge/lexers/hylang.rb +94 -0
  295. data/lib/rouge/lexers/idlang.rb +312 -0
  296. data/lib/rouge/lexers/igorpro.rb +664 -0
  297. data/lib/rouge/lexers/ini.rb +54 -0
  298. data/lib/rouge/lexers/io.rb +69 -0
  299. data/lib/rouge/lexers/irb.rb +67 -0
  300. data/lib/rouge/lexers/isbl.rb +97 -0
  301. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  302. data/lib/rouge/lexers/java.rb +91 -0
  303. data/lib/rouge/lexers/javascript.rb +279 -0
  304. data/lib/rouge/lexers/jinja.rb +154 -0
  305. data/lib/rouge/lexers/jsl.rb +55 -0
  306. data/lib/rouge/lexers/json.rb +72 -0
  307. data/lib/rouge/lexers/json_doc.rb +26 -0
  308. data/lib/rouge/lexers/jsonnet.rb +152 -0
  309. data/lib/rouge/lexers/jsp.rb +120 -0
  310. data/lib/rouge/lexers/jsx.rb +104 -0
  311. data/lib/rouge/lexers/julia.rb +290 -0
  312. data/lib/rouge/lexers/kotlin.rb +131 -0
  313. data/lib/rouge/lexers/lasso.rb +210 -0
  314. data/lib/rouge/lexers/lasso/keywords.rb +14 -0
  315. data/lib/rouge/lexers/liquid.rb +285 -0
  316. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  317. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  318. data/lib/rouge/lexers/llvm.rb +97 -0
  319. data/lib/rouge/lexers/lua.rb +164 -0
  320. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  321. data/lib/rouge/lexers/lustre.rb +79 -0
  322. data/lib/rouge/lexers/lutin.rb +33 -0
  323. data/lib/rouge/lexers/m68k.rb +143 -0
  324. data/lib/rouge/lexers/magik.rb +127 -0
  325. data/lib/rouge/lexers/make.rb +135 -0
  326. data/lib/rouge/lexers/markdown.rb +182 -0
  327. data/lib/rouge/lexers/mason.rb +110 -0
  328. data/lib/rouge/lexers/mathematica.rb +96 -0
  329. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  330. data/lib/rouge/lexers/matlab.rb +80 -0
  331. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  332. data/lib/rouge/lexers/minizinc.rb +87 -0
  333. data/lib/rouge/lexers/moonscript.rb +115 -0
  334. data/lib/rouge/lexers/mosel.rb +232 -0
  335. data/lib/rouge/lexers/msgtrans.rb +26 -0
  336. data/lib/rouge/lexers/mxml.rb +69 -0
  337. data/lib/rouge/lexers/nasm.rb +72 -0
  338. data/lib/rouge/lexers/nesasm.rb +78 -0
  339. data/lib/rouge/lexers/nginx.rb +72 -0
  340. data/lib/rouge/lexers/nim.rb +154 -0
  341. data/lib/rouge/lexers/nix.rb +211 -0
  342. data/lib/rouge/lexers/objective_c.rb +21 -0
  343. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  344. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  345. data/lib/rouge/lexers/ocaml.rb +65 -0
  346. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  347. data/lib/rouge/lexers/openedge.rb +429 -0
  348. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  349. data/lib/rouge/lexers/pascal.rb +67 -0
  350. data/lib/rouge/lexers/perl.rb +231 -0
  351. data/lib/rouge/lexers/php.rb +231 -0
  352. data/lib/rouge/lexers/php/builtins.rb +203 -0
  353. data/lib/rouge/lexers/plain_text.rb +27 -0
  354. data/lib/rouge/lexers/plist.rb +47 -0
  355. data/lib/rouge/lexers/pony.rb +94 -0
  356. data/lib/rouge/lexers/powershell.rb +230 -0
  357. data/lib/rouge/lexers/praat.rb +351 -0
  358. data/lib/rouge/lexers/prolog.rb +67 -0
  359. data/lib/rouge/lexers/prometheus.rb +123 -0
  360. data/lib/rouge/lexers/properties.rb +52 -0
  361. data/lib/rouge/lexers/protobuf.rb +71 -0
  362. data/lib/rouge/lexers/puppet.rb +129 -0
  363. data/lib/rouge/lexers/python.rb +257 -0
  364. data/lib/rouge/lexers/q.rb +126 -0
  365. data/lib/rouge/lexers/qml.rb +74 -0
  366. data/lib/rouge/lexers/r.rb +89 -0
  367. data/lib/rouge/lexers/racket.rb +568 -0
  368. data/lib/rouge/lexers/reasonml.rb +65 -0
  369. data/lib/rouge/lexers/rego.rb +45 -0
  370. data/lib/rouge/lexers/robot_framework.rb +249 -0
  371. data/lib/rouge/lexers/ruby.rb +454 -0
  372. data/lib/rouge/lexers/rust.rb +193 -0
  373. data/lib/rouge/lexers/sas.rb +563 -0
  374. data/lib/rouge/lexers/sass.rb +75 -0
  375. data/lib/rouge/lexers/sass/common.rb +181 -0
  376. data/lib/rouge/lexers/scala.rb +169 -0
  377. data/lib/rouge/lexers/scheme.rb +113 -0
  378. data/lib/rouge/lexers/scss.rb +35 -0
  379. data/lib/rouge/lexers/sed.rb +173 -0
  380. data/lib/rouge/lexers/shell.rb +201 -0
  381. data/lib/rouge/lexers/sieve.rb +97 -0
  382. data/lib/rouge/lexers/slice.rb +32 -0
  383. data/lib/rouge/lexers/slim.rb +229 -0
  384. data/lib/rouge/lexers/smalltalk.rb +117 -0
  385. data/lib/rouge/lexers/smarty.rb +81 -0
  386. data/lib/rouge/lexers/sml.rb +345 -0
  387. data/lib/rouge/lexers/solidity.rb +185 -0
  388. data/lib/rouge/lexers/sparql.rb +129 -0
  389. data/lib/rouge/lexers/sqf.rb +109 -0
  390. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  391. data/lib/rouge/lexers/sql.rb +161 -0
  392. data/lib/rouge/lexers/supercollider.rb +116 -0
  393. data/lib/rouge/lexers/swift.rb +186 -0
  394. data/lib/rouge/lexers/tap.rb +89 -0
  395. data/lib/rouge/lexers/tcl.rb +193 -0
  396. data/lib/rouge/lexers/terraform.rb +128 -0
  397. data/lib/rouge/lexers/tex.rb +70 -0
  398. data/lib/rouge/lexers/toml.rb +106 -0
  399. data/lib/rouge/lexers/tsx.rb +20 -0
  400. data/lib/rouge/lexers/ttcn3.rb +119 -0
  401. data/lib/rouge/lexers/tulip.rb +108 -0
  402. data/lib/rouge/lexers/turtle.rb +61 -0
  403. data/lib/rouge/lexers/twig.rb +40 -0
  404. data/lib/rouge/lexers/typescript.rb +34 -0
  405. data/lib/rouge/lexers/typescript/common.rb +34 -0
  406. data/lib/rouge/lexers/vala.rb +78 -0
  407. data/lib/rouge/lexers/varnish.rb +168 -0
  408. data/lib/rouge/lexers/vb.rb +165 -0
  409. data/lib/rouge/lexers/verilog.rb +163 -0
  410. data/lib/rouge/lexers/vhdl.rb +98 -0
  411. data/lib/rouge/lexers/viml.rb +102 -0
  412. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  413. data/lib/rouge/lexers/vue.rb +127 -0
  414. data/lib/rouge/lexers/wollok.rb +104 -0
  415. data/lib/rouge/lexers/xml.rb +54 -0
  416. data/lib/rouge/lexers/xojo.rb +61 -0
  417. data/lib/rouge/lexers/xpath.rb +332 -0
  418. data/lib/rouge/lexers/xquery.rb +145 -0
  419. data/lib/rouge/lexers/yaml.rb +376 -0
  420. data/lib/rouge/lexers/yang.rb +147 -0
  421. data/lib/rouge/plugins/redcarpet.rb +37 -0
  422. data/lib/rouge/regex_lexer.rb +443 -0
  423. data/lib/rouge/template_lexer.rb +21 -0
  424. data/lib/rouge/tex_theme_renderer.rb +132 -0
  425. data/lib/rouge/text_analyzer.rb +50 -0
  426. data/lib/rouge/theme.rb +218 -0
  427. data/lib/rouge/themes/base16.rb +131 -0
  428. data/lib/rouge/themes/bw.rb +41 -0
  429. data/lib/rouge/themes/colorful.rb +68 -0
  430. data/lib/rouge/themes/github.rb +72 -0
  431. data/lib/rouge/themes/gruvbox.rb +168 -0
  432. data/lib/rouge/themes/igor_pro.rb +21 -0
  433. data/lib/rouge/themes/magritte.rb +78 -0
  434. data/lib/rouge/themes/molokai.rb +83 -0
  435. data/lib/rouge/themes/monokai.rb +93 -0
  436. data/lib/rouge/themes/monokai_sublime.rb +93 -0
  437. data/lib/rouge/themes/pastie.rb +70 -0
  438. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  439. data/lib/rouge/themes/tulip.rb +70 -0
  440. data/lib/rouge/token.rb +191 -0
  441. data/lib/rouge/util.rb +102 -0
  442. data/lib/rouge/version.rb +8 -0
  443. data/rouge.gemspec +26 -0
  444. metadata +491 -0
@@ -0,0 +1,226 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ # A lexer for the Haml templating system for Ruby.
7
+ # @see http://haml.info
8
+ class Haml < RegexLexer
9
+ include Indentation
10
+
11
+ title "Haml"
12
+ desc "The Haml templating system for Ruby (haml.info)"
13
+
14
+ tag 'haml'
15
+ aliases 'HAML'
16
+
17
+ filenames '*.haml'
18
+ mimetypes 'text/x-haml'
19
+
20
+ option 'filters[filter_name]', 'Mapping of lexers to use for haml :filters'
21
+ attr_reader :filters
22
+ # @option opts :filters
23
+ # A hash of filter name to lexer of how various filters should be
24
+ # highlighted. By default, :javascript, :css, :ruby, and :erb
25
+ # are supported.
26
+ def initialize(opts={})
27
+ super
28
+
29
+ default_filters = {
30
+ 'javascript' => Javascript.new(options),
31
+ 'css' => CSS.new(options),
32
+ 'ruby' => ruby,
33
+ 'erb' => ERB.new(options),
34
+ 'markdown' => Markdown.new(options),
35
+ 'sass' => Sass.new(options),
36
+ # TODO
37
+ # 'textile' => Textile.new(options),
38
+ # 'maruku' => Maruku.new(options),
39
+ }
40
+
41
+ @filters = hash_option(:filters, default_filters) do |v|
42
+ as_lexer(v) || PlainText.new(@options)
43
+ end
44
+ end
45
+
46
+ def ruby
47
+ @ruby ||= Ruby.new(@options)
48
+ end
49
+
50
+ def html
51
+ @html ||= HTML.new(@options)
52
+ end
53
+
54
+ def ruby!(state)
55
+ ruby.reset!
56
+ push state
57
+ end
58
+
59
+ start { ruby.reset!; html.reset! }
60
+
61
+ identifier = /[\w:-]+/
62
+ ruby_var = /[a-z]\w*/
63
+
64
+ # Haml can include " |\n" anywhere,
65
+ # which is ignored and used to wrap long lines.
66
+ # To accomodate this, use this custom faux dot instead.
67
+ dot = /[ ]\|\n(?=.*[ ]\|)|./
68
+
69
+ state :root do
70
+ rule %r/\s*\n/, Text
71
+ rule(/\s*/) { |m| token Text; indentation(m[0]) }
72
+ end
73
+
74
+ state :content do
75
+ mixin :css
76
+ rule(/%#{identifier}/) { token Name::Tag; goto :tag }
77
+ rule %r/!!!#{dot}*\n/, Name::Namespace, :pop!
78
+ rule %r(
79
+ (/) (\[#{dot}*?\]) (#{dot}*\n)
80
+ )x do
81
+ groups Comment, Comment::Special, Comment
82
+ pop!
83
+ end
84
+
85
+ rule %r(/#{dot}*\n) do
86
+ token Comment
87
+ pop!
88
+ starts_block :html_comment_block
89
+ end
90
+
91
+ rule %r/-##{dot}*\n/ do
92
+ token Comment
93
+ pop!
94
+ starts_block :haml_comment_block
95
+ end
96
+
97
+ rule %r/-/ do
98
+ token Punctuation
99
+ reset_stack
100
+ ruby! :ruby_line
101
+ end
102
+
103
+ # filters
104
+ rule %r/:(#{dot}*)\n/ do |m|
105
+ token Name::Decorator
106
+ pop!
107
+ starts_block :filter_block
108
+
109
+ filter_name = m[1].strip
110
+
111
+ @filter_lexer = self.filters[filter_name]
112
+ @filter_lexer.reset! unless @filter_lexer.nil?
113
+
114
+ puts " haml: filter #{filter_name.inspect} #{@filter_lexer.inspect}" if @debug
115
+ end
116
+
117
+ mixin :eval_or_plain
118
+ end
119
+
120
+ state :css do
121
+ rule(/\.#{identifier}/) { token Name::Class; goto :tag }
122
+ rule(/##{identifier}/) { token Name::Function; goto :tag }
123
+ end
124
+
125
+ state :tag do
126
+ mixin :css
127
+ rule(/[{]/) { token Punctuation; ruby! :ruby_tag }
128
+ rule(/\[#{dot}*?\]/) { delegate ruby }
129
+
130
+ rule %r/\(/, Punctuation, :html_attributes
131
+ rule %r/\s*\n/, Text, :pop!
132
+
133
+ # whitespace chompers
134
+ rule %r/[<>]{1,2}(?=[ \t=])/, Punctuation
135
+
136
+ mixin :eval_or_plain
137
+ end
138
+
139
+ state :plain do
140
+ rule(/([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/) { delegate html }
141
+ mixin :interpolation
142
+ rule(/\n/) { token Text; reset_stack }
143
+ end
144
+
145
+ state :eval_or_plain do
146
+ rule %r/[&!]?==/, Punctuation, :plain
147
+ rule %r/[&!]?[=!]/ do
148
+ token Punctuation
149
+ reset_stack
150
+ ruby! :ruby_line
151
+ end
152
+
153
+ rule(//) { push :plain }
154
+ end
155
+
156
+ state :ruby_line do
157
+ rule %r/\n/, Text, :pop!
158
+ rule(/,[ \t]*\n/) { delegate ruby }
159
+ rule %r/[ ]\|[ \t]*\n/, Str::Escape
160
+ rule(/.*?(?=(,$| \|)?[ \t]*$)/) { delegate ruby }
161
+ end
162
+
163
+ state :ruby_tag do
164
+ mixin :ruby_inner
165
+ end
166
+
167
+ state :html_attributes do
168
+ rule %r/\s+/, Text
169
+ rule %r/#{identifier}\s*=/, Name::Attribute, :html_attribute_value
170
+ rule identifier, Name::Attribute
171
+ rule %r/\)/, Text, :pop!
172
+ end
173
+
174
+ state :html_attribute_value do
175
+ rule %r/\s+/, Text
176
+ rule ruby_var, Name::Variable, :pop!
177
+ rule %r/@#{ruby_var}/, Name::Variable::Instance, :pop!
178
+ rule %r/\$#{ruby_var}/, Name::Variable::Global, :pop!
179
+ rule %r/'(\\\\|\\'|[^'\n])*'/, Str, :pop!
180
+ rule %r/"(\\\\|\\"|[^"\n])*"/, Str, :pop!
181
+ end
182
+
183
+ state :html_comment_block do
184
+ rule %r/#{dot}+/, Comment
185
+ mixin :indented_block
186
+ end
187
+
188
+ state :haml_comment_block do
189
+ rule %r/#{dot}+/, Comment::Preproc
190
+ mixin :indented_block
191
+ end
192
+
193
+ state :filter_block do
194
+ rule %r/([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/ do
195
+ if @filter_lexer
196
+ delegate @filter_lexer
197
+ else
198
+ token Name::Decorator
199
+ end
200
+ end
201
+
202
+ mixin :interpolation
203
+ mixin :indented_block
204
+ end
205
+
206
+ state :interpolation do
207
+ rule %r/#[{]/, Str::Interpol, :ruby
208
+ end
209
+
210
+ state :ruby do
211
+ rule %r/[}]/, Str::Interpol, :pop!
212
+ mixin :ruby_inner
213
+ end
214
+
215
+ state :ruby_inner do
216
+ rule(/[{]/) { delegate ruby; push :ruby_inner }
217
+ rule(/[}]/) { delegate ruby; pop! }
218
+ rule(/[^{}]+/) { delegate ruby }
219
+ end
220
+
221
+ state :indented_block do
222
+ rule(/\n/) { token Text; reset_stack }
223
+ end
224
+ end
225
+ end
226
+ end
@@ -0,0 +1,91 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Handlebars < TemplateLexer
7
+ title "Handlebars"
8
+ desc 'the Handlebars and Mustache templating languages'
9
+ tag 'handlebars'
10
+ aliases 'hbs', 'mustache'
11
+ filenames '*.handlebars', '*.hbs', '*.mustache'
12
+ mimetypes 'text/x-handlebars', 'text/x-mustache'
13
+
14
+ id = %r([\w$-]+)
15
+
16
+ state :root do
17
+ # escaped slashes
18
+ rule(/\\{+/) { delegate parent }
19
+
20
+ # block comments
21
+ rule %r/{{!--/, Comment, :comment
22
+ rule %r/{{!.*?}}/, Comment
23
+
24
+ rule %r/{{{?/ do
25
+ token Keyword
26
+ push :stache
27
+ push :open_sym
28
+ end
29
+
30
+ rule(/(.+?)(?=\\|{{)/m) do
31
+ delegate parent
32
+
33
+ # if parent state is attr, then we have an html attribute without quotes
34
+ # pop the parent state to return to the tag state
35
+ if parent.state?('attr')
36
+ parent.pop!
37
+ end
38
+ end
39
+
40
+ # if we get here, there's no more mustache tags, so we eat
41
+ # the rest of the doc
42
+ rule(/.+/m) { delegate parent }
43
+ end
44
+
45
+ state :comment do
46
+ rule(/{{/) { token Comment; push }
47
+ rule(/}}/) { token Comment; pop! }
48
+ rule(/[^{}]+/m) { token Comment }
49
+ rule(/[{}]/) { token Comment }
50
+ end
51
+
52
+ state :stache do
53
+ rule %r/}}}?/, Keyword, :pop!
54
+ rule %r/\|/, Punctuation
55
+ rule %r/~/, Keyword
56
+ rule %r/\s+/m, Text
57
+ rule %r/[=]/, Operator
58
+ rule %r/[\[\]]/, Punctuation
59
+ rule %r/[\(\)]/, Punctuation
60
+ rule %r/[.](?=[}\s])/, Name::Variable
61
+ rule %r/[.][.]/, Name::Variable
62
+ rule %r([/.]), Punctuation
63
+ rule %r/"(\\.|.)*?"/, Str::Double
64
+ rule %r/'(\\.|.)*?'/, Str::Single
65
+ rule %r/\d+(?=}\s)/, Num
66
+ rule %r/(true|false)(?=[}\s])/, Keyword::Constant
67
+ rule %r/else(?=[}\s])/, Keyword
68
+ rule %r/this(?=[}\s])/, Name::Builtin::Pseudo
69
+ rule %r/@#{id}/, Name::Attribute
70
+ rule id, Name::Variable
71
+ end
72
+
73
+ state :open_sym do
74
+ rule %r([#/]) do
75
+ token Keyword
76
+ goto :block_name
77
+ end
78
+
79
+ rule %r/[>^&~]/, Keyword
80
+
81
+ rule(//) { pop! }
82
+ end
83
+
84
+ state :block_name do
85
+ rule %r/if(?=[}\s])/, Keyword
86
+ rule id, Name::Namespace, :pop!
87
+ rule(//) { pop! }
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,199 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Haskell < RegexLexer
7
+ title "Haskell"
8
+ desc "The Haskell programming language (haskell.org)"
9
+
10
+ tag 'haskell'
11
+ aliases 'hs'
12
+ filenames '*.hs', '*.hs-boot'
13
+ mimetypes 'text/x-haskell'
14
+
15
+ def self.detect?(text)
16
+ return true if text.shebang?('runhaskell')
17
+ end
18
+
19
+ reserved = %w(
20
+ _ case class data default deriving do else if in
21
+ infix[lr]? instance let newtype of then type where
22
+ )
23
+
24
+ ascii = %w(
25
+ NUL SOH [SE]TX EOT ENQ ACK BEL BS HT LF VT FF CR S[OI] DLE
26
+ DC[1-4] NAK SYN ETB CAN EM SUB ESC [FGRU]S SP DEL
27
+ )
28
+
29
+ state :basic do
30
+ rule %r/\s+/m, Text
31
+ rule %r/{-#/, Comment::Preproc, :comment_preproc
32
+ rule %r/{-/, Comment::Multiline, :comment
33
+ rule %r/^--\s+\|.*?$/, Comment::Doc
34
+ # this is complicated in order to support custom symbols
35
+ # like -->
36
+ rule %r/--(?![!#\$\%&*+.\/<=>?@\^\|_~]).*?$/, Comment::Single
37
+ end
38
+
39
+ # nested commenting
40
+ state :comment do
41
+ rule %r/-}/, Comment::Multiline, :pop!
42
+ rule %r/{-/, Comment::Multiline, :comment
43
+ rule %r/[^-{}]+/, Comment::Multiline
44
+ rule %r/[-{}]/, Comment::Multiline
45
+ end
46
+
47
+ state :comment_preproc do
48
+ rule %r/-}/, Comment::Preproc, :pop!
49
+ rule %r/{-/, Comment::Preproc, :comment
50
+ rule %r/[^-{}]+/, Comment::Preproc
51
+ rule %r/[-{}]/, Comment::Preproc
52
+ end
53
+
54
+ state :root do
55
+ mixin :basic
56
+
57
+ rule %r/\bimport\b/, Keyword::Reserved, :import
58
+ rule %r/\bmodule\b/, Keyword::Reserved, :module
59
+ rule %r/\b(?:#{reserved.join('|')})\b/, Keyword::Reserved
60
+ # not sure why, but ^ doesn't work here
61
+ # rule %r/^[_a-z][\w']*/, Name::Function
62
+ rule %r/[_a-z][\w']*/, Name
63
+ rule %r/[A-Z][\w']*/, Keyword::Type
64
+ rule %r/'[A-Z]\w+'?/, Keyword::Type # promoted data constructor
65
+
66
+ # lambda operator
67
+ rule %r(\\(?![:!#\$\%&*+.\\/<=>?@^\|~-]+)), Name::Function
68
+ # special operators
69
+ rule %r((<-|::|->|=>|=)(?![:!#\$\%&*+.\\/<=>?@^\|~-]+)), Operator
70
+ # constructor/type operators
71
+ rule %r(:[:!#\$\%&*+.\\/<=>?@^\|~-]*), Operator
72
+ # other operators
73
+ rule %r([:!#\$\%&*+.\\/<=>?@^\|~-]+), Operator
74
+
75
+ rule %r/\d+e[+-]?\d+/i, Num::Float
76
+ rule %r/\d+\.\d+(e[+-]?\d+)?/i, Num::Float
77
+ rule %r/0o[0-7]+/i, Num::Oct
78
+ rule %r/0x[\da-f]+/i, Num::Hex
79
+ rule %r/\d+/, Num::Integer
80
+
81
+ rule %r/'/, Str::Char, :character
82
+ rule %r/"/, Str, :string
83
+
84
+ rule %r/\[\s*\]/, Keyword::Type
85
+ rule %r/\(\s*\)/, Name::Builtin
86
+
87
+ # Quasiquotations
88
+ rule %r/(\[)([_a-z][\w']*)(\|)/ do |m|
89
+ token Operator, m[1]
90
+ token Name, m[2]
91
+ token Operator, m[3]
92
+ push :quasiquotation
93
+ end
94
+
95
+ rule %r/[\[\](),;`{}]/, Punctuation
96
+ end
97
+
98
+ state :import do
99
+ rule %r/\s+/, Text
100
+ rule %r/"/, Str, :string
101
+ rule %r/\bqualified\b/, Keyword
102
+ # import X as Y
103
+ rule %r/([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][a-zA-Z0-9_.]*)/ do
104
+ groups(
105
+ Name::Namespace, # X
106
+ Text, Keyword, # as
107
+ Text, Name # Y
108
+ )
109
+ pop!
110
+ end
111
+
112
+ # import X hiding (functions)
113
+ rule %r/([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()/ do
114
+ groups(
115
+ Name::Namespace, # X
116
+ Text, Keyword, # hiding
117
+ Text, Punctuation # (
118
+ )
119
+ goto :funclist
120
+ end
121
+
122
+ # import X (functions)
123
+ rule %r/([A-Z][\w.]*)(\s+)(\()/ do
124
+ groups(
125
+ Name::Namespace, # X
126
+ Text,
127
+ Punctuation # (
128
+ )
129
+ goto :funclist
130
+ end
131
+
132
+ rule %r/[\w.]+/, Name::Namespace, :pop!
133
+ end
134
+
135
+ state :module do
136
+ rule %r/\s+/, Text
137
+ # module Foo (functions)
138
+ rule %r/([A-Z][\w.]*)(\s+)(\()/ do
139
+ groups Name::Namespace, Text, Punctuation
140
+ push :funclist
141
+ end
142
+
143
+ rule %r/\bwhere\b/, Keyword::Reserved, :pop!
144
+
145
+ rule %r/[A-Z][a-zA-Z0-9_.]*/, Name::Namespace, :pop!
146
+ end
147
+
148
+ state :funclist do
149
+ mixin :basic
150
+ rule %r/[A-Z]\w*/, Keyword::Type
151
+ rule %r/(_[\w\']+|[a-z][\w\']*)/, Name::Function
152
+ rule %r/,/, Punctuation
153
+ rule %r/[:!#\$\%&*+.\\\/<=>?@^\|~-]+/, Operator
154
+ rule %r/\(/, Punctuation, :funclist
155
+ rule %r/\)/, Punctuation, :pop!
156
+ end
157
+
158
+ state :character do
159
+ rule %r/\\/ do
160
+ token Str::Escape
161
+ goto :character_end
162
+ push :escape
163
+ end
164
+
165
+ rule %r/./ do
166
+ token Str::Char
167
+ goto :character_end
168
+ end
169
+ end
170
+
171
+ state :character_end do
172
+ rule %r/'/, Str::Char, :pop!
173
+ rule %r/./, Error, :pop!
174
+ end
175
+
176
+ state :quasiquotation do
177
+ rule %r/\|\]/, Operator, :pop!
178
+ rule %r/[^\|]+/m, Text
179
+ rule %r/\|/, Text
180
+ end
181
+
182
+ state :string do
183
+ rule %r/"/, Str, :pop!
184
+ rule %r/\\/, Str::Escape, :escape
185
+ rule %r/[^\\"]+/, Str
186
+ end
187
+
188
+ state :escape do
189
+ rule %r/[abfnrtv"'&\\]/, Str::Escape, :pop!
190
+ rule %r/\^[\]\[A-Z@\^_]/, Str::Escape, :pop!
191
+ rule %r/#{ascii.join('|')}/, Str::Escape, :pop!
192
+ rule %r/o[0-7]+/i, Str::Escape, :pop!
193
+ rule %r/x[\da-f]+/i, Str::Escape, :pop!
194
+ rule %r/\d+/, Str::Escape, :pop!
195
+ rule %r/\s+\\/, Str::Escape, :pop!
196
+ end
197
+ end
198
+ end
199
+ end