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,96 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Ceylon < RegexLexer
7
+ tag 'ceylon'
8
+ filenames '*.ceylon'
9
+ mimetypes 'text/x-ceylon'
10
+
11
+ title "Ceylon"
12
+ desc 'Say more, more clearly.'
13
+
14
+ state :whitespace do
15
+ rule %r([^\S\n]+), Text
16
+ rule %r(//.*?\n), Comment::Single
17
+ rule %r(/\*), Comment::Multiline
18
+ end
19
+
20
+ state :root do
21
+ mixin :whitespace
22
+
23
+ rule %r((shared|abstract|formal|default|actual|variable|deprecated|small|
24
+ late|literal|doc|by|see|throws|optional|license|tagged|final|native|
25
+ annotation|sealed)\b), Name::Decorator
26
+
27
+ rule %r((break|case|catch|continue|else|finally|for|in|
28
+ if|return|switch|this|throw|try|while|is|exists|dynamic|
29
+ nonempty|then|outer|assert|let)\b), Keyword
30
+
31
+ rule %r((abstracts|extends|satisfies|super|given|of|out|assign)\b), Keyword::Declaration
32
+
33
+ rule %r((function|value|void|new)\b), Keyword::Type
34
+
35
+ rule %r((assembly|module|package)(\s+)) do
36
+ groups Keyword::Namespace, Text
37
+ push :import
38
+ end
39
+
40
+ rule %r((true|false|null)\b), Keyword::Constant
41
+
42
+ rule %r((class|interface|object|alias)(\s+)) do
43
+ groups Keyword::Declaration, Text
44
+ push :class
45
+ end
46
+
47
+ rule %r((import)(\s+)) do
48
+ groups Keyword::Namespace, Text
49
+ push :import
50
+ end
51
+
52
+ rule %r("(\\\\|\\"|[^"])*"), Literal::String
53
+ rule %r('\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'), Literal::String::Char
54
+ rule %r(".*``.*``.*"', String::Interpol
55
+ rule %r(\.)([a-z_]\w*)) do
56
+ groups Operator, Name::Attribute
57
+ end
58
+ rule %r([a-zA-Z_]\w*:), Name::Label
59
+ rule %r((\\I[a-z]|[A-Z])\w*), Name::Decorator
60
+ rule %r([a-zA-Z_]\w*), Name
61
+ rule %r([~^*!%&\[\](){}<>|+=:;,./?`-]), Operator
62
+ rule %r(\d{1,3}(_\d{3})+\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
63
+ rule %r(\d{1,3}(_\d{3})+\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
64
+ Literal::Number::Float
65
+ rule %r([0-9][0-9]*\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
66
+ rule %r([0-9][0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
67
+ Literal::Number::Float
68
+ rule %r(#([0-9a-fA-F]{4})(_[0-9a-fA-F]{4})+), Literal::Number::Hex
69
+ rule %r(#[0-9a-fA-F]+), Literal::Number::Hex
70
+ rule %r(\$([01]{4})(_[01]{4})+), Literal::Number::Bin
71
+ rule %r(\$[01]+), Literal::Number::Bin
72
+ rule %r(\d{1,3}(_\d{3})+[kMGTP]?), Literal::Number::Integer
73
+ rule %r([0-9]+[kMGTP]?), Literal::Number::Integer
74
+ rule %r(\n), Text
75
+
76
+ end
77
+
78
+ state :class do
79
+ mixin :whitespace
80
+ rule %r([A-Za-z_]\w*), Name::Class, :pop!
81
+ end
82
+
83
+ state :import do
84
+ rule %r([a-z][\w.]*), Name::Namespace, :pop!
85
+ rule %r("(\\\\|\\"|[^"])*"), Literal::String, :pop!
86
+ end
87
+
88
+ state :comment do
89
+ rule %r([^*/]), Comment.Multiline
90
+ rule %r(/\*), Comment::Multiline, :push!
91
+ rule %r(\*/), Comment::Multiline, :pop!
92
+ rule %r([*/]), Comment::Multiline
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,154 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+
7
+ class Cfscript < RegexLexer
8
+ title "CFScript"
9
+ desc 'CFScript, the CFML scripting language'
10
+ tag 'cfscript'
11
+ aliases 'cfc'
12
+ filenames '*.cfc'
13
+
14
+ def self.keywords
15
+ @keywords ||= %w(
16
+ if else var xml default break switch do try catch throw in continue for return while required
17
+ )
18
+ end
19
+
20
+ def self.declarations
21
+ @declarations ||= %w(
22
+ component property function remote public package private
23
+ )
24
+ end
25
+
26
+ def self.types
27
+ @types ||= %w(
28
+ any array binary boolean component date guid numeric query string struct uuid void xml
29
+ )
30
+ end
31
+
32
+ constants = %w(application session client cookie super this variables arguments cgi)
33
+
34
+
35
+ operators = %w(\+\+ -- && \|\| <= >= < > == != mod eq lt gt lte gte not is and or xor eqv imp equal contains \? )
36
+ dotted_id = /[$a-zA-Z_][a-zA-Z0-9_.]*/
37
+
38
+ state :root do
39
+ mixin :comments_and_whitespace
40
+ rule %r/(?:#{operators.join('|')}|does not contain|greater than(?: or equal to)?|less than(?: or equal to)?)\b/i, Operator, :expr_start
41
+ rule %r([-<>+*%&|\^/!=]=?), Operator, :expr_start
42
+
43
+ rule %r/[(\[,]/, Punctuation, :expr_start
44
+ rule %r/;/, Punctuation, :statement
45
+ rule %r/[)\].]/, Punctuation
46
+
47
+ rule %r/[?]/ do
48
+ token Punctuation
49
+ push :ternary
50
+ push :expr_start
51
+ end
52
+
53
+ rule %r/[{}]/, Punctuation, :statement
54
+
55
+ rule %r/(?:#{constants.join('|')})\b/, Name::Constant
56
+ rule %r/(?:true|false|null)\b/, Keyword::Constant
57
+ rule %r/import\b/, Keyword::Namespace, :import
58
+ rule %r/(#{dotted_id})(\s*)(:)(\s*)/ do
59
+ groups Name, Text, Punctuation, Text
60
+ push :expr_start
61
+ end
62
+
63
+ rule %r/([A-Za-z_$][\w.]*)(\s*)(\()/ do |m|
64
+ if self.class.keywords.include? m[1]
65
+ token Keyword, m[1]
66
+ token Text, m[2]
67
+ token Punctuation, m[3]
68
+ else
69
+ token Name::Function, m[1]
70
+ token Text, m[2]
71
+ token Punctuation, m[3]
72
+ end
73
+ end
74
+
75
+ rule dotted_id do |m|
76
+ if self.class.declarations.include? m[0]
77
+ token Keyword::Declaration
78
+ push :expr_start
79
+ elsif self.class.keywords.include? m[0]
80
+ token Keyword
81
+ push :expr_start
82
+ elsif self.class.types.include? m[0]
83
+ token Keyword::Type
84
+ push :expr_start
85
+ else
86
+ token Name::Other
87
+ end
88
+ end
89
+
90
+ rule %r/[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
91
+ rule %r/0x[0-9a-fA-F]+/, Num::Hex
92
+ rule %r/[0-9]+/, Num::Integer
93
+ rule %r/"(\\\\|\\"|[^"])*"/, Str::Double
94
+ rule %r/'(\\\\|\\'|[^'])*'/, Str::Single
95
+
96
+ end
97
+
98
+ # same as java, broken out
99
+ state :comments_and_whitespace do
100
+ rule %r/\s+/, Text
101
+ rule %r(//.*?$), Comment::Single
102
+ rule %r(/\*.*?\*/)m, Comment::Multiline
103
+ end
104
+
105
+ state :expr_start do
106
+ mixin :comments_and_whitespace
107
+
108
+ rule %r/[{]/, Punctuation, :object
109
+
110
+ rule %r//, Text, :pop!
111
+ end
112
+
113
+ state :statement do
114
+
115
+ rule %r/[{}]/, Punctuation
116
+
117
+ mixin :expr_start
118
+ end
119
+
120
+ # object literals
121
+ state :object do
122
+ mixin :comments_and_whitespace
123
+ rule %r/[}]/ do
124
+ token Punctuation
125
+ push :expr_start
126
+ end
127
+
128
+ rule %r/(#{dotted_id})(\s*)(:)/ do
129
+ groups Name::Other, Text, Punctuation
130
+ push :expr_start
131
+ end
132
+
133
+ rule %r/:/, Punctuation
134
+ mixin :root
135
+ end
136
+
137
+ # ternary expressions, where <dotted_id>: is not a label!
138
+ state :ternary do
139
+ rule %r/:/ do
140
+ token Punctuation
141
+ goto :expr_start
142
+ end
143
+
144
+ mixin :root
145
+ end
146
+
147
+ state :import do
148
+ rule %r/\s+/m, Text
149
+ rule %r/[a-z0-9_.]+\*?/i, Name::Namespace, :pop!
150
+ end
151
+
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,156 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Clean < RegexLexer
7
+ title "Clean"
8
+ desc "The Clean programming language (clean.cs.ru.nl)"
9
+
10
+ tag 'clean'
11
+ filenames '*.dcl', '*.icl'
12
+
13
+ def self.keywords
14
+ @keywords ||= Set.new %w(
15
+ if otherwise
16
+ let in
17
+ with where
18
+ case of
19
+ infix infixl infixr
20
+ class instance
21
+ generic derive
22
+ special
23
+ implementation definition system module
24
+ from import qualified as
25
+ dynamic
26
+ code inline foreign export ccall stdcall
27
+ )
28
+ end
29
+
30
+ # These are literal patterns common to the ABC intermediate language and
31
+ # Clean. Clean has more extensive literal patterns (see :basic below).
32
+ state :common_literals do
33
+ rule %r/'(?:[^'\\]|\\(?:x[0-9a-fA-F]+|\d+|.))'/, Str::Char
34
+
35
+ rule %r/[+~-]?\d+\.\d+(?:E[+-]?\d+)?\b/, Num::Float
36
+ rule %r/[+~-]?\d+E[+-]?\d+\b/, Num::Float
37
+ rule %r/[+~-]?\d+/, Num::Integer
38
+
39
+ rule %r/"/, Str::Double, :string
40
+ end
41
+
42
+ state :basic do
43
+ rule %r/\s+/m, Text::Whitespace
44
+
45
+ rule %r/\/\/\*.*/, Comment::Doc
46
+ rule %r/\/\/.*/, Comment::Single
47
+ rule %r/\/\*\*/, Comment::Doc, :comment_doc
48
+ rule %r/\/\*/, Comment::Multiline, :comment
49
+
50
+ rule %r/[+~-]?0[0-7]+/, Num::Oct
51
+ rule %r/[+~-]?0x[0-9a-fA-F]+/, Num::Hex
52
+ mixin :common_literals
53
+ rule %r/(\[)(\s*)(')(?=.*?'\])/ do
54
+ groups Punctuation, Text::Whitespace, Str::Single, Punctuation
55
+ push :charlist
56
+ end
57
+ end
58
+
59
+ # nested commenting
60
+ state :comment_doc do
61
+ rule %r/\*\//, Comment::Doc, :pop!
62
+ rule %r/\/\/.*/, Comment::Doc # Singleline comments in multiline comments are skipped
63
+ rule %r/\/\*/, Comment::Doc, :comment
64
+ rule %r/[^*\/]+/, Comment::Doc
65
+ rule %r/[*\/]/, Comment::Doc
66
+ end
67
+
68
+ # This is the same as the above, but with Multiline instead of Doc
69
+ state :comment do
70
+ rule %r/\*\//, Comment::Multiline, :pop!
71
+ rule %r/\/\/.*/, Comment::Multiline # Singleline comments in multiline comments are skipped
72
+ rule %r/\/\*/, Comment::Multiline, :comment
73
+ rule %r/[^*\/]+/, Comment::Multiline
74
+ rule %r/[*\/]/, Comment::Multiline
75
+ end
76
+
77
+ state :root do
78
+ mixin :basic
79
+
80
+ rule %r/code(\s+inline)?\s*{/, Comment::Preproc, :abc
81
+
82
+ rule %r/_*[a-z][\w_`]*/ do |m|
83
+ if self.class.keywords.include?(m[0])
84
+ token Keyword
85
+ else
86
+ token Name
87
+ end
88
+ end
89
+
90
+ rule %r/_*[A-Z][\w_`]*/ do |m|
91
+ if m[0]=='True' || m[0]=='False'
92
+ token Keyword::Constant
93
+ else
94
+ token Keyword::Type
95
+ end
96
+ end
97
+
98
+ rule %r/[^\w_\s`]/, Punctuation
99
+ rule %r/_\b/, Punctuation
100
+ end
101
+
102
+ state :escapes do
103
+ rule %r/\\x[0-9a-fA-F]{1,2}/i, Str::Escape
104
+ rule %r/\\d\d{0,3}/i, Str::Escape
105
+ rule %r/\\0[0-7]{0,3}/, Str::Escape
106
+ rule %r/\\[0-7]{1,3}/, Str::Escape
107
+ rule %r/\\[nrfbtv\\"']/, Str::Escape
108
+ end
109
+
110
+ state :string do
111
+ rule %r/"/, Str::Double, :pop!
112
+ mixin :escapes
113
+ rule %r/[^\\"]+/, Str::Double
114
+ end
115
+
116
+ state :charlist do
117
+ rule %r/(')(\])/ do
118
+ groups Str::Single, Punctuation
119
+ pop!
120
+ end
121
+ mixin :escapes
122
+ rule %r/[^\\']/, Str::Single
123
+ end
124
+
125
+ state :abc_basic do
126
+ rule %r/\s+/, Text::Whitespace
127
+ rule %r/\|.*/, Comment::Single
128
+ mixin :common_literals
129
+ end
130
+
131
+ # The ABC intermediate language can be included, similar to C's inline
132
+ # assembly. For some information about ABC, see:
133
+ # https://en.wikipedia.org/wiki/Clean_(programming_language)#The_ABC-Machine
134
+ state :abc do
135
+ mixin :abc_basic
136
+
137
+ rule %r/}/, Comment::Preproc, :pop!
138
+ rule %r/\.\w*/, Keyword, :abc_rest_of_line
139
+ rule %r/[\w_]+/, Name::Builtin, :abc_rest_of_line
140
+ end
141
+
142
+ state :abc_rest_of_line do
143
+ rule %r/\n/, Text::Whitespace, :pop!
144
+ rule %r/}/ do
145
+ token Comment::Preproc
146
+ pop!
147
+ pop!
148
+ end
149
+
150
+ mixin :abc_basic
151
+
152
+ rule %r/\S+/, Name
153
+ end
154
+ end
155
+ end
156
+ end
@@ -0,0 +1,113 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Clojure < RegexLexer
7
+ title "Clojure"
8
+ desc "The Clojure programming language (clojure.org)"
9
+
10
+ tag 'clojure'
11
+ aliases 'clj', 'cljs'
12
+
13
+ filenames '*.clj', '*.cljs', '*.cljc', 'build.boot', '*.edn'
14
+
15
+ mimetypes 'text/x-clojure', 'application/x-clojure'
16
+
17
+ def self.keywords
18
+ @keywords ||= Set.new %w(
19
+ fn def defn defmacro defmethod defmulti defn- defstruct if
20
+ cond let for
21
+ )
22
+ end
23
+
24
+ def self.builtins
25
+ @builtins ||= Set.new %w(
26
+ . .. * + - -> / < <= = == > >= accessor agent agent-errors
27
+ aget alength all-ns alter and append-child apply array-map
28
+ aset aset-boolean aset-byte aset-char aset-double aset-float
29
+ aset-int aset-long aset-short assert assoc await await-for bean
30
+ binding bit-and bit-not bit-or bit-shift-left bit-shift-right
31
+ bit-xor boolean branch? butlast byte cast char children
32
+ class clear-agent-errors comment commute comp comparator
33
+ complement concat conj cons constantly construct-proxy
34
+ contains? count create-ns create-struct cycle dec deref
35
+ difference disj dissoc distinct doall doc dorun doseq dosync
36
+ dotimes doto double down drop drop-while edit end? ensure eval
37
+ every? false? ffirst file-seq filter find find-doc find-ns
38
+ find-var first float flush fnseq frest gensym get-proxy-class
39
+ get hash-map hash-set identical? identity if-let import in-ns
40
+ inc index insert-child insert-left insert-right inspect-table
41
+ inspect-tree instance? int interleave intersection into
42
+ into-array iterate join key keys keyword keyword? last lazy-cat
43
+ lazy-cons left lefts line-seq list* list load load-file locking
44
+ long loop macroexpand macroexpand-1 make-array make-node map
45
+ map-invert map? mapcat max max-key memfn merge merge-with meta
46
+ min min-key name namespace neg? new newline next nil? node not
47
+ not-any? not-every? not= ns-imports ns-interns ns-map ns-name
48
+ ns-publics ns-refers ns-resolve ns-unmap nth nthrest or parse
49
+ partial path peek pop pos? pr pr-str print print-str println
50
+ println-str prn prn-str project proxy proxy-mappings quot
51
+ rand rand-int range re-find re-groups re-matcher re-matches
52
+ re-pattern re-seq read read-line reduce ref ref-set refer rem
53
+ remove remove-method remove-ns rename rename-keys repeat replace
54
+ replicate resolve rest resultset-seq reverse rfirst right
55
+ rights root rrest rseq second select select-keys send send-off
56
+ seq seq-zip seq? set short slurp some sort sort-by sorted-map
57
+ sorted-map-by sorted-set special-symbol? split-at split-with
58
+ str string? struct struct-map subs subvec symbol symbol?
59
+ sync take take-nth take-while test time to-array to-array-2d
60
+ tree-seq true? union up update-proxy val vals var-get var-set
61
+ var? vector vector-zip vector? when when-first when-let
62
+ when-not with-local-vars with-meta with-open with-out-str
63
+ xml-seq xml-zip zero? zipmap zipper'
64
+ )
65
+ end
66
+
67
+ identifier = %r([\w!$%*+,<=>?/.-]+)
68
+ keyword = %r([\w!\#$%*+,<=>?/.-]+)
69
+
70
+ def name_token(name)
71
+ return Keyword if self.class.keywords.include?(name)
72
+ return Name::Builtin if self.class.builtins.include?(name)
73
+ nil
74
+ end
75
+
76
+ state :root do
77
+ rule %r/;.*?$/, Comment::Single
78
+ rule %r/\s+/m, Text::Whitespace
79
+
80
+ rule %r/-?\d+\.\d+/, Num::Float
81
+ rule %r/-?\d+/, Num::Integer
82
+ rule %r/0x-?[0-9a-fA-F]+/, Num::Hex
83
+
84
+ rule %r/"(\\.|[^"])*"/, Str
85
+ rule %r/'#{keyword}/, Str::Symbol
86
+ rule %r/::?#{keyword}/, Name::Constant
87
+ rule %r/\\(.|[a-z]+)/i, Str::Char
88
+
89
+
90
+ rule %r/~@|[`\'#^~&@]/, Operator
91
+
92
+ rule %r/(\()(\s*)(#{identifier})/m do |m|
93
+ token Punctuation, m[1]
94
+ token Text::Whitespace, m[2]
95
+ token(name_token(m[3]) || Name::Function, m[3])
96
+ end
97
+
98
+ rule identifier do |m|
99
+ token name_token(m[0]) || Name
100
+ end
101
+
102
+ # vectors
103
+ rule %r/[\[\]]/, Punctuation
104
+
105
+ # maps
106
+ rule %r/[{}]/, Punctuation
107
+
108
+ # parentheses
109
+ rule %r/[()]/, Punctuation
110
+ end
111
+ end
112
+ end
113
+ end