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,52 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Properties < RegexLexer
7
+ title ".properties"
8
+ desc '.properties config files for Java'
9
+ tag 'properties'
10
+
11
+ filenames '*.properties'
12
+ mimetypes 'text/x-java-properties'
13
+
14
+ identifier = /[\w.-]+/
15
+
16
+ state :basic do
17
+ rule %r/[!#].*?\n/, Comment
18
+ rule %r/\s+/, Text
19
+ rule %r/\\\n/, Str::Escape
20
+ end
21
+
22
+ state :root do
23
+ mixin :basic
24
+
25
+ rule %r/(#{identifier})(\s*)([=:])/ do
26
+ groups Name::Property, Text, Punctuation
27
+ push :value
28
+ end
29
+ end
30
+
31
+ state :value do
32
+ rule %r/\n/, Text, :pop!
33
+ mixin :basic
34
+ rule %r/"/, Str, :dq
35
+ rule %r/'.*?'/, Str
36
+ mixin :esc_str
37
+ rule %r/[^\\\n]+/, Str
38
+ end
39
+
40
+ state :dq do
41
+ rule %r/"/, Str, :pop!
42
+ mixin :esc_str
43
+ rule %r/[^\\"]+/m, Str
44
+ end
45
+
46
+ state :esc_str do
47
+ rule %r/\\u[0-9]{4}/, Str::Escape
48
+ rule %r/\\./m, Str::Escape
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,71 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Protobuf < RegexLexer
7
+ title 'Protobuf'
8
+ desc 'Google\'s language-neutral, platform-neutral, extensible mechanism for serializing structured data'
9
+ tag 'protobuf'
10
+ aliases 'proto'
11
+ filenames '*.proto'
12
+ mimetypes 'text/x-proto'
13
+
14
+ kw = /\b(ctype|default|extensions|import|max|oneof|option|optional|packed|repeated|required|returns|rpc|to)\b/
15
+ datatype = /\b(bool|bytes|double|fixed32|fixed64|float|int32|int64|sfixed32|sfixed64|sint32|sint64|string|uint32|uint64)\b/
16
+
17
+ state :root do
18
+ rule %r/[\s]+/, Text
19
+ rule %r/[,;{}\[\]()]/, Punctuation
20
+ rule %r/\/(\\\n)?\/($|(.|\n)*?[^\\]$)/, Comment::Single
21
+ rule %r/\/(\\\n)?\*(.|\n)*?\*(\\\n)?\//, Comment::Multiline
22
+ rule kw, Keyword
23
+ rule datatype, Keyword::Type
24
+ rule %r/true|false/, Keyword::Constant
25
+ rule %r/(package)(\s+)/ do
26
+ groups Keyword::Namespace, Text
27
+ push :package
28
+ end
29
+
30
+ rule %r/(message|extend)(\s+)/ do
31
+ groups Keyword::Declaration, Text
32
+ push :message
33
+ end
34
+
35
+ rule %r/(enum|group|service)(\s+)/ do
36
+ groups Keyword::Declaration, Text
37
+ push :type
38
+ end
39
+
40
+ rule %r/".*?"/, Str
41
+ rule %r/'.*?'/, Str
42
+ rule %r/(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*/, Num::Float
43
+ rule %r/(\d+\.\d*|\.\d+|\d+[fF])[fF]?/, Num::Float
44
+ rule %r/(\-?(inf|nan))\b/, Num::Float
45
+ rule %r/0x[0-9a-fA-F]+[LlUu]*/, Num::Hex
46
+ rule %r/0[0-7]+[LlUu]*/, Num::Oct
47
+ rule %r/\d+[LlUu]*/, Num::Integer
48
+ rule %r/[+-=]/, Operator
49
+ rule %r/([a-zA-Z_][\w.]*)([ \t]*)(=)/ do
50
+ groups Name::Attribute, Text, Operator
51
+ end
52
+ rule %r/[a-zA-Z_][\w.]*/, Name
53
+ end
54
+
55
+ state :package do
56
+ rule %r/[a-zA-Z_]\w*/, Name::Namespace, :pop!
57
+ rule(//) { pop! }
58
+ end
59
+
60
+ state :message do
61
+ rule %r/[a-zA-Z_]\w*/, Name::Class, :pop!
62
+ rule(//) { pop! }
63
+ end
64
+
65
+ state :type do
66
+ rule %r/[a-zA-Z_]\w*/, Name, :pop!
67
+ rule(//) { pop! }
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,129 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Puppet < RegexLexer
7
+ title "Puppet"
8
+ desc 'The Puppet configuration management language (puppetlabs.org)'
9
+ tag 'puppet'
10
+ aliases 'pp'
11
+ filenames '*.pp'
12
+
13
+ def self.detect?(text)
14
+ return true if text.shebang? 'puppet-apply'
15
+ return true if text.shebang? 'puppet'
16
+ end
17
+
18
+ def self.keywords
19
+ @keywords ||= Set.new %w(
20
+ and case class default define else elsif if in import inherits
21
+ node unless
22
+ )
23
+ end
24
+
25
+ def self.constants
26
+ @constants ||= Set.new %w(
27
+ false true undef
28
+ )
29
+ end
30
+
31
+ def self.metaparameters
32
+ @metaparameters ||= Set.new %w(
33
+ before require notify subscribe
34
+ )
35
+ end
36
+
37
+ id = /[a-z]\w*/
38
+ cap_id = /[A-Z]\w*/
39
+ qualname = /(::)?(#{id}::)*\w+/
40
+
41
+ state :whitespace do
42
+ rule %r/\s+/m, Text
43
+ rule %r/#.*?\n/, Comment
44
+ end
45
+
46
+ state :root do
47
+ mixin :whitespace
48
+
49
+ rule %r/[$]#{qualname}/, Name::Variable
50
+ rule %r/(#{id})(?=\s*[=+]>)/m do |m|
51
+ if self.class.metaparameters.include? m[0]
52
+ token Keyword::Pseudo
53
+ else
54
+ token Name::Property
55
+ end
56
+ end
57
+
58
+ rule %r/(#{qualname})(?=\s*[(])/m, Name::Function
59
+ rule cap_id, Name::Class
60
+
61
+ rule %r/[+=|~-]>|<[|~-]/, Punctuation
62
+ rule %r/[|:}();\[\]]/, Punctuation
63
+
64
+ # HACK for case statements and selectors
65
+ rule %r/{/, Punctuation, :regex_allowed
66
+ rule %r/,/, Punctuation, :regex_allowed
67
+
68
+ rule %r/(in|and|or)\b/, Operator::Word
69
+ rule %r/[=!<>]=/, Operator
70
+ rule %r/[=!]~/, Operator, :regex_allowed
71
+ rule %r([.=<>!+*/-]), Operator
72
+
73
+ rule %r/(class|include)(\s*)(#{qualname})/ do
74
+ groups Keyword, Text, Name::Class
75
+ end
76
+
77
+ rule %r/node\b/, Keyword, :regex_allowed
78
+
79
+ rule %r/'(\\[\\']|[^'])*'/m, Str::Single
80
+ rule %r/"/, Str::Double, :dquotes
81
+
82
+ rule %r/\d+([.]\d+)?(e[+-]\d+)?/, Num
83
+
84
+ # a valid regex. TODO: regexes are only allowed
85
+ # in certain places in puppet.
86
+ rule qualname do |m|
87
+ if self.class.keywords.include? m[0]
88
+ token Keyword
89
+ elsif self.class.constants.include? m[0]
90
+ token Keyword::Constant
91
+ else
92
+ token Name
93
+ end
94
+ end
95
+ end
96
+
97
+ state :regex_allowed do
98
+ mixin :whitespace
99
+ rule %r(/), Str::Regex, :regex
100
+
101
+ rule(//) { pop! }
102
+ end
103
+
104
+ state :regex do
105
+ rule %r(/), Str::Regex, :pop!
106
+ rule %r/\\./, Str::Escape
107
+ rule %r/[(){}]/, Str::Interpol
108
+ rule %r/\[/, Str::Interpol, :regex_class
109
+ rule %r/./, Str::Regex
110
+ end
111
+
112
+ state :regex_class do
113
+ rule %r/\]/, Str::Interpol, :pop!
114
+ rule %r/(?<!\[)-(?=\])/, Str::Regex
115
+ rule %r/-/, Str::Interpol
116
+ rule %r/\\./, Str::Escape
117
+ rule %r/[^\\\]-]+/, Str::Regex
118
+ end
119
+
120
+ state :dquotes do
121
+ rule %r/"/, Str::Double, :pop!
122
+ rule %r/[^$\\"]+/m, Str::Double
123
+ rule %r/\\./m, Str::Escape
124
+ rule %r/[$]#{qualname}/, Name::Variable
125
+ rule %r/[$][{]#{qualname}[}]/, Name::Variable
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,257 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Python < RegexLexer
7
+ title "Python"
8
+ desc "The Python programming language (python.org)"
9
+ tag 'python'
10
+ aliases 'py'
11
+ filenames '*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac',
12
+ '*.bzl', 'BUCK', 'BUILD', 'BUILD.bazel', 'WORKSPACE'
13
+ mimetypes 'text/x-python', 'application/x-python'
14
+
15
+ def self.detect?(text)
16
+ return true if text.shebang?(/pythonw?(?:[23](?:\.\d+)?)?/)
17
+ end
18
+
19
+ def self.keywords
20
+ @keywords ||= %w(
21
+ assert break continue del elif else except exec
22
+ finally for global if lambda pass print raise
23
+ return try while yield as with from import yield
24
+ async await nonlocal
25
+ )
26
+ end
27
+
28
+ def self.builtins
29
+ @builtins ||= %w(
30
+ __import__ abs all any apply ascii basestring bin bool buffer
31
+ bytearray bytes callable chr classmethod cmp coerce compile
32
+ complex delattr dict dir divmod enumerate eval execfile exit
33
+ file filter float format frozenset getattr globals hasattr hash hex id
34
+ input int intern isinstance issubclass iter len list locals
35
+ long map max memoryview min next object oct open ord pow property range
36
+ raw_input reduce reload repr reversed round set setattr slice
37
+ sorted staticmethod str sum super tuple type unichr unicode
38
+ vars xrange zip
39
+ )
40
+ end
41
+
42
+ def self.builtins_pseudo
43
+ @builtins_pseudo ||= %w(self None Ellipsis NotImplemented False True)
44
+ end
45
+
46
+ def self.exceptions
47
+ @exceptions ||= %w(
48
+ ArithmeticError AssertionError AttributeError
49
+ BaseException BlockingIOError BrokenPipeError BufferError
50
+ BytesWarning ChildProcessError ConnectionAbortedError
51
+ ConnectionError ConnectionRefusedError ConnectionResetError
52
+ DeprecationWarning EOFError EnvironmentError
53
+ Exception FileExistsError FileNotFoundError
54
+ FloatingPointError FutureWarning GeneratorExit IOError
55
+ ImportError ImportWarning IndentationError IndexError
56
+ InterruptedError IsADirectoryError KeyError KeyboardInterrupt
57
+ LookupError MemoryError ModuleNotFoundError NameError
58
+ NotADirectoryError NotImplemented NotImplementedError OSError
59
+ OverflowError OverflowWarning PendingDeprecationWarning
60
+ ProcessLookupError RecursionError ReferenceError ResourceWarning
61
+ RuntimeError RuntimeWarning StandardError StopAsyncIteration
62
+ StopIteration SyntaxError SyntaxWarning SystemError SystemExit
63
+ TabError TimeoutError TypeError UnboundLocalError UnicodeDecodeError
64
+ UnicodeEncodeError UnicodeError UnicodeTranslateError
65
+ UnicodeWarning UserWarning ValueError VMSError Warning
66
+ WindowsError ZeroDivisionError
67
+ )
68
+ end
69
+
70
+ identifier = /[a-z_][a-z0-9_]*/i
71
+ dotted_identifier = /[a-z_.][a-z0-9_.]*/i
72
+
73
+ def current_string
74
+ @string_register ||= StringRegister.new
75
+ end
76
+
77
+ state :root do
78
+ rule %r/\n+/m, Text
79
+ rule %r/^(:)(\s*)([ru]{,2}""".*?""")/mi do
80
+ groups Punctuation, Text, Str::Doc
81
+ end
82
+
83
+ rule %r/[^\S\n]+/, Text
84
+ rule %r(#(.*)?\n?), Comment::Single
85
+ rule %r/[\[\]{}:(),;.]/, Punctuation
86
+ rule %r/\\\n/, Text
87
+ rule %r/\\/, Text
88
+
89
+ rule %r/(in|is|and|or|not)\b/, Operator::Word
90
+ rule %r/(<<|>>|\/\/|\*\*)=?/, Operator
91
+ rule %r/[-~+\/*%=<>&^|@]=?|!=/, Operator
92
+
93
+ rule %r/(from)((?:\\\s|\s)+)(#{dotted_identifier})((?:\\\s|\s)+)(import)/ do
94
+ groups Keyword::Namespace,
95
+ Text,
96
+ Name::Namespace,
97
+ Text,
98
+ Keyword::Namespace
99
+ end
100
+
101
+ rule %r/(import)(\s+)(#{dotted_identifier})/ do
102
+ groups Keyword::Namespace, Text, Name::Namespace
103
+ end
104
+
105
+ rule %r/(def)((?:\s|\\\s)+)/ do
106
+ groups Keyword, Text
107
+ push :funcname
108
+ end
109
+
110
+ rule %r/(class)((?:\s|\\\s)+)/ do
111
+ groups Keyword, Text
112
+ push :classname
113
+ end
114
+
115
+ # TODO: not in python 3
116
+ rule %r/`.*?`/, Str::Backtick
117
+ rule %r/([rfbu]{0,2})('''|"""|['"])/i do |m|
118
+ token Str
119
+ current_string.register type: m[1].downcase, delim: m[2]
120
+ push :generic_string
121
+ end
122
+
123
+ rule %r/@#{dotted_identifier}/i, Name::Decorator
124
+
125
+ # using negative lookbehind so we don't match property names
126
+ rule %r/(?<!\.)#{identifier}/ do |m|
127
+ if self.class.keywords.include? m[0]
128
+ token Keyword
129
+ elsif self.class.exceptions.include? m[0]
130
+ token Name::Builtin
131
+ elsif self.class.builtins.include? m[0]
132
+ token Name::Builtin
133
+ elsif self.class.builtins_pseudo.include? m[0]
134
+ token Name::Builtin::Pseudo
135
+ else
136
+ token Name
137
+ end
138
+ end
139
+
140
+ rule identifier, Name
141
+
142
+ digits = /[0-9](_?[0-9])*/
143
+ decimal = /((#{digits})?\.#{digits}|#{digits}\.)/
144
+ exponent = /e[+-]?#{digits}/i
145
+ rule %r/#{decimal}(#{exponent})?j?/i, Num::Float
146
+ rule %r/#{digits}#{exponent}j?/i, Num::Float
147
+ rule %r/#{digits}j/i, Num::Float
148
+
149
+ rule %r/0b(_?[0-1])+/i, Num::Bin
150
+ rule %r/0o(_?[0-7])+/i, Num::Oct
151
+ rule %r/0x(_?[a-f0-9])+/i, Num::Hex
152
+ rule %r/\d+L/, Num::Integer::Long
153
+ rule %r/([1-9](_?[0-9])*|0(_?0)*)/, Num::Integer
154
+ end
155
+
156
+ state :funcname do
157
+ rule identifier, Name::Function, :pop!
158
+ end
159
+
160
+ state :classname do
161
+ rule identifier, Name::Class, :pop!
162
+ end
163
+
164
+ state :raise do
165
+ rule %r/from\b/, Keyword
166
+ rule %r/raise\b/, Keyword
167
+ rule %r/yield\b/, Keyword
168
+ rule %r/\n/, Text, :pop!
169
+ rule %r/;/, Punctuation, :pop!
170
+ mixin :root
171
+ end
172
+
173
+ state :yield do
174
+ mixin :raise
175
+ end
176
+
177
+ state :generic_string do
178
+ rule %r/[^'"\\{]+/, Str
179
+ rule %r/{{/, Str
180
+
181
+ rule %r/'''|"""|['"]/ do |m|
182
+ token Str
183
+ if current_string.delim? m[0]
184
+ current_string.remove
185
+ pop!
186
+ end
187
+ end
188
+
189
+ rule %r/\\/ do |m|
190
+ if current_string.type? "r"
191
+ token Str
192
+ else
193
+ token Str::Interpol
194
+ end
195
+ push :generic_escape
196
+ end
197
+
198
+ rule %r/{/ do |m|
199
+ if current_string.type? "f"
200
+ token Str::Interpol
201
+ push :generic_interpol
202
+ else
203
+ token Str
204
+ end
205
+ end
206
+ end
207
+
208
+ state :generic_escape do
209
+ rule %r(
210
+ ( [\\abfnrtv"']
211
+ | \n
212
+ | N{[a-zA-Z][a-zA-Z ]+[a-zA-Z]}
213
+ | u[a-fA-F0-9]{4}
214
+ | U[a-fA-F0-9]{8}
215
+ | x[a-fA-F0-9]{2}
216
+ | [0-7]{1,3}
217
+ )
218
+ )x do
219
+ if current_string.type? "r"
220
+ token Str
221
+ else
222
+ token Str::Escape
223
+ end
224
+ pop!
225
+ end
226
+ end
227
+
228
+ state :generic_interpol do
229
+ rule %r/[^{}]+/ do |m|
230
+ recurse m[0]
231
+ end
232
+ rule %r/{/, Str::Interpol, :generic_interpol
233
+ rule %r/}/, Str::Interpol, :pop!
234
+ end
235
+
236
+ class StringRegister < Array
237
+ def delim?(delim)
238
+ self.last[1] == delim
239
+ end
240
+
241
+ def register(type: "u", delim: "'")
242
+ self.push [type, delim]
243
+ end
244
+
245
+ def remove
246
+ self.pop
247
+ end
248
+
249
+ def type?(type)
250
+ self.last[0].include? type
251
+ end
252
+ end
253
+
254
+ private_constant :StringRegister
255
+ end
256
+ end
257
+ end