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,35 @@
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 Scss < SassCommon
9
+ title "SCSS"
10
+ desc "SCSS stylesheets (sass-lang.com)"
11
+ tag 'scss'
12
+ filenames '*.scss'
13
+ mimetypes 'text/x-scss'
14
+
15
+ state :root do
16
+ rule %r/\s+/, Text
17
+ rule %r(//.*?$), Comment::Single
18
+ rule %r(/[*].*?[*]/)m, Comment::Multiline
19
+ rule %r/@import\b/, Keyword, :value
20
+
21
+ mixin :content_common
22
+
23
+ rule(/(?=[^;{}][;}])/) { push :attribute }
24
+ rule(/(?=[^;{}:\[]+:[^a-z])/) { push :attribute }
25
+
26
+ rule(//) { push :selector }
27
+ end
28
+
29
+ state :end_section do
30
+ rule %r/\n/, Text
31
+ rule(/[;{}]/) { token Punctuation; reset_stack }
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,173 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Sed < RegexLexer
7
+ title "sed"
8
+ desc 'sed, the ultimate stream editor'
9
+
10
+ tag 'sed'
11
+ filenames '*.sed'
12
+ mimetypes 'text/x-sed'
13
+
14
+ def self.detect?(text)
15
+ return true if text.shebang? 'sed'
16
+ end
17
+
18
+ class Regex < RegexLexer
19
+ state :root do
20
+ rule %r/\\./, Str::Escape
21
+ rule %r/\[/, Punctuation, :brackets
22
+ rule %r/[$^.*]/, Operator
23
+ rule %r/[()]/, Punctuation
24
+ rule %r/./, Str::Regex
25
+ end
26
+
27
+ state :brackets do
28
+ rule %r/\^/ do
29
+ token Punctuation
30
+ goto :brackets_int
31
+ end
32
+
33
+ rule(//) { goto :brackets_int }
34
+ end
35
+
36
+ state :brackets_int do
37
+ # ranges
38
+ rule %r/.-./, Name::Variable
39
+ rule %r/\]/, Punctuation, :pop!
40
+ rule %r/./, Str::Regex
41
+ end
42
+ end
43
+
44
+ class Replacement < RegexLexer
45
+ state :root do
46
+ rule %r/\\./m, Str::Escape
47
+ rule %r/&/, Operator
48
+ rule %r/[^\\&]+/m, Text
49
+ end
50
+ end
51
+
52
+ def regex
53
+ @regex ||= Regex.new(options)
54
+ end
55
+
56
+ def replacement
57
+ @replacement ||= Replacement.new(options)
58
+ end
59
+
60
+ start { regex.reset!; replacement.reset! }
61
+
62
+ state :whitespace do
63
+ rule %r/\s+/m, Text
64
+ rule(/#.*?\n/) { token Comment; reset_stack }
65
+ rule(/\n/) { token Text; reset_stack }
66
+ rule(/;/) { token Punctuation; reset_stack }
67
+ end
68
+
69
+ state :root do
70
+ mixin :addr_range
71
+ end
72
+
73
+ edot = /\\.|./m
74
+
75
+ state :command do
76
+ mixin :whitespace
77
+
78
+ # subst and transliteration
79
+ rule %r/(s)(.)(#{edot}*?)(\2)(#{edot}*?)(\2)/m do |m|
80
+ token Keyword, m[1]
81
+ token Punctuation, m[2]
82
+ delegate regex, m[3]
83
+ token Punctuation, m[4]
84
+ delegate replacement, m[5]
85
+ token Punctuation, m[6]
86
+
87
+
88
+ goto :flags
89
+ end
90
+
91
+ rule %r/(y)(.)(#{edot}*?)(\2)(#{edot}*?)(\2)/m do |m|
92
+ token Keyword, m[1]
93
+ token Punctuation, m[2]
94
+ delegate replacement, m[3]
95
+ token Punctuation, m[4]
96
+ delegate replacement, m[5]
97
+ token Punctuation, m[6]
98
+
99
+ pop!
100
+ end
101
+
102
+ # commands that take a text segment as an argument
103
+ rule %r/([aic])(\s*)/ do
104
+ groups Keyword, Text; goto :text
105
+ end
106
+
107
+ rule %r/[pd]/, Keyword
108
+
109
+ # commands that take a number argument
110
+ rule %r/([qQl])(\s+)(\d+)/i do
111
+ groups Keyword, Text, Num
112
+ pop!
113
+ end
114
+
115
+ # no-argument commands
116
+ rule %r/[={}dDgGhHlnpPqx]/, Keyword, :pop!
117
+
118
+ # commands that take a filename argument
119
+ rule %r/([rRwW])(\s+)(\S+)/ do
120
+ groups Keyword, Text, Name
121
+ pop!
122
+ end
123
+
124
+ # commands that take a label argument
125
+ rule %r/([:btT])(\s+)(\S+)/ do
126
+ groups Keyword, Text, Name::Label
127
+ pop!
128
+ end
129
+ end
130
+
131
+ state :addr_range do
132
+ mixin :whitespace
133
+
134
+ ### address ranges ###
135
+ addr_tok = Keyword::Namespace
136
+ rule %r/\d+/, addr_tok
137
+ rule %r/[$,~+!]/, addr_tok
138
+
139
+ rule %r((/)((?:\\.|.)*?)(/)) do |m|
140
+ token addr_tok, m[1]; delegate regex, m[2]; token addr_tok, m[3]
141
+ end
142
+
143
+ # alternate regex rage delimiters
144
+ rule %r((\\)(.)((?:\\.|.)*?)(\2)) do |m|
145
+ token addr_tok, m[1] + m[2]
146
+ delegate regex, m[3]
147
+ token addr_tok, m[4]
148
+ end
149
+
150
+ rule(//) { push :command }
151
+ end
152
+
153
+ state :text do
154
+ rule %r/[^\\\n]+/, Str
155
+ rule %r/\\\n/, Str::Escape
156
+ rule %r/\\/, Str
157
+ rule %r/\n/, Text, :pop!
158
+ end
159
+
160
+ state :flags do
161
+ rule %r/[gp]+/, Keyword, :pop!
162
+
163
+ # writing to a file with the subst command.
164
+ # who'da thunk...?
165
+ rule %r/([wW])(\s+)(\S+)/ do
166
+ token Keyword; token Text; token Name
167
+ end
168
+
169
+ rule(//) { pop! }
170
+ end
171
+ end
172
+ end
173
+ end
@@ -0,0 +1,201 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Shell < RegexLexer
7
+ title "shell"
8
+ desc "Various shell languages, including sh and bash"
9
+
10
+ tag 'shell'
11
+ aliases 'bash', 'zsh', 'ksh', 'sh'
12
+ filenames '*.sh', '*.bash', '*.zsh', '*.ksh', '.bashrc', '.zshrc',
13
+ '.kshrc', '.profile', 'APKBUILD', 'PKGBUILD', '*.ebuild',
14
+ '*.eclass', '*.exheres-0', '*.exlib'
15
+
16
+ mimetypes 'application/x-sh', 'application/x-shellscript', 'text/x-sh',
17
+ 'text/x-shellscript'
18
+
19
+ def self.detect?(text)
20
+ return true if text.shebang?(/(ba|z|k)?sh/)
21
+ end
22
+
23
+ KEYWORDS = %w(
24
+ if fi else while do done for then return function
25
+ select continue until esac elif in
26
+ ).join('|')
27
+
28
+ BUILTINS = %w(
29
+ alias bg bind break builtin caller cd command compgen
30
+ complete declare dirs disown enable eval exec exit
31
+ export false fc fg getopts hash help history jobs let
32
+ local logout mapfile popd pushd pwd read readonly set
33
+ shift shopt source suspend test time times trap true type
34
+ typeset ulimit umask unalias unset wait
35
+
36
+ cat tac nl od base32 base64 fmt pr fold head tail split csplit
37
+ wc sum cksum b2sum md5sum sha1sum sha224sum sha256sum sha384sum
38
+ sha512sum sort shuf uniq comm ptx tsort cut paste join tr expand
39
+ unexpand ls dir vdir dircolors cp dd install mv rm shred link ln
40
+ mkdir mkfifo mknod readlink rmdir unlink chown chgrp chmod touch
41
+ df du stat sync truncate echo printf yes expr tee basename dirname
42
+ pathchk mktemp realpath pwd stty printenv tty id logname whoami
43
+ groups users who date arch nproc uname hostname hostid uptime chcon
44
+ runcon chroot env nice nohup stdbuf timeout kill sleep factor numfmt
45
+ seq tar grep sudo awk sed gzip gunzip
46
+ ).join('|')
47
+
48
+ state :basic do
49
+ rule %r/#.*$/, Comment
50
+
51
+ rule %r/\b(#{KEYWORDS})\s*\b/, Keyword
52
+ rule %r/\bcase\b/, Keyword, :case
53
+
54
+ rule %r/\b(#{BUILTINS})\s*\b(?!(\.|-))/, Name::Builtin
55
+ rule %r/[.](?=\s)/, Name::Builtin
56
+
57
+ rule %r/(\b\w+)(=)/ do
58
+ groups Name::Variable, Operator
59
+ end
60
+
61
+ rule %r/[\[\]{}()!=>]/, Operator
62
+ rule %r/&&|\|\|/, Operator
63
+
64
+ # here-string
65
+ rule %r/<<</, Operator
66
+
67
+ rule %r/(<<-?)(\s*)(['"]?)(\\?)(\w+)(\3)/ do |m|
68
+ groups Operator, Text, Str::Heredoc, Str::Heredoc, Name::Constant, Str::Heredoc
69
+ @heredocstr = Regexp.escape(m[5])
70
+ push :heredoc
71
+ end
72
+ end
73
+
74
+ state :heredoc do
75
+ rule %r/\n/, Str::Heredoc, :heredoc_nl
76
+ rule %r/[^$\n\\]+/, Str::Heredoc
77
+ mixin :interp
78
+ rule %r/[$]/, Str::Heredoc
79
+ end
80
+
81
+ state :heredoc_nl do
82
+ rule %r/\s*(\w+)\s*\n/ do |m|
83
+ if m[1] == @heredocstr
84
+ token Name::Constant
85
+ pop! 2
86
+ else
87
+ token Str::Heredoc
88
+ end
89
+ end
90
+
91
+ rule(//) { pop! }
92
+ end
93
+
94
+
95
+ state :double_quotes do
96
+ # NB: "abc$" is literally the string abc$.
97
+ # Here we prevent :interp from interpreting $" as a variable.
98
+ rule %r/(?:\$#?)?"/, Str::Double, :pop!
99
+ mixin :interp
100
+ rule %r/[^"`\\$]+/, Str::Double
101
+ end
102
+
103
+ state :ansi_string do
104
+ rule %r/\\./, Str::Escape
105
+ rule %r/[^\\']+/, Str::Single
106
+ mixin :single_quotes
107
+ end
108
+
109
+ state :single_quotes do
110
+ rule %r/'/, Str::Single, :pop!
111
+ rule %r/[^']+/, Str::Single
112
+ end
113
+
114
+ state :data do
115
+ rule %r/\s+/, Text
116
+ rule %r/\\./, Str::Escape
117
+ rule %r/\$?"/, Str::Double, :double_quotes
118
+ rule %r/\$'/, Str::Single, :ansi_string
119
+
120
+ # single quotes are much easier than double quotes - we can
121
+ # literally just scan until the next single quote.
122
+ # POSIX: Enclosing characters in single-quotes ( '' )
123
+ # shall preserve the literal value of each character within the
124
+ # single-quotes. A single-quote cannot occur within single-quotes.
125
+ rule %r/'/, Str::Single, :single_quotes
126
+
127
+ rule %r/\*/, Keyword
128
+
129
+ rule %r/;/, Punctuation
130
+
131
+ rule %r/--?[\w-]+/, Name::Tag
132
+ rule %r/[^=\*\s{}()$"'`;\\<]+/, Text
133
+ rule %r/\d+(?= |\Z)/, Num
134
+ rule %r/</, Text
135
+ mixin :interp
136
+ end
137
+
138
+ state :curly do
139
+ rule %r/}/, Keyword, :pop!
140
+ rule %r/:-/, Keyword
141
+ rule %r/[a-zA-Z0-9_]+/, Name::Variable
142
+ rule %r/[^}:"`'$]+/, Punctuation
143
+ mixin :root
144
+ end
145
+
146
+ # the state inside $(...)
147
+ state :paren_interp do
148
+ rule %r/\)/, Str::Interpol, :pop!
149
+ rule %r/\(/, Operator, :paren_inner
150
+ mixin :root
151
+ end
152
+
153
+ # used to balance parentheses inside interpolation
154
+ state :paren_inner do
155
+ rule %r/\(/, Operator, :push
156
+ rule %r/\)/, Operator, :pop!
157
+ mixin :root
158
+ end
159
+
160
+ state :math do
161
+ rule %r/\)\)/, Keyword, :pop!
162
+ rule %r([-+*/%^|&!]|\*\*|\|\|), Operator
163
+ rule %r/\d+(#\w+)?/, Num
164
+ mixin :root
165
+ end
166
+
167
+ state :case do
168
+ rule %r/\besac\b/, Keyword, :pop!
169
+ rule %r/\|/, Punctuation
170
+ rule %r/\)/, Punctuation, :case_stanza
171
+ mixin :root
172
+ end
173
+
174
+ state :case_stanza do
175
+ rule %r/;;/, Punctuation, :pop!
176
+ mixin :root
177
+ end
178
+
179
+ state :backticks do
180
+ rule %r/`/, Str::Backtick, :pop!
181
+ mixin :root
182
+ end
183
+
184
+ state :interp do
185
+ rule %r/\\$/, Str::Escape # line continuation
186
+ rule %r/\\./, Str::Escape
187
+ rule %r/\$\(\(/, Keyword, :math
188
+ rule %r/\$\(/, Str::Interpol, :paren_interp
189
+ rule %r/\${#?/, Keyword, :curly
190
+ rule %r/`/, Str::Backtick, :backticks
191
+ rule %r/\$#?(\w+|.)/, Name::Variable
192
+ rule %r/\$[*@]/, Name::Variable
193
+ end
194
+
195
+ state :root do
196
+ mixin :basic
197
+ mixin :data
198
+ end
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,97 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Sieve < RegexLexer
7
+ title "Sieve"
8
+ desc "mail filtering language"
9
+
10
+ tag 'sieve'
11
+ filenames '*.sieve'
12
+
13
+ id = /:?[a-zA-Z_][a-zA-Z0-9_]*/
14
+
15
+ # control commands (rfc5228 § 3)
16
+ def self.controls
17
+ @controls ||= %w(if elsif else require stop)
18
+ end
19
+
20
+ def self.actions
21
+ @actions ||= Set.new(
22
+ # action commands (rfc5228 § 2.9)
23
+ %w(keep fileinto redirect discard) +
24
+ # Editheader Extension (rfc5293)
25
+ %w(addheader deleteheader) +
26
+ # Reject and Extended Reject Extensions (rfc5429)
27
+ %w(reject ereject) +
28
+ # Extension for Notifications (rfc5435)
29
+ %w(notify) +
30
+ # Imap4flags Extension (rfc5232)
31
+ %w(setflag addflag removeflag) +
32
+ # Vacation Extension (rfc5230)
33
+ %w(vacation) +
34
+ # MIME Part Tests, Iteration, Extraction, Replacement, and Enclosure (rfc5703)
35
+ %w(replace enclose extracttext)
36
+ )
37
+ end
38
+
39
+ def self.tests
40
+ @tests ||= Set.new(
41
+ # test commands (rfc5228 § 5)
42
+ %w(address allof anyof exists false header not size true) +
43
+ # Body Extension (rfc5173)
44
+ %w(body) +
45
+ # Imap4flags Extension (rfc5232)
46
+ %w(hasflag) +
47
+ # Spamtest and Virustest Extensions (rfc5235)
48
+ %w(spamtest virustest) +
49
+ # Date and Index Extensions (rfc5260)
50
+ %w(date currentdate) +
51
+ # Extension for Notifications (rfc5435)
52
+ %w(valid_notify_method notify_method_capability) +
53
+ # Extensions for Checking Mailbox Status and Accessing Mailbox
54
+ # Metadata (rfc5490)
55
+ %w(mailboxexists metadata metadataexists servermetadata servermetadataexists)
56
+ )
57
+ end
58
+
59
+ state :comments_and_whitespace do
60
+ rule %r/\s+/, Text
61
+ rule %r(#.*), Comment::Single
62
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
63
+ end
64
+
65
+ state :string do
66
+ rule %r/\\./, Str::Escape
67
+ rule %r/"/, Str::Double, :pop!
68
+ # Variables Extension (rfc5229)
69
+ rule %r/\${(?:[0-9][.0-9]*|[a-zA-Z_][.a-zA-Z0-9_]*)}/, Str::Interpol
70
+ rule %r/./, Str::Double
71
+ end
72
+
73
+ state :root do
74
+ mixin :comments_and_whitespace
75
+
76
+ rule %r/[\[\](),;{}]/, Punctuation
77
+
78
+ rule id do |m|
79
+ if self.class.controls.include? m[0]
80
+ token Keyword
81
+ elsif self.class.tests.include? m[0]
82
+ token Name::Variable
83
+ elsif self.class.actions.include? m[0]
84
+ token Name::Function
85
+ elsif m[0] =~ /^:/ # tags like :contains, :matches etc.
86
+ token Operator
87
+ else
88
+ token Name::Other
89
+ end
90
+ end
91
+
92
+ rule %r/"/, Str::Double, :string
93
+ rule %r/[0-9]+[KMG]/, Num::Integer
94
+ end
95
+ end
96
+ end
97
+ end