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,38 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'groovy.rb'
7
+
8
+ class Gradle < Groovy
9
+ title "Gradle"
10
+ desc "A powerful build system for the JVM"
11
+
12
+ tag 'gradle'
13
+ filenames '*.gradle'
14
+ mimetypes 'text/x-gradle'
15
+
16
+ def self.keywords
17
+ @keywords ||= super + Set.new(%w(
18
+ allprojects artifacts buildscript configuration dependencies
19
+ repositories sourceSets subprojects publishing
20
+ ))
21
+ end
22
+
23
+ def self.types
24
+ @types ||= super + Set.new(%w(
25
+ Project Task Gradle Settings Script JavaToolChain SourceSet
26
+ SourceSetOutput IncrementalTaskInputs Configuration
27
+ ResolutionStrategy ArtifactResolutionQuery ComponentSelection
28
+ ComponentSelectionRules ConventionProperty ExtensionAware
29
+ ExtraPropertiesExtension PublishingExtension IvyPublication
30
+ IvyArtifact IvyArtifactSet IvyModuleDescriptorSpec
31
+ MavenPublication MavenArtifact MavenArtifactSet MavenPom
32
+ PluginDependenciesSpec PluginDependencySpec ResourceHandler
33
+ TextResourceFactory
34
+ ))
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,261 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class GraphQL < RegexLexer
7
+ desc 'GraphQL'
8
+ tag 'graphql'
9
+ filenames '*.graphql', '*.gql'
10
+ mimetypes 'application/graphql'
11
+
12
+ name = /[_A-Za-z][_0-9A-Za-z]*/
13
+
14
+ state :root do
15
+ rule %r/\b(?:query|mutation|subscription)\b/, Keyword, :query_definition
16
+ rule %r/\{/ do
17
+ token Punctuation
18
+ push :query_definition
19
+ push :selection_set
20
+ end
21
+
22
+ rule %r/\bfragment\b/, Keyword, :fragment_definition
23
+
24
+ rule %r/\bscalar\b/, Keyword, :value
25
+
26
+ rule %r/\b(?:type|interface|enum)\b/, Keyword, :type_definition
27
+
28
+ rule %r/\b(?:input|schema)\b/, Keyword, :type_definition
29
+
30
+ rule %r/\bunion\b/, Keyword, :union_definition
31
+
32
+ rule %r/\bextend\b/, Keyword
33
+
34
+ mixin :basic
35
+
36
+ # Markdown descriptions
37
+ rule %r/(""")(\n)(.*?)(\n)(""")/m do |m|
38
+ token Str::Double, m[1]
39
+ token Text::Whitespace, m[2]
40
+ delegate Markdown, m[3]
41
+ token Text::Whitespace, m[4]
42
+ token Str::Double, m[5]
43
+ end
44
+ end
45
+
46
+ state :basic do
47
+ rule %r/\s+/m, Text::Whitespace
48
+ rule %r/#.*$/, Comment
49
+
50
+ rule %r/[!,]/, Punctuation
51
+ end
52
+
53
+ state :has_directives do
54
+ rule %r/(@#{name})(\s*)(\()/ do
55
+ groups Keyword, Text::Whitespace, Punctuation
56
+ push :arguments
57
+ end
58
+ rule %r/@#{name}\b/, Keyword
59
+ end
60
+
61
+ state :fragment_definition do
62
+ rule %r/\bon\b/, Keyword
63
+
64
+ mixin :query_definition
65
+ end
66
+
67
+ state :query_definition do
68
+ mixin :has_directives
69
+
70
+ rule %r/\b#{name}\b/, Name
71
+ rule %r/\(/, Punctuation, :variable_definitions
72
+ rule %r/\{/, Punctuation, :selection_set
73
+
74
+ mixin :basic
75
+ end
76
+
77
+ state :type_definition do
78
+ rule %r/\bimplements\b/, Keyword
79
+ rule %r/\b#{name}\b/, Name
80
+ rule %r/\(/, Punctuation, :variable_definitions
81
+ rule %r/\{/, Punctuation, :type_definition_set
82
+
83
+ mixin :basic
84
+ end
85
+
86
+ state :union_definition do
87
+ rule %r/\b#{name}\b/, Name
88
+ rule %r/\=/, Punctuation, :union_definition_variant
89
+
90
+ mixin :basic
91
+ end
92
+
93
+ state :union_definition_variant do
94
+ rule %r/\b#{name}\b/ do
95
+ token Name
96
+ pop!
97
+ push :union_definition_pipe
98
+ end
99
+
100
+ mixin :basic
101
+ end
102
+
103
+ state :union_definition_pipe do
104
+ rule %r/\|/ do
105
+ token Punctuation
106
+ pop!
107
+ push :union_definition_variant
108
+ end
109
+
110
+ rule %r/(?!\||\s+|#[^\n]*)/ do
111
+ pop! 2
112
+ end
113
+
114
+ mixin :basic
115
+ end
116
+
117
+ state :type_definition_set do
118
+ rule %r/\}/ do
119
+ token Punctuation
120
+ pop! 2
121
+ end
122
+
123
+ rule %r/\b(#{name})(\s*)(\()/ do
124
+ groups Name, Text::Whitespace, Punctuation
125
+ push :variable_definitions
126
+ end
127
+ rule %r/\b#{name}\b/, Name
128
+
129
+ rule %r/:/, Punctuation, :type_names
130
+
131
+ mixin :basic
132
+ end
133
+
134
+ state :arguments do
135
+ rule %r/\)/ do
136
+ token Punctuation
137
+ pop!
138
+ end
139
+
140
+ rule %r/\b#{name}\b/, Name
141
+ rule %r/:/, Punctuation, :value
142
+
143
+ mixin :basic
144
+ end
145
+
146
+ state :variable_definitions do
147
+ rule %r/\)/ do
148
+ token Punctuation
149
+ pop!
150
+ end
151
+
152
+ rule %r/\$#{name}\b/, Name::Variable
153
+ rule %r/\b#{name}\b/, Name
154
+ rule %r/:/, Punctuation, :type_names
155
+ rule %r/\=/, Punctuation, :value
156
+
157
+ mixin :basic
158
+ end
159
+
160
+ state :type_names do
161
+ rule %r/\b(?:Int|Float|String|Boolean|ID)\b/, Name::Builtin, :pop!
162
+ rule %r/\b#{name}\b/, Name, :pop!
163
+
164
+ rule %r/\[/, Punctuation, :type_name_list
165
+
166
+ mixin :basic
167
+ end
168
+
169
+ state :type_name_list do
170
+ rule %r/\b(?:Int|Float|String|Boolean|ID)\b/, Name::Builtin
171
+ rule %r/\b#{name}\b/, Name
172
+
173
+ rule %r/\]/ do
174
+ token Punctuation
175
+ pop! 2
176
+ end
177
+
178
+ mixin :basic
179
+ end
180
+
181
+ state :selection_set do
182
+ mixin :has_directives
183
+
184
+ rule %r/\}/ do
185
+ token Punctuation
186
+ pop!
187
+ pop! if state?(:query_definition) || state?(:fragment_definition)
188
+ end
189
+
190
+ rule %r/\b(#{name})(\s*)(\()/ do
191
+ groups Name, Text::Whitespace, Punctuation
192
+ push :arguments
193
+ end
194
+
195
+ rule %r/\b(#{name})(\s*)(:)/ do
196
+ groups Name, Text::Whitespace, Punctuation
197
+ end
198
+
199
+ rule %r/\b#{name}\b/, Name
200
+
201
+ rule %r/(\.\.\.)(\s+)(on)\b/ do
202
+ groups Punctuation, Text::Whitespace, Keyword
203
+ end
204
+ rule %r/\.\.\./, Punctuation
205
+
206
+ rule %r/\{/, Punctuation, :selection_set
207
+
208
+ mixin :basic
209
+ end
210
+
211
+ state :list do
212
+ rule %r/\]/ do
213
+ token Punctuation
214
+ pop!
215
+ pop! if state?(:value)
216
+ end
217
+
218
+ mixin :value
219
+ end
220
+
221
+ state :object do
222
+ rule %r/\}/ do
223
+ token Punctuation
224
+ pop!
225
+ pop! if state?(:value)
226
+ end
227
+
228
+ rule %r/\b(#{name})(\s*)(:)/ do
229
+ groups Name, Text::Whitespace, Punctuation
230
+ push :value
231
+ end
232
+
233
+ mixin :basic
234
+ end
235
+
236
+ state :value do
237
+ pop_unless_list = ->(t) {
238
+ ->(m) {
239
+ token t
240
+ pop! unless state?(:list)
241
+ }
242
+ }
243
+
244
+ # Multiline strings
245
+ rule %r/""".*?"""/m, Str::Double
246
+
247
+ rule %r/\$#{name}\b/, &pop_unless_list[Name::Variable]
248
+ rule %r/\b(?:true|false|null)\b/, &pop_unless_list[Keyword::Constant]
249
+ rule %r/[+-]?[0-9]+\.[0-9]+(?:[eE][+-]?[0-9]+)?/, &pop_unless_list[Num::Float]
250
+ rule %r/[+-]?[1-9][0-9]*(?:[eE][+-]?[0-9]+)?/, &pop_unless_list[Num::Integer]
251
+ rule %r/"(\\[\\"]|[^"])*"/, &pop_unless_list[Str::Double]
252
+ rule %r/\b#{name}\b/, &pop_unless_list[Name]
253
+
254
+ rule %r/\{/, Punctuation, :object
255
+ rule %r/\[/, Punctuation, :list
256
+
257
+ mixin :basic
258
+ end
259
+ end
260
+ end
261
+ end
@@ -0,0 +1,111 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Groovy < RegexLexer
7
+ title "Groovy"
8
+ desc 'The Groovy programming language (http://www.groovy-lang.org/)'
9
+ tag 'groovy'
10
+ filenames '*.groovy', 'Jenkinsfile'
11
+ mimetypes 'text/x-groovy'
12
+
13
+ def self.detect?(text)
14
+ return true if text.shebang?(/groovy/)
15
+ end
16
+
17
+ def self.keywords
18
+ @keywords ||= Set.new %w(
19
+ assert break case catch continue default do else finally for
20
+ if goto instanceof new return switch this throw try while in as
21
+ )
22
+ end
23
+
24
+ def self.declarations
25
+ @declarations ||= Set.new %w(
26
+ abstract const enum extends final implements native private
27
+ protected public static strictfp super synchronized throws
28
+ transient volatile
29
+ )
30
+ end
31
+
32
+ def self.types
33
+ @types ||= Set.new %w(
34
+ def boolean byte char double float int long short void
35
+ )
36
+ end
37
+
38
+ def self.constants
39
+ @constants ||= Set.new %w(true false null)
40
+ end
41
+
42
+ state :root do
43
+ rule %r(^
44
+ (\s*(?:\w[\w.\[\]]*\s+)+?) # return arguments
45
+ (\w\w*) # method name
46
+ (\s*) (\() # signature start
47
+ )x do |m|
48
+ delegate self.clone, m[1]
49
+ token Name::Function, m[2]
50
+ token Text, m[3]
51
+ token Operator, m[4]
52
+ end
53
+
54
+ # whitespace
55
+ rule %r/[^\S\n]+/, Text
56
+ rule %r(//.*?$), Comment::Single
57
+ rule %r(/[*].*?[*]/)m, Comment::Multiline
58
+ rule %r/@\w[\w.]*/, Name::Decorator
59
+ rule %r/(class|interface|trait)\b/, Keyword::Declaration, :class
60
+ rule %r/package\b/, Keyword::Namespace, :import
61
+ rule %r/import\b/, Keyword::Namespace, :import
62
+
63
+ # TODO: highlight backslash escapes
64
+ rule %r/""".*?"""/m, Str::Double
65
+ rule %r/'''.*?'''/m, Str::Single
66
+
67
+ rule %r/"(\\.|\\\n|.)*?"/, Str::Double
68
+ rule %r/'(\\.|\\\n|.)*?'/, Str::Single
69
+ rule %r(\$/(\$.|.)*?/\$)m, Str
70
+ rule %r(/(\\.|\\\n|.)*?/), Str
71
+ rule %r/'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'/, Str::Char
72
+ rule %r/(\.)([a-zA-Z_][a-zA-Z0-9_]*)/ do
73
+ groups Operator, Name::Attribute
74
+ end
75
+
76
+ rule %r/[a-zA-Z_][a-zA-Z0-9_]*:/, Name::Label
77
+ rule %r/[a-zA-Z_\$][a-zA-Z0-9_]*/ do |m|
78
+ if self.class.keywords.include? m[0]
79
+ token Keyword
80
+ elsif self.class.declarations.include? m[0]
81
+ token Keyword::Declaration
82
+ elsif self.class.types.include? m[0]
83
+ token Keyword::Type
84
+ elsif self.class.constants.include? m[0]
85
+ token Keyword::Constant
86
+ else
87
+ token Name
88
+ end
89
+ end
90
+
91
+ rule %r([~^*!%&\[\](){}<>\|+=:;,./?-]), Operator
92
+
93
+ # numbers
94
+ rule %r/\d+\.\d+([eE]\d+)?[fd]?/, Num::Float
95
+ rule %r/0x[0-9a-f]+/, Num::Hex
96
+ rule %r/[0-9]+L?/, Num::Integer
97
+ rule %r/\n/, Text
98
+ end
99
+
100
+ state :class do
101
+ rule %r/\s+/, Text
102
+ rule %r/\w\w*/, Name::Class, :pop!
103
+ end
104
+
105
+ state :import do
106
+ rule %r/\s+/, Text
107
+ rule %r/[\w.]+[*]?/, Name::Namespace, :pop!
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,49 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'php.rb'
7
+
8
+ class Hack < PHP
9
+ title 'Hack'
10
+ desc 'The Hack programming language (hacklang.org)'
11
+ tag 'hack'
12
+ aliases 'hack', 'hh'
13
+ filenames '*.php', '*.hh'
14
+
15
+ def self.detect?(text)
16
+ return true if /<\?hh/ =~ text
17
+ return true if text.shebang?('hhvm')
18
+ return true if /async function [a-zA-Z]/ =~ text
19
+ return true if /\): Awaitable</ =~ text
20
+
21
+ return false
22
+ end
23
+
24
+ def self.keywords
25
+ @hh_keywords ||= super.merge Set.new %w(
26
+ type newtype enum
27
+ as super
28
+ async await Awaitable
29
+ vec dict keyset
30
+ void int string bool float double
31
+ arraykey num Stringish
32
+ )
33
+ end
34
+
35
+ prepend :template do
36
+ rule %r/<\?hh(\s*\/\/\s*(strict|decl|partial))?$/, Comment::Preproc, :php
37
+ end
38
+
39
+ prepend :php do
40
+ rule %r((/\*\s*)(HH_(?:IGNORE_ERROR|FIXME)\[\d+\])([^*]*)(\*/)) do
41
+ groups Comment::Preproc, Comment::Preproc, Comment::Multiline, Comment::Preproc
42
+ end
43
+
44
+ rule %r(// UNSAFE(?:_EXPR|_BLOCK)?), Comment::Preproc
45
+ rule %r(/\*\s*UNSAFE_EXPR\s*\*/), Comment::Preproc
46
+ end
47
+ end
48
+ end
49
+ end