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,75 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'sass/common.rb'
7
+
8
+ class Sass < SassCommon
9
+ include Indentation
10
+
11
+ title "Sass"
12
+ desc 'The Sass stylesheet language language (sass-lang.com)'
13
+
14
+ tag 'sass'
15
+ filenames '*.sass'
16
+ mimetypes 'text/x-sass'
17
+
18
+ id = /[\w-]+/
19
+
20
+ state :root do
21
+ rule %r/[ \t]*\n/, Text
22
+ rule(/[ \t]*/) { |m| token Text; indentation(m[0]) }
23
+ end
24
+
25
+ state :content do
26
+ # block comments
27
+ rule %r(//.*?$) do
28
+ token Comment::Single
29
+ pop!; starts_block :single_comment
30
+ end
31
+
32
+ rule %r(/[*].*?\n) do
33
+ token Comment::Multiline
34
+ pop!; starts_block :multi_comment
35
+ end
36
+
37
+ rule %r/@import\b/, Keyword, :import
38
+
39
+ mixin :content_common
40
+
41
+ rule %r(=#{id}), Name::Function, :value
42
+ rule %r([+]#{id}), Name::Decorator, :value
43
+
44
+ rule %r/:/, Name::Attribute, :old_style_attr
45
+
46
+ rule(/(?=[^\[\n]+?:([^a-z]|$))/) { push :attribute }
47
+
48
+ rule(//) { push :selector }
49
+ end
50
+
51
+ state :single_comment do
52
+ rule %r/.*?$/, Comment::Single, :pop!
53
+ end
54
+
55
+ state :multi_comment do
56
+ rule %r/.*?\n/, Comment::Multiline, :pop!
57
+ end
58
+
59
+ state :import do
60
+ rule %r/[ \t]+/, Text
61
+ rule %r/\S+/, Str
62
+ rule %r/\n/, Text, :pop!
63
+ end
64
+
65
+ state :old_style_attr do
66
+ mixin :attr_common
67
+ rule(//) { pop!; push :value }
68
+ end
69
+
70
+ state :end_section do
71
+ rule(/\n/) { token Text; reset_stack }
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,181 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ # shared states with SCSS
7
+ class SassCommon < RegexLexer
8
+ id = /[\w-]+/
9
+
10
+ state :content_common do
11
+ rule %r/@for\b/, Keyword, :for
12
+ rule %r/@(debug|warn|if|each|while|else|return|media)/, Keyword, :value
13
+
14
+ rule %r/(@mixin)(\s+)(#{id})/ do
15
+ groups Keyword, Text, Name::Function
16
+ push :value
17
+ end
18
+
19
+ rule %r/(@function)(\s+)(#{id})/ do
20
+ groups Keyword, Text, Name::Function
21
+ push :value
22
+ end
23
+
24
+ rule %r/@extend\b/, Keyword, :selector
25
+
26
+ rule %r/(@include)(\s+)(#{id})/ do
27
+ groups Keyword, Text, Name::Decorator
28
+ push :value
29
+ end
30
+
31
+ rule %r/@#{id}/, Keyword, :selector
32
+
33
+ # $variable: assignment
34
+ rule %r/([$]#{id})([ \t]*)(:)/ do
35
+ groups Name::Variable, Text, Punctuation
36
+ push :value
37
+ end
38
+ end
39
+
40
+ state :value do
41
+ mixin :end_section
42
+ rule %r/[ \t]+/, Text
43
+ rule %r/[$]#{id}/, Name::Variable
44
+ rule %r/url[(]/, Str::Other, :string_url
45
+ rule %r/#{id}(?=\s*[(])/, Name::Function
46
+ rule %r/%#{id}/, Name::Decorator
47
+
48
+ # named literals
49
+ rule %r/(true|false)\b/, Name::Builtin::Pseudo
50
+ rule %r/(and|or|not)\b/, Operator::Word
51
+
52
+ # colors and numbers
53
+ rule %r/#[a-z0-9]{1,6}/i, Num::Hex
54
+ rule %r/-?\d+(%|[a-z]+)?/, Num
55
+ rule %r/-?\d*\.\d+(%|[a-z]+)?/, Num::Integer
56
+
57
+ mixin :has_strings
58
+ mixin :has_interp
59
+
60
+ rule %r/[~^*!&%<>\|+=@:,.\/?-]+/, Operator
61
+ rule %r/[\[\]()]+/, Punctuation
62
+ rule %r(/[*]), Comment::Multiline, :inline_comment
63
+ rule %r(//[^\n]*), Comment::Single
64
+
65
+ # identifiers
66
+ rule(id) do |m|
67
+ if CSS.builtins.include? m[0]
68
+ token Name::Builtin
69
+ elsif CSS.constants.include? m[0]
70
+ token Name::Constant
71
+ else
72
+ token Name
73
+ end
74
+ end
75
+ end
76
+
77
+ state :has_interp do
78
+ rule %r/[#][{]/, Str::Interpol, :interpolation
79
+ end
80
+
81
+ state :has_strings do
82
+ rule %r/"/, Str::Double, :dq
83
+ rule %r/'/, Str::Single, :sq
84
+ end
85
+
86
+ state :interpolation do
87
+ rule %r/}/, Str::Interpol, :pop!
88
+ mixin :value
89
+ end
90
+
91
+ state :selector do
92
+ mixin :end_section
93
+
94
+ mixin :has_strings
95
+ mixin :has_interp
96
+ rule %r/[ \t]+/, Text
97
+ rule %r/:/, Name::Decorator, :pseudo_class
98
+ rule %r/[.]/, Name::Class, :class
99
+ rule %r/#/, Name::Namespace, :id
100
+ rule %r/%/, Name::Variable, :placeholder
101
+ rule id, Name::Tag
102
+ rule %r/&/, Keyword
103
+ rule %r/[~^*!&\[\]()<>\|+=@:;,.\/?-]/, Operator
104
+ end
105
+
106
+ state :dq do
107
+ rule %r/"/, Str::Double, :pop!
108
+ mixin :has_interp
109
+ rule %r/(\\.|#(?![{])|[^\n"#])+/, Str::Double
110
+ end
111
+
112
+ state :sq do
113
+ rule %r/'/, Str::Single, :pop!
114
+ mixin :has_interp
115
+ rule %r/(\\.|#(?![{])|[^\n'#])+/, Str::Single
116
+ end
117
+
118
+ state :string_url do
119
+ rule %r/[)]/, Str::Other, :pop!
120
+ rule %r/(\\.|#(?![{])|[^\n)#])+/, Str::Other
121
+ mixin :has_interp
122
+ end
123
+
124
+ state :selector_piece do
125
+ mixin :has_interp
126
+ rule(//) { pop! }
127
+ end
128
+
129
+ state :pseudo_class do
130
+ rule id, Name::Decorator
131
+ mixin :selector_piece
132
+ end
133
+
134
+ state :class do
135
+ rule id, Name::Class
136
+ mixin :selector_piece
137
+ end
138
+
139
+ state :id do
140
+ rule id, Name::Namespace
141
+ mixin :selector_piece
142
+ end
143
+
144
+ state :placeholder do
145
+ rule id, Name::Variable
146
+ mixin :selector_piece
147
+ end
148
+
149
+ state :for do
150
+ rule %r/(from|to|through)/, Operator::Word
151
+ mixin :value
152
+ end
153
+
154
+ state :attr_common do
155
+ mixin :has_interp
156
+ rule id do |m|
157
+ if CSS.attributes.include? m[0]
158
+ token Name::Label
159
+ else
160
+ token Name::Attribute
161
+ end
162
+ end
163
+ end
164
+
165
+ state :attribute do
166
+ mixin :attr_common
167
+
168
+ rule %r/([ \t]*)(:)/ do
169
+ groups Text, Punctuation
170
+ push :value
171
+ end
172
+ end
173
+
174
+ state :inline_comment do
175
+ rule %r/(\\#|#(?=[^\n{])|\*(?=[^\n\/])|[^\n#*])+/, Comment::Multiline
176
+ mixin :has_interp
177
+ rule %r([*]/), Comment::Multiline, :pop!
178
+ end
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,169 @@
1
+ # -*- coding: utf-8 #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Scala < RegexLexer
7
+ title "Scala"
8
+ desc "The Scala programming language (scala-lang.org)"
9
+ tag 'scala'
10
+ aliases 'scala'
11
+ filenames '*.scala', '*.sbt'
12
+
13
+ mimetypes 'text/x-scala', 'application/x-scala'
14
+
15
+ # As documented in the ENBF section of the scala specification
16
+ # http://www.scala-lang.org/docu/files/ScalaReference.pdf
17
+ whitespace = /\p{Space}/
18
+ letter = /[\p{L}$_]/
19
+ upper = /[\p{Lu}$_]/
20
+ digits = /[0-9]/
21
+ parens = /[(){}\[\]]/
22
+ delims = %r([‘’".;,])
23
+
24
+ # negative lookahead to filter out other classes
25
+ op = %r(
26
+ (?!#{whitespace}|#{letter}|#{digits}|#{parens}|#{delims})
27
+ [\u0020-\u007F\p{Sm}\p{So}]
28
+ )x
29
+
30
+ idrest = %r(#{letter}(?:#{letter}|#{digits})*(?:(?<=_)#{op}+)?)x
31
+
32
+ keywords = %w(
33
+ abstract case catch def do else extends final finally for forSome
34
+ if implicit lazy match new override private protected requires return
35
+ sealed super this throw try val var while with yield
36
+ )
37
+
38
+ state :root do
39
+ rule %r/(class|trait|object)(\s+)/ do
40
+ groups Keyword, Text
41
+ push :class
42
+ end
43
+ rule %r/'#{idrest}(?!')/, Str::Symbol
44
+ rule %r/[^\S\n]+/, Text
45
+
46
+ rule %r(//.*), Comment::Single
47
+ rule %r(/\*), Comment::Multiline, :comment
48
+
49
+ rule %r/@#{idrest}/, Name::Decorator
50
+
51
+ rule %r/(def)(\s+)(#{idrest}|#{op}+|`[^`]+`)(\s*)/ do
52
+ groups Keyword, Text, Name::Function, Text
53
+ end
54
+
55
+ rule %r/(val)(\s+)(#{idrest}|#{op}+|`[^`]+`)(\s*)/ do
56
+ groups Keyword, Text, Name::Variable, Text
57
+ end
58
+
59
+ rule %r/(this)(\n*)(\.)(#{idrest})/ do
60
+ groups Keyword, Text, Operator, Name::Property
61
+ end
62
+
63
+ rule %r/(#{idrest}|_)(\n*)(\.)(#{idrest})/ do
64
+ groups Name::Variable, Text, Operator, Name::Property
65
+ end
66
+
67
+ rule %r/#{upper}#{idrest}\b/, Name::Class
68
+
69
+ rule %r/(#{idrest})(#{whitespace}*)(\()/ do
70
+ groups Name::Function, Text, Operator
71
+ end
72
+
73
+ rule %r/(\.)(#{idrest})/ do
74
+ groups Operator, Name::Property
75
+ end
76
+
77
+ rule %r(
78
+ (#{keywords.join("|")})\b|
79
+ (<[%:-]|=>|>:|[#=@_\u21D2\u2190])(\b|(?=\s)|$)
80
+ )x, Keyword
81
+ rule %r/:(?!#{op})/, Keyword, :type
82
+ rule %r/(true|false|null)\b/, Keyword::Constant
83
+ rule %r/(import|package)(\s+)/ do
84
+ groups Keyword, Text
85
+ push :import
86
+ end
87
+
88
+ rule %r/(type)(\s+)/ do
89
+ groups Keyword, Text
90
+ push :type
91
+ end
92
+
93
+ rule %r/""".*?"""(?!")/m, Str
94
+ rule %r/"(\\\\|\\"|[^"])*"/, Str
95
+ rule %r/'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'/, Str::Char
96
+
97
+ rule idrest, Name
98
+ rule %r/`[^`]+`/, Name
99
+
100
+ rule %r/\[/, Operator, :typeparam
101
+ rule %r/[\(\)\{\};,.#]/, Operator
102
+ rule %r/#{op}+/, Operator
103
+
104
+ rule %r/([0-9][0-9]*\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?/, Num::Float
105
+ rule %r/([0-9][0-9]*[fFdD])/, Num::Float
106
+ rule %r/0x[0-9a-fA-F]+/, Num::Hex
107
+ rule %r/[0-9]+L?/, Num::Integer
108
+ rule %r/\n/, Text
109
+ end
110
+
111
+ state :class do
112
+ rule %r/(#{idrest}|#{op}+|`[^`]+`)(\s*)(\[)/ do
113
+ groups Name::Class, Text, Operator
114
+ push :typeparam
115
+ end
116
+
117
+ rule %r/\s+/, Text
118
+ rule %r/{/, Operator, :pop!
119
+ rule %r/\(/, Operator, :pop!
120
+ rule %r(//.*), Comment::Single, :pop!
121
+ rule %r(#{idrest}|#{op}+|`[^`]+`), Name::Class, :pop!
122
+ end
123
+
124
+ state :type do
125
+ rule %r/\s+/, Text
126
+ rule %r/<[%:]|>:|[#_\u21D2]|forSome|type/, Keyword
127
+ rule %r/([,\);}]|=>|=)(\s*)/ do
128
+ groups Operator, Text
129
+ pop!
130
+ end
131
+ rule %r/[\(\{]/, Operator, :type
132
+
133
+ typechunk = /(?:#{idrest}|#{op}+\`[^`]+`)/
134
+ rule %r/(#{typechunk}(?:\.#{typechunk})*)(\s*)(\[)/ do
135
+ groups Keyword::Type, Text, Operator
136
+ pop!
137
+ push :typeparam
138
+ end
139
+
140
+ rule %r/(#{typechunk}(?:\.#{typechunk})*)(\s*)$/ do
141
+ groups Keyword::Type, Text
142
+ pop!
143
+ end
144
+
145
+ rule %r(//.*), Comment::Single, :pop!
146
+ rule %r/\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type
147
+ end
148
+
149
+ state :typeparam do
150
+ rule %r/[\s,]+/, Text
151
+ rule %r/<[%:]|=>|>:|[#_\u21D2]|forSome|type/, Keyword
152
+ rule %r/([\]\)\}])/, Operator, :pop!
153
+ rule %r/[\(\[\{]/, Operator, :typeparam
154
+ rule %r/\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type
155
+ end
156
+
157
+ state :comment do
158
+ rule %r([^/\*]+), Comment::Multiline
159
+ rule %r(/\*), Comment::Multiline, :comment
160
+ rule %r(\*/), Comment::Multiline, :pop!
161
+ rule %r([*/]), Comment::Multiline
162
+ end
163
+
164
+ state :import do
165
+ rule %r((#{idrest}|\.)+), Name::Namespace, :pop!
166
+ end
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,113 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Scheme < RegexLexer
7
+ title "Scheme"
8
+ desc "The Scheme variant of Lisp"
9
+
10
+ tag 'scheme'
11
+ filenames '*.scm', '*.ss'
12
+ mimetypes 'text/x-scheme', 'application/x-scheme'
13
+
14
+ def self.keywords
15
+ @keywords ||= Set.new %w(
16
+ lambda define if else cond and or case let let* letrec begin
17
+ do delay set! => quote quasiquote unquote unquote-splicing
18
+ define-syntax let-syntax letrec-syntax syntax-rules
19
+ )
20
+ end
21
+
22
+ def self.builtins
23
+ @builtins ||= Set.new %w(
24
+ * + - / < <= = > >= abs acos angle append apply asin
25
+ assoc assq assv atan boolean? caaaar caaadr caaar caadar
26
+ caaddr caadr caar cadaar cadadr cadar caddar cadddr caddr
27
+ cadr call-with-current-continuation call-with-input-file
28
+ call-with-output-file call-with-values call/cc car cdaaar cdaadr
29
+ cdaar cdadar cdaddr cdadr cdar cddaar cddadr cddar cdddar cddddr
30
+ cdddr cddr cdr ceiling char->integer char-alphabetic? char-ci<=?
31
+ char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase
32
+ char-lower-case? char-numeric? char-ready? char-upcase
33
+ char-upper-case? char-whitespace? char<=? char<? char=? char>=?
34
+ char>? char? close-input-port close-output-port complex? cons
35
+ cos current-input-port current-output-port denominator
36
+ display dynamic-wind eof-object? eq? equal? eqv? eval
37
+ even? exact->inexact exact? exp expt floor for-each force gcd
38
+ imag-part inexact->exact inexact? input-port? integer->char
39
+ integer? interaction-environment lcm length list list->string
40
+ list->vector list-ref list-tail list? load log magnitude
41
+ make-polar make-rectangular make-string make-vector map
42
+ max member memq memv min modulo negative? newline not
43
+ null-environment null? number->string number? numerator odd?
44
+ open-input-file open-output-file output-port? pair? peek-char
45
+ port? positive? procedure? quotient rational? rationalize
46
+ read read-char real-part real? remainder reverse round
47
+ scheme-report-environment set-car! set-cdr! sin sqrt string
48
+ string->list string->number string->symbol string-append
49
+ string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>?
50
+ string-copy string-fill! string-length string-ref
51
+ string-set! string<=? string<? string=? string>=?
52
+ string>? string? substring symbol->string symbol?
53
+ tan transcript-off transcript-on truncate values vector
54
+ vector->list vector-fill! vector-length vector-ref
55
+ vector-set! vector? with-input-from-file with-output-to-file
56
+ write write-char zero?
57
+ )
58
+ end
59
+
60
+ id = /[a-z0-9!$\%&*+,\/:<=>?@^_~|-]+/i
61
+
62
+ state :root do
63
+ # comments
64
+ rule %r/;.*$/, Comment::Single
65
+ rule %r/\s+/m, Text
66
+ rule %r/-?\d+\.\d+/, Num::Float
67
+ rule %r/-?\d+/, Num::Integer
68
+
69
+ # Racket infinitites
70
+ rule %r/[+-]inf[.][f0]/, Num
71
+
72
+ rule %r/#b[01]+/, Num::Bin
73
+ rule %r/#o[0-7]+/, Num::Oct
74
+ rule %r/#d[0-9]+/, Num::Integer
75
+ rule %r/#x[0-9a-f]+/i, Num::Hex
76
+ rule %r/#[ei][\d.]+/, Num::Other
77
+
78
+ rule %r/"(\\\\|\\"|[^"])*"/, Str
79
+ rule %r/'#{id}/i, Str::Symbol
80
+ rule %r/#\\([()\/'"._!\$%& ?=+-]{1}|[a-z0-9]+)/i,
81
+ Str::Char
82
+ rule %r/#t|#f/, Name::Constant
83
+ rule %r/(?:'|#|`|,@|,|\.)/, Operator
84
+
85
+ rule %r/(['#])(\s*)(\()/m do
86
+ groups Str::Symbol, Text, Punctuation
87
+ end
88
+
89
+ rule %r/\(|\[/, Punctuation, :command
90
+ rule %r/\)|\]/, Punctuation
91
+
92
+ rule id, Name::Variable
93
+ end
94
+
95
+ state :command do
96
+ rule id, Name::Function do |m|
97
+ if self.class.keywords.include? m[0]
98
+ token Keyword
99
+ elsif self.class.builtins.include? m[0]
100
+ token Name::Builtin
101
+ else
102
+ token Name::Function
103
+ end
104
+
105
+ pop!
106
+ end
107
+
108
+ rule(//) { pop! }
109
+ end
110
+
111
+ end
112
+ end
113
+ end