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,232 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Mosel < RegexLexer
7
+ tag 'mosel'
8
+ filenames '*.mos'
9
+ title "Mosel"
10
+ desc "An optimization language used by Fico's Xpress."
11
+ # http://www.fico.com/en/products/fico-xpress-optimization-suite
12
+ filenames '*.mos'
13
+
14
+ mimetypes 'text/x-mosel'
15
+
16
+ def self.detect?(text)
17
+ return true if text =~ /^\s*(model|package)\s+/
18
+ end
19
+
20
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
21
+
22
+ ############################################################################################################################
23
+ # General language lements
24
+ ############################################################################################################################
25
+
26
+ core_keywords = %w(
27
+ and array as
28
+ boolean break
29
+ case count counter
30
+ declarations div do dynamic
31
+ elif else end evaluation exit
32
+ false forall forward from function
33
+ if imports in include initialisations initializations integer inter is_binary is_continuous is_free is_integer is_partint is_semcont is_semint is_sos1 is_sos2
34
+ linctr list
35
+ max min mod model mpvar
36
+ next not of options or
37
+ package parameters procedure
38
+ public prod range real record repeat requirements
39
+ set string sum
40
+ then to true
41
+ union until uses
42
+ version
43
+ while with
44
+ )
45
+
46
+ core_functions = %w(
47
+ abs arctan assert
48
+ bitflip bitneg bitset bitshift bittest bitval
49
+ ceil cos create currentdate currenttime cuthead cuttail
50
+ delcell exists exit exp exportprob
51
+ fclose fflush finalize findfirst findlast floor fopen fselect fskipline
52
+ getact getcoeff getcoeffs getdual getfid getfirst gethead getfname getlast getobjval getparam getrcost getreadcnt getreverse getsize getslack getsol gettail gettype getvars
53
+ iseof ishidden isodd ln log
54
+ makesos1 makesos2 maxlist minlist
55
+ publish
56
+ random read readln reset reverse round
57
+ setcoeff sethidden setioerr setname setparam setrandseed settype sin splithead splittail sqrt strfmt substr
58
+ timestamp
59
+ unpublish
60
+ write writeln
61
+ )
62
+
63
+ ############################################################################################################################
64
+ # mmxprs module elements
65
+ ############################################################################################################################
66
+
67
+ mmxprs_functions = %w(
68
+ addmipsol
69
+ basisstability
70
+ calcsolinfo clearmipdir clearmodcut command copysoltoinit
71
+ defdelayedrows defsecurevecs
72
+ estimatemarginals
73
+ fixglobal
74
+ getbstat getdualray getiis getiissense getiistype getinfcause getinfeas getlb getloadedlinctrs getloadedmpvars getname getprimalray getprobstat getrange getsensrng getsize getsol getub getvars
75
+ implies indicator isiisvalid isintegral loadbasis
76
+ loadmipsol loadprob
77
+ maximize minimize
78
+ postsolve
79
+ readbasis readdirs readsol refinemipsol rejectintsol repairinfeas resetbasis resetiis resetsol
80
+ savebasis savemipsol savesol savestate selectsol setbstat setcallback setcbcutoff setgndata setlb setmipdir setmodcut setsol setub setucbdata stopoptimize
81
+ unloadprob
82
+ writebasis writedirs writeprob writesol
83
+ xor
84
+ )
85
+
86
+ mmxpres_constants = %w(XPRS_OPT XPRS_UNF XPRS_INF XPRS_UNB XPRS_OTH)
87
+
88
+ mmxprs_parameters = %w(XPRS_colorder XPRS_enumduplpol XPRS_enummaxsol XPRS_enumsols XPRS_fullversion XPRS_loadnames XPRS_problem XPRS_probname XPRS_verbose)
89
+
90
+
91
+ ############################################################################################################################
92
+ # mmsystem module elements
93
+ ############################################################################################################################
94
+
95
+ mmsystem_functions = %w(
96
+ addmonths
97
+ copytext cuttext
98
+ deltext
99
+ endswith expandpath
100
+ fcopy fdelete findfiles findtext fmove
101
+ getasnumber getchar getcwd getdate getday getdaynum getdays getdirsep
102
+ getendparse setendparse
103
+ getenv getfsize getfstat getftime gethour getminute getmonth getmsec getpathsep
104
+ getqtype setqtype
105
+ getsecond
106
+ getsepchar setsepchar
107
+ getsize
108
+ getstart setstart
109
+ getsucc setsucc
110
+ getsysinfo getsysstat gettime
111
+ gettmpdir
112
+ gettrim settrim
113
+ getweekday getyear
114
+ inserttext isvalid
115
+ makedir makepath newtar
116
+ newzip nextfield
117
+ openpipe
118
+ parseextn parseint parsereal parsetext pastetext pathmatch pathsplit
119
+ qsort quote
120
+ readtextline regmatch regreplace removedir removefiles
121
+ setchar setdate setday setenv sethour
122
+ setminute setmonth setmsec setsecond settime setyear sleep startswith system
123
+ tarlist textfmt tolower toupper trim
124
+ untar unzip
125
+ ziplist
126
+ )
127
+
128
+ mmsystem_parameters = %w(datefmt datetimefmt monthnames sys_endparse sys_fillchar sys_pid sys_qtype sys_regcache sys_sepchar)
129
+
130
+ ############################################################################################################################
131
+ # mmjobs module elements
132
+ ############################################################################################################################
133
+
134
+ mmjobs_instance_mgmt_functions = %w(
135
+ clearaliases connect
136
+ disconnect
137
+ findxsrvs
138
+ getaliases getbanner gethostalias
139
+ sethostalias
140
+ )
141
+
142
+ mmjobs_model_mgmt_functions = %w(
143
+ compile
144
+ detach
145
+ getannidents getannotations getexitcode getgid getid getnode getrmtid getstatus getuid
146
+ load
147
+ reset resetmodpar run
148
+ setcontrol setdefstream setmodpar setworkdir stop
149
+ unload
150
+ )
151
+
152
+ mmjobs_synchornization_functions = %w(
153
+ dropnextevent
154
+ getclass getfromgid getfromid getfromuid getnextevent getvalue
155
+ isqueueempty
156
+ nullevent
157
+ peeknextevent
158
+ send setgid setuid
159
+ wait waitfor
160
+ )
161
+
162
+ mmjobs_functions = mmjobs_instance_mgmt_functions + mmjobs_model_mgmt_functions + mmjobs_synchornization_functions
163
+
164
+ mmjobs_parameters = %w(conntmpl defaultnode fsrvdelay fsrvnbiter fsrvport jobid keepalive nodenumber parentnumber)
165
+
166
+
167
+ state :whitespace do
168
+ # Spaces
169
+ rule %r/\s+/m, Text
170
+ # ! Comments
171
+ rule %r((!).*$\n?), Comment::Single
172
+ # (! Comments !)
173
+ rule %r(\(!.*?!\))m, Comment::Multiline
174
+
175
+ end
176
+
177
+
178
+ # From Mosel documentation:
179
+ # Constant strings of characters must be quoted with single (') or double quote (") and may extend over several lines. Strings enclosed in double quotes may contain C-like escape sequences introduced by the 'backslash'
180
+ # character (\a \b \f \n \r \t \v \xxx with xxx being the character code as an octal number).
181
+ # Each sequence is replaced by the corresponding control character (e.g. \n is the `new line' command) or, if no control character exists, by the second character of the sequence itself (e.g. \\ is replaced by '\').
182
+ # The escape sequences are not interpreted if they are contained in strings that are enclosed in single quotes.
183
+
184
+ state :single_quotes do
185
+ rule %r/'/, Str::Single, :pop!
186
+ rule %r/[^']+/, Str::Single
187
+ end
188
+
189
+ state :double_quotes do
190
+ rule %r/"/, Str::Double, :pop!
191
+ rule %r/(\\"|\\[0-7]{1,3}\D|\\[abfnrtv]|\\\\)/, Str::Escape
192
+ rule %r/[^"]/, Str::Double
193
+ end
194
+
195
+ state :base do
196
+
197
+ rule %r{"}, Str::Double, :double_quotes
198
+ rule %r{'}, Str::Single, :single_quotes
199
+
200
+ rule %r{((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?}, Num
201
+ rule %r{[~!@#\$%\^&\*\(\)\+`\-={}\[\]:;<>\?,\.\/\|\\]}, Punctuation
202
+ # rule %r{'([^']|'')*'}, Str
203
+ # rule %r/"(\\\\|\\"|[^"])*"/, Str
204
+
205
+
206
+
207
+ rule %r/(true|false)\b/i, Name::Builtin
208
+ rule %r/\b(#{core_keywords.join('|')})\b/i, Keyword
209
+ rule %r/\b(#{core_functions.join('|')})\b/, Name::Builtin
210
+
211
+
212
+
213
+ rule %r/\b(#{mmxprs_functions.join('|')})\b/, Name::Function
214
+ rule %r/\b(#{mmxpres_constants.join('|')})\b/, Name::Constant
215
+ rule %r/\b(#{mmxprs_parameters.join('|')})\b/i, Name::Property
216
+
217
+ rule %r/\b(#{mmsystem_functions.join('|')})\b/i, Name::Function
218
+ rule %r/\b(#{mmsystem_parameters.join('|')})\b/, Name::Property
219
+
220
+ rule %r/\b(#{mmjobs_functions.join('|')})\b/i, Name::Function
221
+ rule %r/\b(#{mmjobs_parameters.join('|')})\b/, Name::Property
222
+
223
+ rule id, Name
224
+ end
225
+
226
+ state :root do
227
+ mixin :whitespace
228
+ mixin :base
229
+ end
230
+ end
231
+ end
232
+ end
@@ -0,0 +1,26 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class MsgTrans < RegexLexer
7
+ title "MessageTrans"
8
+ desc "RISC OS message translator messages file"
9
+ tag 'msgtrans'
10
+ filenames 'Messages', 'Message[0-9]', 'Message[1-9][0-9]', 'Message[1-9][0-9][0-9]'
11
+
12
+ state :root do
13
+ rule %r/^#[^\n]*/, Comment
14
+ rule %r/[^\t\n\r ,):?\/]+/, Name::Variable
15
+ rule %r/[\n\/?]/, Operator
16
+ rule %r/:/, Operator, :value
17
+ end
18
+
19
+ state :value do
20
+ rule %r/\n/, Text, :pop!
21
+ rule %r/%[0-3%]/, Operator
22
+ rule %r/[^\n%]/, Literal::String
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class MXML < RegexLexer
7
+ title "MXML"
8
+ desc "MXML"
9
+ tag 'mxml'
10
+ filenames '*.mxml'
11
+ mimetypes 'application/xv+xml'
12
+
13
+ state :root do
14
+ rule %r/[^<&]+/, Text
15
+ rule %r/&\S*?;/, Name::Entity
16
+
17
+ rule %r/<!\[CDATA\[/m do
18
+ token Comment::Preproc
19
+ push :actionscript_content
20
+ end
21
+
22
+ rule %r/<!--/, Comment, :comment
23
+ rule %r/<\?.*?\?>/, Comment::Preproc
24
+ rule %r/<![^>]*>/, Comment::Preproc
25
+
26
+ rule %r(<\s*[\w:.-]+)m, Name::Tag, :tag # opening tags
27
+ rule %r(<\s*/\s*[\w:.-]+\s*>)m, Name::Tag # closing tags
28
+ end
29
+
30
+ state :comment do
31
+ rule %r/[^-]+/m, Comment
32
+ rule %r/-->/, Comment, :pop!
33
+ rule %r/-/, Comment
34
+ end
35
+
36
+ state :tag do
37
+ rule %r/\s+/m, Text
38
+ rule %r/[\w.:-]+\s*=/m, Name::Attribute, :attribute
39
+ rule %r(/?\s*>), Name::Tag, :root
40
+ end
41
+
42
+ state :attribute do
43
+ rule %r/\s+/m, Text
44
+ rule %r/(")({|@{)/m do
45
+ groups Str, Punctuation
46
+ push :actionscript_attribute
47
+ end
48
+ rule %r/".*?"|'.*?'|[^\s>]+/, Str, :tag
49
+ end
50
+
51
+ state :actionscript_content do
52
+ rule %r/\]\]\>/m, Comment::Preproc, :pop!
53
+ rule %r/.*?(?=\]\]\>)/m do
54
+ delegate Actionscript
55
+ end
56
+ end
57
+
58
+ state :actionscript_attribute do
59
+ rule %r/(})(")/m do
60
+ groups Punctuation, Str
61
+ push :tag
62
+ end
63
+ rule %r/.*?(?=}")/m do
64
+ delegate Actionscript
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,72 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ # Based on Chroma's NASM lexer implementation
5
+ # https://github.com/alecthomas/chroma/blob/498eaa690f5ac6ab0e3d6f46237e547a8935cdc7/lexers/n/nasm.go
6
+ module Rouge
7
+ module Lexers
8
+ class Nasm < RegexLexer
9
+ title "Nasm"
10
+ desc "Netwide Assembler"
11
+
12
+ tag 'nasm'
13
+ filenames '*.asm'
14
+ mimetypes 'text/x-nasm'
15
+
16
+ state :root do
17
+ rule %r/^\s*%/, Comment::Preproc, :preproc
18
+
19
+ mixin :whitespace
20
+
21
+ rule %r/[a-z$._?][\w$.?#@~]*:/i, Name::Label
22
+
23
+ rule %r/([a-z$._?][\w$.?#@~]*)(\s+)(equ)/i do
24
+ groups Name::Constant, Keyword::Declaration, Keyword::Declaration
25
+ push :instruction_args
26
+ end
27
+ rule %r/BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|EXPORT|LIBRARY|MODULE/, Keyword, :instruction_args
28
+ rule %r/(?:res|d)[bwdqt]|times/i, Keyword::Declaration, :instruction_args
29
+ rule %r/[a-z$._?][\w$.?#@~]*/i, Name::Function, :instruction_args
30
+
31
+ rule %r/[\r\n]+/, Text
32
+ end
33
+
34
+ state :instruction_args do
35
+ rule %r/"(\\\\"|[^"\\n])*"|'(\\\\'|[^'\\n])*'|`(\\\\`|[^`\\n])*`/, Str
36
+ rule %r/(?:0x[\da-f]+|$0[\da-f]*|\d+[\da-f]*h)/i, Num::Hex
37
+ rule %r/[0-7]+q/i, Num::Oct
38
+ rule %r/[01]+b/i, Num::Bin
39
+ rule %r/\d+\.e?\d+/i, Num::Float
40
+ rule %r/\d+/, Num::Integer
41
+
42
+ mixin :punctuation
43
+
44
+ rule %r/r\d[0-5]?[bwd]|[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]/i, Name::Builtin
45
+ rule %r/[a-z$._?][\w$.?#@~]*/i, Name::Variable
46
+ rule %r/[\r\n]+/, Text, :pop!
47
+
48
+ mixin :whitespace
49
+ end
50
+
51
+ state :preproc do
52
+ rule %r/[^;\n]+/, Comment::Preproc
53
+ rule %r/;.*?\n/, Comment::Single, :pop!
54
+ rule %r/\n/, Comment::Preproc, :pop!
55
+ end
56
+
57
+ state :whitespace do
58
+ rule %r/\n/, Text
59
+ rule %r/[ \t]+/, Text
60
+ rule %r/;.*/, Comment::Single
61
+ end
62
+
63
+ state :punctuation do
64
+ rule %r/[,():\[\]]+/, Punctuation
65
+ rule %r/[&|^<>+*\/%~-]+/, Operator
66
+ rule %r/\$+/, Keyword::Constant
67
+ rule %r/seg|wrt|strict/i, Operator::Word
68
+ rule %r/byte|[dq]?word/i, Keyword::Type
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,78 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class NesAsm < RegexLexer
7
+ title "NesAsm"
8
+ desc "Nesasm3 assembly (6502 asm)"
9
+ tag 'nesasm'
10
+ aliases 'nes'
11
+ filenames '*.nesasm'
12
+
13
+ def self.keywords
14
+ @keywords ||= %w(
15
+ ADC AND ASL BIT BRK CMP CPX CPY DEC EOR INC JMP JSR LDA LDX LDY LSR
16
+ NOP ORA ROL ROR RTI RTS SBC STA STX STY TAX TXA DEX INX TAY TYA DEY
17
+ INY BPL BMI BVC BVS BCC BCS BNE BEQ CLC SEC CLI SEI CLV CLD SED TXS
18
+ TSX PHA PLA PHP PLP
19
+ )
20
+ end
21
+
22
+ def self.keywords_type
23
+ @keywords_type ||= %w(
24
+ DB DW BYTE WORD
25
+ )
26
+ end
27
+
28
+ def self.keywords_reserved
29
+ @keywords_reserved ||= %w(
30
+ INCBIN INCLUDE ORG BANK RSSET RS MACRO ENDM DS PROC ENDP PROCGROUP
31
+ ENDPROCGROUP INCCHR DEFCHR ZP BSS CODE DATA IF IFDEF IFNDEF ELSE
32
+ ENDIF FAIL INESPRG INESCHR INESMAP INESMIR FUNC
33
+ )
34
+ end
35
+
36
+ state :root do
37
+ rule %r/\s+/m, Text
38
+ rule %r(;.*), Comment::Single
39
+
40
+ rule %r/[\(\)\,\.\[\]]/, Punctuation
41
+ rule %r/\#?\%[0-1]+/, Num::Bin # #%00110011 %00110011
42
+ rule %r/\#?\$\h+/, Num::Hex # $1f #$1f
43
+ rule %r/\#?\d+/, Num # 10 #10
44
+ rule %r([~&*+=\|?:<>/-]), Operator
45
+
46
+ rule %r/\#?\w+:?/i do |m|
47
+ name = m[0].upcase
48
+
49
+ if self.class.keywords.include? name
50
+ token Keyword
51
+ elsif self.class.keywords_type.include? name
52
+ token Keyword::Type
53
+ elsif self.class.keywords_reserved.include? name
54
+ token Keyword::Reserved
55
+ else
56
+ token Name::Function
57
+ end
58
+ end
59
+
60
+ rule %r/\#?(?:LOW|HIGH)\(.*\)/i, Keyword::Reserved # LOW() #HIGH()
61
+
62
+ rule %r/\#\(/, Punctuation # #()
63
+
64
+ rule %r/"/, Str, :string
65
+
66
+ rule %r/'\w'/, Str::Char # 'A' for example
67
+
68
+ rule %r/\\\??[\d@#]/, Name::Builtin # builtin parameters for use inside macros and functions: \1-\9 , \?1-\?9 , \# , \@
69
+ end
70
+
71
+ state :string do
72
+ rule %r/"/, Str, :pop!
73
+ rule %r/\\"?/, Str::Escape
74
+ rule %r/[^"\\]+/m, Str
75
+ end
76
+ end
77
+ end
78
+ end