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,345 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class SML < RegexLexer
7
+ title "SML"
8
+ desc 'Standard ML'
9
+ tag 'sml'
10
+ aliases 'ml'
11
+ filenames '*.sml', '*.sig', '*.fun'
12
+
13
+ mimetypes 'text/x-standardml', 'application/x-standardml'
14
+
15
+ def self.keywords
16
+ @keywords ||= Set.new %w(
17
+ abstype and andalso as case datatype do else end exception
18
+ fn fun handle if in infix infixr let local nonfix of op open
19
+ orelse raise rec then type val with withtype while
20
+ eqtype functor include sharing sig signature struct structure
21
+ where
22
+ )
23
+ end
24
+
25
+ def self.symbolic_reserved
26
+ @symbolic_reserved ||= Set.new %w(: | = => -> # :>)
27
+ end
28
+
29
+ id = /[\w']+/i
30
+ symbol = %r([!%&$#/:<=>?@\\~`^|*+-]+)
31
+
32
+ state :whitespace do
33
+ rule %r/\s+/m, Text
34
+ rule %r/[(][*]/, Comment, :comment
35
+ end
36
+
37
+ state :delimiters do
38
+ rule %r/[(\[{]/, Punctuation, :main
39
+ rule %r/[)\]}]/, Punctuation, :pop!
40
+
41
+ rule %r/\b(let|if|local)\b(?!')/ do
42
+ token Keyword::Reserved
43
+ push; push
44
+ end
45
+
46
+ rule %r/\b(struct|sig|while)\b(?!')/ do
47
+ token Keyword::Reserved
48
+ push
49
+ end
50
+
51
+ rule %r/\b(do|else|end|in|then)\b(?!')/, Keyword::Reserved, :pop!
52
+ end
53
+
54
+ def token_for_id_with_dot(id)
55
+ if self.class.keywords.include? id
56
+ Error
57
+ else
58
+ Name::Namespace
59
+ end
60
+ end
61
+
62
+ def token_for_final_id(id)
63
+ if self.class.keywords.include? id or self.class.symbolic_reserved.include? id
64
+ Error
65
+ else
66
+ Name
67
+ end
68
+ end
69
+
70
+ def token_for_id(id)
71
+ if self.class.keywords.include? id
72
+ Keyword::Reserved
73
+ elsif self.class.symbolic_reserved.include? id
74
+ Punctuation
75
+ else
76
+ Name
77
+ end
78
+ end
79
+
80
+ state :core do
81
+ rule %r/[()\[\]{},;_]|[.][.][.]/, Punctuation
82
+ rule %r/#"/, Str::Char, :char
83
+ rule %r/"/, Str::Double, :string
84
+ rule %r/~?0x[0-9a-fA-F]+/, Num::Hex
85
+ rule %r/0wx[0-9a-fA-F]+/, Num::Hex
86
+ rule %r/0w\d+/, Num::Integer
87
+ rule %r/~?\d+([.]\d+)?[eE]~?\d+/, Num::Float
88
+ rule %r/~?\d+[.]\d+/, Num::Float
89
+ rule %r/~?\d+/, Num::Integer
90
+
91
+ rule %r/#\s*[1-9][0-9]*/, Name::Label
92
+ rule %r/#\s*#{id}/, Name::Label
93
+ rule %r/#\s+#{symbol}/, Name::Label
94
+
95
+ rule %r/\b(datatype|abstype)\b(?!')/, Keyword::Reserved, :dname
96
+ rule(/(?=\bexception\b(?!'))/) { push :ename }
97
+ rule %r/\b(functor|include|open|signature|structure)\b(?!')/,
98
+ Keyword::Reserved, :sname
99
+ rule %r/\b(type|eqtype)\b(?!')/, Keyword::Reserved, :tname
100
+
101
+ rule %r/'#{id}/, Name::Decorator
102
+ rule %r/(#{id})([.])/ do |m|
103
+ groups(token_for_id_with_dot(m[1]), Punctuation)
104
+ push :dotted
105
+ end
106
+
107
+ rule id do |m|
108
+ token token_for_id(m[0])
109
+ end
110
+
111
+ rule symbol do |m|
112
+ token token_for_id(m[0])
113
+ end
114
+ end
115
+
116
+ state :dotted do
117
+ rule %r/(#{id})([.])/ do |m|
118
+ groups(token_for_id_with_dot(m[1]), Punctuation)
119
+ end
120
+
121
+ rule id do |m|
122
+ token token_for_id(m[0])
123
+ pop!
124
+ end
125
+
126
+ rule symbol do |m|
127
+ token token_for_id(m[0])
128
+ pop!
129
+ end
130
+ end
131
+
132
+ state :root do
133
+ rule %r/#!.*?\n/, Comment::Preproc
134
+ rule(//) { push :main }
135
+ end
136
+
137
+ state :main do
138
+ mixin :whitespace
139
+
140
+ rule %r/\b(val|and)\b(?!')/, Keyword::Reserved, :vname
141
+ rule %r/\b(fun)\b(?!')/ do
142
+ token Keyword::Reserved
143
+ goto :main_fun
144
+ push :fname
145
+ end
146
+
147
+ mixin :delimiters
148
+ mixin :core
149
+ end
150
+
151
+ state :main_fun do
152
+ mixin :whitespace
153
+ rule %r/\b(fun|and)\b(?!')/, Keyword::Reserved, :fname
154
+ rule %r/\bval\b(?!')/ do
155
+ token Keyword::Reserved
156
+ goto :main
157
+ push :vname
158
+ end
159
+
160
+ rule %r/[|]/, Punctuation, :fname
161
+ rule %r/\b(case|handle)\b(?!')/ do
162
+ token Keyword::Reserved
163
+ goto :main
164
+ end
165
+
166
+ mixin :delimiters
167
+ mixin :core
168
+ end
169
+
170
+ state :has_escapes do
171
+ rule %r/\\[\\"abtnvfr]/, Str::Escape
172
+ rule %r/\\\^[\x40-\x5e]/, Str::Escape
173
+ rule %r/\\[0-9]{3}/, Str::Escape
174
+ rule %r/\\u\h{4}/, Str::Escape
175
+ rule %r/\\\s+\\/, Str::Interpol
176
+ end
177
+
178
+ state :string do
179
+ rule %r/[^"\\]+/, Str::Double
180
+ rule %r/"/, Str::Double, :pop!
181
+ mixin :has_escapes
182
+ end
183
+
184
+ state :char do
185
+ rule %r/[^"\\]+/, Str::Char
186
+ rule %r/"/, Str::Char, :pop!
187
+ mixin :has_escapes
188
+ end
189
+
190
+ state :breakout do
191
+ rule %r/(?=\b(#{SML.keywords.to_a.join('|')})\b(?!'))/ do
192
+ pop!
193
+ end
194
+ end
195
+
196
+ state :sname do
197
+ mixin :whitespace
198
+ mixin :breakout
199
+ rule id, Name::Namespace
200
+ rule(//) { pop! }
201
+ end
202
+
203
+ state :has_annotations do
204
+ rule %r/'[\w']*/, Name::Decorator
205
+ rule %r/[(]/, Punctuation, :tyvarseq
206
+ end
207
+
208
+ state :fname do
209
+ mixin :whitespace
210
+ mixin :has_annotations
211
+
212
+ rule id, Name::Function, :pop!
213
+ rule symbol, Name::Function, :pop!
214
+ end
215
+
216
+ state :vname do
217
+ mixin :whitespace
218
+ mixin :has_annotations
219
+
220
+ rule %r/(#{id})(\s*)(=(?!#{symbol}))/m do
221
+ groups Name::Variable, Text, Punctuation
222
+ pop!
223
+ end
224
+
225
+ rule %r/(#{symbol})(\s*)(=(?!#{symbol}))/m do
226
+ groups Name::Variable, Text, Punctuation
227
+ end
228
+
229
+ rule id, Name::Variable, :pop!
230
+ rule symbol, Name::Variable, :pop!
231
+
232
+ rule(//) { pop! }
233
+ end
234
+
235
+ state :tname do
236
+ mixin :whitespace
237
+ mixin :breakout
238
+ mixin :has_annotations
239
+
240
+ rule %r/'[\w']*/, Name::Decorator
241
+ rule %r/[(]/, Punctuation, :tyvarseq
242
+
243
+ rule %r(=(?!#{symbol})) do
244
+ token Punctuation
245
+ goto :typbind
246
+ end
247
+
248
+ rule id, Keyword::Type
249
+ rule symbol, Keyword::Type
250
+ end
251
+
252
+ state :typbind do
253
+ mixin :whitespace
254
+
255
+ rule %r/\b(and)\b(?!')/ do
256
+ token Keyword::Reserved
257
+ goto :tname
258
+ end
259
+
260
+ mixin :breakout
261
+ mixin :core
262
+ end
263
+
264
+ state :dname do
265
+ mixin :whitespace
266
+ mixin :breakout
267
+ mixin :has_annotations
268
+
269
+ rule %r/(=)(\s*)(datatype)\b/ do
270
+ groups Punctuation, Text, Keyword::Reserved
271
+ pop!
272
+ end
273
+
274
+ rule %r(=(?!#{symbol})) do
275
+ token Punctuation
276
+ goto :datbind
277
+ push :datcon
278
+ end
279
+
280
+ rule id, Keyword::Type
281
+ rule symbol, Keyword::Type
282
+ end
283
+
284
+ state :datbind do
285
+ mixin :whitespace
286
+ rule %r/\b(and)\b(?!')/ do
287
+ token Keyword::Reserved; goto :dname
288
+ end
289
+ rule %r/\b(withtype)\b(?!')/ do
290
+ token Keyword::Reserved; goto :tname
291
+ end
292
+ rule %r/\bof\b(?!')/, Keyword::Reserved
293
+ rule %r/([|])(\s*)(#{id})/ do
294
+ groups(Punctuation, Text, Name::Class)
295
+ end
296
+
297
+ rule %r/([|])(\s+)(#{symbol})/ do
298
+ groups(Punctuation, Text, Name::Class)
299
+ end
300
+
301
+ mixin :breakout
302
+ mixin :core
303
+ end
304
+
305
+ state :ename do
306
+ mixin :whitespace
307
+ rule %r/(exception|and)(\s+)(#{id})/ do
308
+ groups Keyword::Reserved, Text, Name::Class
309
+ end
310
+
311
+ rule %r/(exception|and)(\s*)(#{symbol})/ do
312
+ groups Keyword::Reserved, Text, Name::Class
313
+ end
314
+
315
+ rule %r/\b(of)\b(?!')/, Keyword::Reserved
316
+ mixin :breakout
317
+ mixin :core
318
+ end
319
+
320
+ state :datcon do
321
+ mixin :whitespace
322
+ rule id, Name::Class, :pop!
323
+ rule symbol, Name::Class, :pop!
324
+ end
325
+
326
+ state :tyvarseq do
327
+ mixin :whitespace
328
+ rule %r/'[\w']*/, Name::Decorator
329
+ rule id, Name
330
+ rule %r/,/, Punctuation
331
+ rule %r/[)]/, Punctuation, :pop!
332
+ rule symbol, Name
333
+ end
334
+
335
+ state :comment do
336
+ rule %r/[^(*)]+/, Comment::Multiline
337
+ rule %r/[(][*]/ do
338
+ token Comment::Multiline; push
339
+ end
340
+ rule %r/[*][)]/, Comment::Multiline, :pop!
341
+ rule %r/[(*)]/, Comment::Multiline
342
+ end
343
+ end
344
+ end
345
+ end
@@ -0,0 +1,185 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Solidity < RegexLexer
6
+ title "Solidity"
7
+ desc "Solidity, an Ethereum smart contract programming language"
8
+ tag 'solidity'
9
+ filenames '*.sol', '*.solidity'
10
+ mimetypes 'text/x-solidity'
11
+
12
+ # optional comment or whitespace
13
+ ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
14
+ id = /[a-zA-Z$_][\w$_]*/
15
+
16
+ def self.detect?(text)
17
+ return true if text.start_with? 'pragma solidity'
18
+ end
19
+
20
+ # TODO: seperate by "type"
21
+ def self.keywords
22
+ @keywords ||= Set.new %w(
23
+ abstract anonymous as assembly break catch calldata constant
24
+ constructor continue contract do delete else emit enum event
25
+ external fallback for function hex if indexed interface
26
+ internal import is library mapping memory modifier new
27
+ override payable public pure pragma private receive return
28
+ returns storage struct throw try type using var view virtual
29
+ while
30
+ )
31
+ end
32
+
33
+ def self.builtins
34
+ return @builtins if @builtins
35
+
36
+ @builtins = Set.new %w(
37
+ now
38
+ false true
39
+ balance now selector super this
40
+ blockhash gasleft
41
+ assert require revert
42
+ selfdestruct suicide
43
+ call callcode delegatecall
44
+ send transfer
45
+ addmod ecrecover keccak256 mulmod sha256 sha3 ripemd160
46
+ )
47
+
48
+ # TODO: use (currently shadowed by catch-all in :statements)
49
+ abi = %w(decode encode encodePacked encodeWithSelector encodeWithSignature)
50
+ @builtins.merge( abi.map { |i| "abi.#{i}" } )
51
+ block = %w(coinbase difficulty gaslimit hash number timestamp)
52
+ @builtins.merge( block.map { |i| "block.#{i}" } )
53
+ msg = %w(data gas sender sig value)
54
+ @builtins.merge( msg.map { |i| "msg.#{i}" } )
55
+ tx = %w(gasprice origin)
56
+ @builtins.merge( tx.map { |i| "tx.#{i}" } )
57
+ end
58
+
59
+ def self.constants
60
+ @constants ||= Set.new %w(
61
+ wei finney szabo ether
62
+ seconds minutes hours days weeks years
63
+ )
64
+ end
65
+
66
+ def self.keywords_type
67
+ @keywords_type ||= Set.new %w(
68
+ address bool byte bytes int string uint
69
+ )
70
+ end
71
+
72
+ def self.reserved
73
+ @reserved ||= Set.new %w(
74
+ alias after apply auto case copyof default define final fixed
75
+ immutable implements in inline let macro match mutable null of
76
+ partial promise reference relocatable sealed sizeof static
77
+ supports switch typedef typeof ufixed unchecked
78
+ )
79
+ end
80
+
81
+ start { push :bol }
82
+
83
+ state :expr_bol do
84
+ mixin :inline_whitespace
85
+
86
+ rule(//) { pop! }
87
+ end
88
+
89
+ # :expr_bol is the same as :bol but without labels, since
90
+ # labels can only appear at the beginning of a statement.
91
+ state :bol do
92
+ mixin :expr_bol
93
+ end
94
+
95
+ # TODO: natspec in comments
96
+ state :inline_whitespace do
97
+ rule %r/[ \t\r]+/, Text
98
+ rule %r/\\\n/, Text # line continuation
99
+ rule %r(/\*), Comment::Multiline, :comment_multi
100
+ end
101
+
102
+ state :whitespace do
103
+ rule %r/\n+/m, Text, :bol
104
+ rule %r(//(\\.|.)*?\n), Comment::Single, :bol
105
+ mixin :inline_whitespace
106
+ end
107
+
108
+ state :expr_whitespace do
109
+ rule %r/\n+/m, Text, :expr_bol
110
+ mixin :whitespace
111
+ end
112
+
113
+ state :statements do
114
+ mixin :whitespace
115
+ rule %r/(hex)?\"/, Str, :string_double
116
+ rule %r/(hex)?\'/, Str, :string_single
117
+ rule %r('(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
118
+ rule %r/\d\d*\.\d+([eE]\d+)?/i, Num::Float
119
+ rule %r/0x[0-9a-f]+/i, Num::Hex
120
+ rule %r/\d+([eE]\d+)?/i, Num::Integer
121
+ rule %r(\*/), Error
122
+ rule %r([~!%^&*+=\|?:<>/-]), Operator
123
+ rule %r/[()\[\],.]/, Punctuation
124
+ rule %r/u?fixed\d+x\d+/, Keyword::Reserved
125
+ rule %r/bytes\d+/, Keyword::Type
126
+ rule %r/u?int\d+/, Keyword::Type
127
+ rule id do |m|
128
+ name = m[0]
129
+
130
+ if self.class.keywords.include? name
131
+ token Keyword
132
+ elsif self.class.builtins.include? name
133
+ token Name::Builtin
134
+ elsif self.class.constants.include? name
135
+ token Keyword::Constant
136
+ elsif self.class.keywords_type.include? name
137
+ token Keyword::Type
138
+ elsif self.class.reserved.include? name
139
+ token Keyword::Reserved
140
+ else
141
+ token Name
142
+ end
143
+ end
144
+ end
145
+
146
+ state :root do
147
+ mixin :expr_whitespace
148
+ rule(//) { push :statement }
149
+ # TODO: function declarations
150
+ end
151
+
152
+ state :statement do
153
+ rule %r/;/, Punctuation, :pop!
154
+ mixin :expr_whitespace
155
+ mixin :statements
156
+ rule %r/[{}]/, Punctuation
157
+ end
158
+
159
+ state :string_common do
160
+ rule %r/\\(u[a-fA-F0-9]{4}|x..|[^x])/, Str::Escape
161
+ rule %r/[^\\\"\'\n]+/, Str
162
+ rule %r/\\\n/, Str # line continuation
163
+ rule %r/\\/, Str # stray backslash
164
+ end
165
+
166
+ state :string_double do
167
+ mixin :string_common
168
+ rule %r/\"/, Str, :pop!
169
+ rule %r/\'/, Str
170
+ end
171
+
172
+ state :string_single do
173
+ mixin :string_common
174
+ rule %r/\'/, Str, :pop!
175
+ rule %r/\"/, Str
176
+ end
177
+
178
+ state :comment_multi do
179
+ rule %r(\*/), Comment::Multiline, :pop!
180
+ rule %r([^*/]+), Comment::Multiline
181
+ rule %r([*/]), Comment::Multiline
182
+ end
183
+ end
184
+ end
185
+ end