rouge 3.17.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 (429) 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 +93 -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/cython +6 -0
  41. data/lib/rouge/demos/d +16 -0
  42. data/lib/rouge/demos/dart +6 -0
  43. data/lib/rouge/demos/diff +7 -0
  44. data/lib/rouge/demos/digdag +19 -0
  45. data/lib/rouge/demos/docker +9 -0
  46. data/lib/rouge/demos/dot +5 -0
  47. data/lib/rouge/demos/ecl +18 -0
  48. data/lib/rouge/demos/eex +1 -0
  49. data/lib/rouge/demos/eiffel +30 -0
  50. data/lib/rouge/demos/elixir +1 -0
  51. data/lib/rouge/demos/elm +4 -0
  52. data/lib/rouge/demos/epp +4 -0
  53. data/lib/rouge/demos/erb +1 -0
  54. data/lib/rouge/demos/erlang +7 -0
  55. data/lib/rouge/demos/escape +3 -0
  56. data/lib/rouge/demos/factor +5 -0
  57. data/lib/rouge/demos/fortran +22 -0
  58. data/lib/rouge/demos/freefem +16 -0
  59. data/lib/rouge/demos/fsharp +12 -0
  60. data/lib/rouge/demos/gdscript +18 -0
  61. data/lib/rouge/demos/ghc-core +26 -0
  62. data/lib/rouge/demos/gherkin +17 -0
  63. data/lib/rouge/demos/glsl +14 -0
  64. data/lib/rouge/demos/go +7 -0
  65. data/lib/rouge/demos/gradle +10 -0
  66. data/lib/rouge/demos/graphql +17 -0
  67. data/lib/rouge/demos/groovy +9 -0
  68. data/lib/rouge/demos/hack +5 -0
  69. data/lib/rouge/demos/haml +5 -0
  70. data/lib/rouge/demos/handlebars +7 -0
  71. data/lib/rouge/demos/haskell +6 -0
  72. data/lib/rouge/demos/haxe +5 -0
  73. data/lib/rouge/demos/hcl +7 -0
  74. data/lib/rouge/demos/hocon +8 -0
  75. data/lib/rouge/demos/hql +5 -0
  76. data/lib/rouge/demos/html +8 -0
  77. data/lib/rouge/demos/http +14 -0
  78. data/lib/rouge/demos/hylang +10 -0
  79. data/lib/rouge/demos/idlang +8 -0
  80. data/lib/rouge/demos/igorpro +9 -0
  81. data/lib/rouge/demos/ini +4 -0
  82. data/lib/rouge/demos/io +11 -0
  83. data/lib/rouge/demos/irb +4 -0
  84. data/lib/rouge/demos/irb_output +2 -0
  85. data/lib/rouge/demos/java +5 -0
  86. data/lib/rouge/demos/javascript +1 -0
  87. data/lib/rouge/demos/jinja +9 -0
  88. data/lib/rouge/demos/jsl +3 -0
  89. data/lib/rouge/demos/json +1 -0
  90. data/lib/rouge/demos/json-doc +1 -0
  91. data/lib/rouge/demos/jsonnet +28 -0
  92. data/lib/rouge/demos/jsp +29 -0
  93. data/lib/rouge/demos/jsx +17 -0
  94. data/lib/rouge/demos/julia +11 -0
  95. data/lib/rouge/demos/kotlin +3 -0
  96. data/lib/rouge/demos/lasso +12 -0
  97. data/lib/rouge/demos/liquid +10 -0
  98. data/lib/rouge/demos/literate_coffeescript +3 -0
  99. data/lib/rouge/demos/literate_haskell +7 -0
  100. data/lib/rouge/demos/llvm +20 -0
  101. data/lib/rouge/demos/lua +12 -0
  102. data/lib/rouge/demos/lustre +6 -0
  103. data/lib/rouge/demos/lutin +18 -0
  104. data/lib/rouge/demos/m68k +16 -0
  105. data/lib/rouge/demos/magik +6 -0
  106. data/lib/rouge/demos/make +6 -0
  107. data/lib/rouge/demos/markdown +4 -0
  108. data/lib/rouge/demos/mason +22 -0
  109. data/lib/rouge/demos/mathematica +8 -0
  110. data/lib/rouge/demos/matlab +6 -0
  111. data/lib/rouge/demos/minizinc +23 -0
  112. data/lib/rouge/demos/moonscript +16 -0
  113. data/lib/rouge/demos/mosel +10 -0
  114. data/lib/rouge/demos/msgtrans +4 -0
  115. data/lib/rouge/demos/mxml +22 -0
  116. data/lib/rouge/demos/nasm +26 -0
  117. data/lib/rouge/demos/nesasm +11 -0
  118. data/lib/rouge/demos/nginx +5 -0
  119. data/lib/rouge/demos/nim +27 -0
  120. data/lib/rouge/demos/nix +19 -0
  121. data/lib/rouge/demos/objective_c +18 -0
  122. data/lib/rouge/demos/objective_cpp +17 -0
  123. data/lib/rouge/demos/ocaml +12 -0
  124. data/lib/rouge/demos/openedge +4 -0
  125. data/lib/rouge/demos/opentype_feature_file +6 -0
  126. data/lib/rouge/demos/pascal +14 -0
  127. data/lib/rouge/demos/perl +5 -0
  128. data/lib/rouge/demos/php +3 -0
  129. data/lib/rouge/demos/plaintext +1 -0
  130. data/lib/rouge/demos/plist +11 -0
  131. data/lib/rouge/demos/pony +17 -0
  132. data/lib/rouge/demos/powershell +13 -0
  133. data/lib/rouge/demos/praat +26 -0
  134. data/lib/rouge/demos/prolog +9 -0
  135. data/lib/rouge/demos/prometheus +9 -0
  136. data/lib/rouge/demos/properties +7 -0
  137. data/lib/rouge/demos/protobuf +5 -0
  138. data/lib/rouge/demos/puppet +6 -0
  139. data/lib/rouge/demos/python +6 -0
  140. data/lib/rouge/demos/q +8 -0
  141. data/lib/rouge/demos/qml +9 -0
  142. data/lib/rouge/demos/r +8 -0
  143. data/lib/rouge/demos/racket +24 -0
  144. data/lib/rouge/demos/reasonml +12 -0
  145. data/lib/rouge/demos/robot_framework +27 -0
  146. data/lib/rouge/demos/ruby +9 -0
  147. data/lib/rouge/demos/rust +12 -0
  148. data/lib/rouge/demos/sas +13 -0
  149. data/lib/rouge/demos/sass +3 -0
  150. data/lib/rouge/demos/scala +3 -0
  151. data/lib/rouge/demos/scheme +4 -0
  152. data/lib/rouge/demos/scss +5 -0
  153. data/lib/rouge/demos/sed +4 -0
  154. data/lib/rouge/demos/shell +2 -0
  155. data/lib/rouge/demos/sieve +10 -0
  156. data/lib/rouge/demos/slice +10 -0
  157. data/lib/rouge/demos/slim +17 -0
  158. data/lib/rouge/demos/smalltalk +6 -0
  159. data/lib/rouge/demos/smarty +12 -0
  160. data/lib/rouge/demos/sml +4 -0
  161. data/lib/rouge/demos/sparql +6 -0
  162. data/lib/rouge/demos/sqf +14 -0
  163. data/lib/rouge/demos/sql +1 -0
  164. data/lib/rouge/demos/supercollider +11 -0
  165. data/lib/rouge/demos/swift +5 -0
  166. data/lib/rouge/demos/tap +5 -0
  167. data/lib/rouge/demos/tcl +1 -0
  168. data/lib/rouge/demos/terraform +16 -0
  169. data/lib/rouge/demos/tex +1 -0
  170. data/lib/rouge/demos/toml +9 -0
  171. data/lib/rouge/demos/tsx +17 -0
  172. data/lib/rouge/demos/ttcn3 +6 -0
  173. data/lib/rouge/demos/tulip +13 -0
  174. data/lib/rouge/demos/turtle +26 -0
  175. data/lib/rouge/demos/twig +9 -0
  176. data/lib/rouge/demos/typescript +1 -0
  177. data/lib/rouge/demos/vala +8 -0
  178. data/lib/rouge/demos/vb +4 -0
  179. data/lib/rouge/demos/vcl +12 -0
  180. data/lib/rouge/demos/verilog +27 -0
  181. data/lib/rouge/demos/vhdl +23 -0
  182. data/lib/rouge/demos/viml +14 -0
  183. data/lib/rouge/demos/vue +11 -0
  184. data/lib/rouge/demos/wollok +11 -0
  185. data/lib/rouge/demos/xml +2 -0
  186. data/lib/rouge/demos/xojo +14 -0
  187. data/lib/rouge/demos/xpath +2 -0
  188. data/lib/rouge/demos/xquery +22 -0
  189. data/lib/rouge/demos/yaml +4 -0
  190. data/lib/rouge/formatter.rb +112 -0
  191. data/lib/rouge/formatters/html.rb +56 -0
  192. data/lib/rouge/formatters/html_inline.rb +31 -0
  193. data/lib/rouge/formatters/html_legacy.rb +45 -0
  194. data/lib/rouge/formatters/html_line_table.rb +53 -0
  195. data/lib/rouge/formatters/html_linewise.rb +23 -0
  196. data/lib/rouge/formatters/html_pygments.rb +18 -0
  197. data/lib/rouge/formatters/html_table.rb +51 -0
  198. data/lib/rouge/formatters/null.rb +20 -0
  199. data/lib/rouge/formatters/terminal256.rb +198 -0
  200. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  201. data/lib/rouge/formatters/tex.rb +92 -0
  202. data/lib/rouge/guesser.rb +57 -0
  203. data/lib/rouge/guessers/disambiguation.rb +136 -0
  204. data/lib/rouge/guessers/filename.rb +27 -0
  205. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  206. data/lib/rouge/guessers/mimetype.rb +16 -0
  207. data/lib/rouge/guessers/modeline.rb +46 -0
  208. data/lib/rouge/guessers/source.rb +31 -0
  209. data/lib/rouge/guessers/util.rb +34 -0
  210. data/lib/rouge/lexer.rb +516 -0
  211. data/lib/rouge/lexers/abap.rb +240 -0
  212. data/lib/rouge/lexers/actionscript.rb +196 -0
  213. data/lib/rouge/lexers/ada.rb +162 -0
  214. data/lib/rouge/lexers/apache.rb +73 -0
  215. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  216. data/lib/rouge/lexers/apex.rb +126 -0
  217. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  218. data/lib/rouge/lexers/apple_script.rb +370 -0
  219. data/lib/rouge/lexers/armasm.rb +145 -0
  220. data/lib/rouge/lexers/awk.rb +162 -0
  221. data/lib/rouge/lexers/batchfile.rb +164 -0
  222. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  223. data/lib/rouge/lexers/biml.rb +43 -0
  224. data/lib/rouge/lexers/bpf.rb +118 -0
  225. data/lib/rouge/lexers/brainfuck.rb +53 -0
  226. data/lib/rouge/lexers/bsl.rb +82 -0
  227. data/lib/rouge/lexers/c.rb +190 -0
  228. data/lib/rouge/lexers/ceylon.rb +96 -0
  229. data/lib/rouge/lexers/cfscript.rb +154 -0
  230. data/lib/rouge/lexers/clean.rb +156 -0
  231. data/lib/rouge/lexers/clojure.rb +113 -0
  232. data/lib/rouge/lexers/cmake.rb +207 -0
  233. data/lib/rouge/lexers/cmhg.rb +34 -0
  234. data/lib/rouge/lexers/coffeescript.rb +215 -0
  235. data/lib/rouge/lexers/common_lisp.rb +346 -0
  236. data/lib/rouge/lexers/conf.rb +25 -0
  237. data/lib/rouge/lexers/console.rb +174 -0
  238. data/lib/rouge/lexers/coq.rb +191 -0
  239. data/lib/rouge/lexers/cpp.rb +82 -0
  240. data/lib/rouge/lexers/crystal.rb +430 -0
  241. data/lib/rouge/lexers/csharp.rb +114 -0
  242. data/lib/rouge/lexers/css.rb +274 -0
  243. data/lib/rouge/lexers/csvs.rb +44 -0
  244. data/lib/rouge/lexers/cuda.rb +35 -0
  245. data/lib/rouge/lexers/cython.rb +151 -0
  246. data/lib/rouge/lexers/d.rb +177 -0
  247. data/lib/rouge/lexers/dart.rb +105 -0
  248. data/lib/rouge/lexers/diff.rb +37 -0
  249. data/lib/rouge/lexers/digdag.rb +70 -0
  250. data/lib/rouge/lexers/docker.rb +51 -0
  251. data/lib/rouge/lexers/dot.rb +69 -0
  252. data/lib/rouge/lexers/ecl.rb +175 -0
  253. data/lib/rouge/lexers/eex.rb +52 -0
  254. data/lib/rouge/lexers/eiffel.rb +66 -0
  255. data/lib/rouge/lexers/elixir.rb +149 -0
  256. data/lib/rouge/lexers/elm.rb +90 -0
  257. data/lib/rouge/lexers/epp.rb +51 -0
  258. data/lib/rouge/lexers/erb.rb +53 -0
  259. data/lib/rouge/lexers/erlang.rb +115 -0
  260. data/lib/rouge/lexers/escape.rb +58 -0
  261. data/lib/rouge/lexers/factor.rb +303 -0
  262. data/lib/rouge/lexers/fortran.rb +178 -0
  263. data/lib/rouge/lexers/freefem.rb +240 -0
  264. data/lib/rouge/lexers/fsharp.rb +119 -0
  265. data/lib/rouge/lexers/gdscript.rb +171 -0
  266. data/lib/rouge/lexers/ghc_core.rb +151 -0
  267. data/lib/rouge/lexers/gherkin.rb +140 -0
  268. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  269. data/lib/rouge/lexers/glsl.rb +132 -0
  270. data/lib/rouge/lexers/go.rb +175 -0
  271. data/lib/rouge/lexers/gradle.rb +38 -0
  272. data/lib/rouge/lexers/graphql.rb +261 -0
  273. data/lib/rouge/lexers/groovy.rb +111 -0
  274. data/lib/rouge/lexers/hack.rb +49 -0
  275. data/lib/rouge/lexers/haml.rb +226 -0
  276. data/lib/rouge/lexers/handlebars.rb +91 -0
  277. data/lib/rouge/lexers/haskell.rb +199 -0
  278. data/lib/rouge/lexers/haxe.rb +246 -0
  279. data/lib/rouge/lexers/hcl.rb +163 -0
  280. data/lib/rouge/lexers/hocon.rb +86 -0
  281. data/lib/rouge/lexers/hql.rb +139 -0
  282. data/lib/rouge/lexers/html.rb +141 -0
  283. data/lib/rouge/lexers/http.rb +81 -0
  284. data/lib/rouge/lexers/hylang.rb +94 -0
  285. data/lib/rouge/lexers/idlang.rb +312 -0
  286. data/lib/rouge/lexers/igorpro.rb +664 -0
  287. data/lib/rouge/lexers/ini.rb +54 -0
  288. data/lib/rouge/lexers/io.rb +69 -0
  289. data/lib/rouge/lexers/irb.rb +67 -0
  290. data/lib/rouge/lexers/java.rb +91 -0
  291. data/lib/rouge/lexers/javascript.rb +279 -0
  292. data/lib/rouge/lexers/jinja.rb +154 -0
  293. data/lib/rouge/lexers/jsl.rb +55 -0
  294. data/lib/rouge/lexers/json.rb +69 -0
  295. data/lib/rouge/lexers/json_doc.rb +25 -0
  296. data/lib/rouge/lexers/jsonnet.rb +152 -0
  297. data/lib/rouge/lexers/jsp.rb +120 -0
  298. data/lib/rouge/lexers/jsx.rb +104 -0
  299. data/lib/rouge/lexers/julia.rb +290 -0
  300. data/lib/rouge/lexers/kotlin.rb +127 -0
  301. data/lib/rouge/lexers/lasso.rb +215 -0
  302. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  303. data/lib/rouge/lexers/liquid.rb +285 -0
  304. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  305. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  306. data/lib/rouge/lexers/llvm.rb +97 -0
  307. data/lib/rouge/lexers/lua.rb +164 -0
  308. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  309. data/lib/rouge/lexers/lustre.rb +79 -0
  310. data/lib/rouge/lexers/lutin.rb +33 -0
  311. data/lib/rouge/lexers/m68k.rb +143 -0
  312. data/lib/rouge/lexers/magik.rb +127 -0
  313. data/lib/rouge/lexers/make.rb +135 -0
  314. data/lib/rouge/lexers/markdown.rb +182 -0
  315. data/lib/rouge/lexers/mason.rb +110 -0
  316. data/lib/rouge/lexers/mathematica.rb +96 -0
  317. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  318. data/lib/rouge/lexers/matlab.rb +81 -0
  319. data/lib/rouge/lexers/matlab/builtins.yml +3515 -0
  320. data/lib/rouge/lexers/minizinc.rb +87 -0
  321. data/lib/rouge/lexers/moonscript.rb +115 -0
  322. data/lib/rouge/lexers/mosel.rb +232 -0
  323. data/lib/rouge/lexers/msgtrans.rb +26 -0
  324. data/lib/rouge/lexers/mxml.rb +69 -0
  325. data/lib/rouge/lexers/nasm.rb +72 -0
  326. data/lib/rouge/lexers/nesasm.rb +78 -0
  327. data/lib/rouge/lexers/nginx.rb +72 -0
  328. data/lib/rouge/lexers/nim.rb +154 -0
  329. data/lib/rouge/lexers/nix.rb +211 -0
  330. data/lib/rouge/lexers/objective_c.rb +21 -0
  331. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  332. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  333. data/lib/rouge/lexers/ocaml.rb +65 -0
  334. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  335. data/lib/rouge/lexers/openedge.rb +429 -0
  336. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  337. data/lib/rouge/lexers/pascal.rb +67 -0
  338. data/lib/rouge/lexers/perl.rb +231 -0
  339. data/lib/rouge/lexers/php.rb +216 -0
  340. data/lib/rouge/lexers/php/builtins.rb +203 -0
  341. data/lib/rouge/lexers/plain_text.rb +27 -0
  342. data/lib/rouge/lexers/plist.rb +47 -0
  343. data/lib/rouge/lexers/pony.rb +94 -0
  344. data/lib/rouge/lexers/powershell.rb +230 -0
  345. data/lib/rouge/lexers/praat.rb +351 -0
  346. data/lib/rouge/lexers/prolog.rb +67 -0
  347. data/lib/rouge/lexers/prometheus.rb +123 -0
  348. data/lib/rouge/lexers/properties.rb +52 -0
  349. data/lib/rouge/lexers/protobuf.rb +71 -0
  350. data/lib/rouge/lexers/puppet.rb +129 -0
  351. data/lib/rouge/lexers/python.rb +248 -0
  352. data/lib/rouge/lexers/q.rb +126 -0
  353. data/lib/rouge/lexers/qml.rb +74 -0
  354. data/lib/rouge/lexers/r.rb +89 -0
  355. data/lib/rouge/lexers/racket.rb +545 -0
  356. data/lib/rouge/lexers/reasonml.rb +65 -0
  357. data/lib/rouge/lexers/robot_framework.rb +249 -0
  358. data/lib/rouge/lexers/ruby.rb +444 -0
  359. data/lib/rouge/lexers/rust.rb +193 -0
  360. data/lib/rouge/lexers/sas.rb +563 -0
  361. data/lib/rouge/lexers/sass.rb +75 -0
  362. data/lib/rouge/lexers/sass/common.rb +181 -0
  363. data/lib/rouge/lexers/scala.rb +169 -0
  364. data/lib/rouge/lexers/scheme.rb +113 -0
  365. data/lib/rouge/lexers/scss.rb +35 -0
  366. data/lib/rouge/lexers/sed.rb +173 -0
  367. data/lib/rouge/lexers/shell.rb +201 -0
  368. data/lib/rouge/lexers/sieve.rb +97 -0
  369. data/lib/rouge/lexers/slice.rb +32 -0
  370. data/lib/rouge/lexers/slim.rb +229 -0
  371. data/lib/rouge/lexers/smalltalk.rb +117 -0
  372. data/lib/rouge/lexers/smarty.rb +81 -0
  373. data/lib/rouge/lexers/sml.rb +345 -0
  374. data/lib/rouge/lexers/sparql.rb +129 -0
  375. data/lib/rouge/lexers/sqf.rb +109 -0
  376. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  377. data/lib/rouge/lexers/sql.rb +161 -0
  378. data/lib/rouge/lexers/supercollider.rb +116 -0
  379. data/lib/rouge/lexers/swift.rb +186 -0
  380. data/lib/rouge/lexers/tap.rb +89 -0
  381. data/lib/rouge/lexers/tcl.rb +193 -0
  382. data/lib/rouge/lexers/terraform.rb +113 -0
  383. data/lib/rouge/lexers/tex.rb +70 -0
  384. data/lib/rouge/lexers/toml.rb +106 -0
  385. data/lib/rouge/lexers/tsx.rb +20 -0
  386. data/lib/rouge/lexers/ttcn3.rb +119 -0
  387. data/lib/rouge/lexers/tulip.rb +108 -0
  388. data/lib/rouge/lexers/turtle.rb +61 -0
  389. data/lib/rouge/lexers/twig.rb +40 -0
  390. data/lib/rouge/lexers/typescript.rb +30 -0
  391. data/lib/rouge/lexers/typescript/common.rb +34 -0
  392. data/lib/rouge/lexers/vala.rb +78 -0
  393. data/lib/rouge/lexers/varnish.rb +168 -0
  394. data/lib/rouge/lexers/vb.rb +165 -0
  395. data/lib/rouge/lexers/verilog.rb +163 -0
  396. data/lib/rouge/lexers/vhdl.rb +98 -0
  397. data/lib/rouge/lexers/viml.rb +102 -0
  398. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  399. data/lib/rouge/lexers/vue.rb +124 -0
  400. data/lib/rouge/lexers/wollok.rb +104 -0
  401. data/lib/rouge/lexers/xml.rb +54 -0
  402. data/lib/rouge/lexers/xojo.rb +61 -0
  403. data/lib/rouge/lexers/xpath.rb +332 -0
  404. data/lib/rouge/lexers/xquery.rb +145 -0
  405. data/lib/rouge/lexers/yaml.rb +376 -0
  406. data/lib/rouge/plugins/redcarpet.rb +37 -0
  407. data/lib/rouge/regex_lexer.rb +443 -0
  408. data/lib/rouge/template_lexer.rb +21 -0
  409. data/lib/rouge/tex_theme_renderer.rb +132 -0
  410. data/lib/rouge/text_analyzer.rb +50 -0
  411. data/lib/rouge/theme.rb +218 -0
  412. data/lib/rouge/themes/base16.rb +131 -0
  413. data/lib/rouge/themes/bw.rb +41 -0
  414. data/lib/rouge/themes/colorful.rb +68 -0
  415. data/lib/rouge/themes/github.rb +72 -0
  416. data/lib/rouge/themes/gruvbox.rb +168 -0
  417. data/lib/rouge/themes/igor_pro.rb +21 -0
  418. data/lib/rouge/themes/magritte.rb +78 -0
  419. data/lib/rouge/themes/molokai.rb +83 -0
  420. data/lib/rouge/themes/monokai.rb +93 -0
  421. data/lib/rouge/themes/monokai_sublime.rb +93 -0
  422. data/lib/rouge/themes/pastie.rb +70 -0
  423. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  424. data/lib/rouge/themes/tulip.rb +70 -0
  425. data/lib/rouge/token.rb +191 -0
  426. data/lib/rouge/util.rb +102 -0
  427. data/lib/rouge/version.rb +8 -0
  428. data/rouge.gemspec +26 -0
  429. metadata +476 -0
@@ -0,0 +1,351 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Praat < RegexLexer
7
+ title "Praat"
8
+ desc "The Praat scripting language (praat.org)"
9
+
10
+ tag 'praat'
11
+
12
+ filenames '*.praat', '*.proc', '*.psc'
13
+
14
+ def self.detect?(text)
15
+ return true if text.shebang? 'praat'
16
+ end
17
+
18
+ keywords = %w(
19
+ if then else elsif elif endif fi for from to endfor endproc while
20
+ endwhile repeat until select plus minus demo assert stopwatch
21
+ nocheck nowarn noprogress editor endeditor clearinfo
22
+ )
23
+
24
+ functions_string = %w(
25
+ backslashTrigraphsToUnicode chooseDirectory chooseReadFile
26
+ chooseWriteFile date demoKey do environment extractLine extractWord
27
+ fixed info left mid percent readFile replace replace_regex right
28
+ selected string unicodeToBackslashTrigraphs
29
+ )
30
+
31
+ functions_numeric = %w(
32
+ abs appendFile appendFileLine appendInfo appendInfoLine arccos arccosh
33
+ arcsin arcsinh arctan arctan2 arctanh barkToHertz beginPause
34
+ beginSendPraat besselI besselK beta beta2 binomialP binomialQ boolean
35
+ ceiling chiSquareP chiSquareQ choice comment cos cosh createDirectory
36
+ deleteFile demoClicked demoClickedIn demoCommandKeyPressed
37
+ demoExtraControlKeyPressed demoInput demoKeyPressed
38
+ demoOptionKeyPressed demoShiftKeyPressed demoShow demoWaitForInput
39
+ demoWindowTitle demoX demoY differenceLimensToPhon do editor endPause
40
+ endSendPraat endsWith erb erbToHertz erf erfc exitScript exp
41
+ extractNumber fileReadable fisherP fisherQ floor gaussP gaussQ hash
42
+ hertzToBark hertzToErb hertzToMel hertzToSemitones imax imin
43
+ incompleteBeta incompleteGammaP index index_regex integer invBinomialP
44
+ invBinomialQ invChiSquareQ invFisherQ invGaussQ invSigmoid invStudentQ
45
+ length ln lnBeta lnGamma log10 log2 max melToHertz min minusObject
46
+ natural number numberOfColumns numberOfRows numberOfSelected
47
+ objectsAreIdentical option optionMenu pauseScript
48
+ phonToDifferenceLimens plusObject positive randomBinomial randomGauss
49
+ randomInteger randomPoisson randomUniform real readFile removeObject
50
+ rindex rindex_regex round runScript runSystem runSystem_nocheck
51
+ selectObject selected semitonesToHertz sentence sentencetext sigmoid
52
+ sin sinc sincpi sinh soundPressureToPhon sqrt startsWith studentP
53
+ studentQ tan tanh text variableExists word writeFile writeFileLine
54
+ writeInfo writeInfoLine
55
+ )
56
+
57
+ functions_array = %w(
58
+ linear randomGauss randomInteger randomUniform zero
59
+ )
60
+
61
+ objects = %w(
62
+ Activation AffineTransform AmplitudeTier Art Artword Autosegment
63
+ BarkFilter BarkSpectrogram CCA Categories Cepstrogram Cepstrum
64
+ Cepstrumc ChebyshevSeries ClassificationTable Cochleagram Collection
65
+ ComplexSpectrogram Configuration Confusion ContingencyTable Corpus
66
+ Correlation Covariance CrossCorrelationTable CrossCorrelationTableList
67
+ CrossCorrelationTables DTW DataModeler Diagonalizer Discriminant
68
+ Dissimilarity Distance Distributions DurationTier EEG ERP ERPTier
69
+ EditCostsTable EditDistanceTable Eigen Excitation Excitations
70
+ ExperimentMFC FFNet FeatureWeights FileInMemory FilesInMemory Formant
71
+ FormantFilter FormantGrid FormantModeler FormantPoint FormantTier
72
+ GaussianMixture HMM HMM_Observation HMM_ObservationSequence HMM_State
73
+ HMM_StateSequence HMMObservation HMMObservationSequence HMMState
74
+ HMMStateSequence Harmonicity ISpline Index Intensity IntensityTier
75
+ IntervalTier KNN KlattGrid KlattTable LFCC LPC Label LegendreSeries
76
+ LinearRegression LogisticRegression LongSound Ltas MFCC MSpline ManPages
77
+ Manipulation Matrix MelFilter MelSpectrogram MixingMatrix Movie Network
78
+ OTGrammar OTHistory OTMulti PCA PairDistribution ParamCurve Pattern
79
+ Permutation Photo Pitch PitchModeler PitchTier PointProcess Polygon
80
+ Polynomial PowerCepstrogram PowerCepstrum Procrustes RealPoint RealTier
81
+ ResultsMFC Roots SPINET SSCP SVD Salience ScalarProduct Similarity
82
+ SimpleString SortedSetOfString Sound Speaker Spectrogram Spectrum
83
+ SpectrumTier SpeechSynthesizer SpellingChecker Strings StringsIndex
84
+ Table TableOfReal TextGrid TextInterval TextPoint TextTier Tier
85
+ Transition VocalTract VocalTractTier Weight WordList
86
+ )
87
+
88
+ variables_numeric = %w(
89
+ all average e left macintosh mono pi praatVersion right stereo
90
+ undefined unix windows
91
+ )
92
+
93
+ variables_string = %w(
94
+ praatVersion tab shellDirectory homeDirectory
95
+ preferencesDirectory newline temporaryDirectory
96
+ defaultDirectory
97
+ )
98
+
99
+ object_attributes = %w(
100
+ ncol nrow xmin ymin xmax ymax nx ny dx dy
101
+ )
102
+
103
+ state :root do
104
+ rule %r/(\s+)(#.*?$)/ do
105
+ groups Text, Comment::Single
106
+ end
107
+
108
+ rule %r/^#.*?$/, Comment::Single
109
+ rule %r/;[^\n]*/, Comment::Single
110
+ rule %r/\s+/, Text
111
+
112
+ rule %r/(\bprocedure)(\s+)/ do
113
+ groups Keyword, Text
114
+ push :procedure_definition
115
+ end
116
+
117
+ rule %r/(\bcall)(\s+)/ do
118
+ groups Keyword, Text
119
+ push :procedure_call
120
+ end
121
+
122
+ rule %r/@/, Name::Function, :procedure_call
123
+
124
+ mixin :function_call
125
+
126
+ rule %r/\b(?:select all)\b/, Keyword
127
+ rule %r/\b(?:#{keywords.join('|')})\b/, Keyword
128
+
129
+ rule %r/(\bform\b)(\s+)([^\n]+)/ do
130
+ groups Keyword, Text, Literal::String
131
+ push :old_form
132
+ end
133
+
134
+ rule %r/(print(?:line|tab)?|echo|exit|asserterror|pause|send(?:praat|socket)|include|execute|system(?:_nocheck)?)(\s+)/ do
135
+ groups Keyword, Text
136
+ push :string_unquoted
137
+ end
138
+
139
+ rule %r/(goto|label)(\s+)(\w+)/ do
140
+ groups Keyword, Text, Name::Label
141
+ end
142
+
143
+ mixin :variable_name
144
+ mixin :number
145
+
146
+ rule %r/"/, Literal::String, :string
147
+
148
+ rule %r/\b(?:#{objects.join('|')})(?=\s+\S+\n)/, Name::Class, :string_unquoted
149
+
150
+ rule %r/\b(?=[A-Z])/, Text, :command
151
+ rule %r/(\.{3}|[)(,\$])/, Punctuation
152
+ end
153
+
154
+ state :command do
155
+ rule %r/( ?([^\s:\.'])+ ?)/, Keyword
156
+ mixin :string_interpolated
157
+
158
+ rule %r/\.{3}/ do
159
+ token Keyword
160
+ pop!
161
+ push :old_arguments
162
+ end
163
+
164
+ rule %r/:/ do
165
+ token Keyword
166
+ pop!
167
+ push :comma_list
168
+ end
169
+
170
+ rule %r/[\s]/, Text, :pop!
171
+ end
172
+
173
+ state :procedure_call do
174
+ mixin :string_interpolated
175
+
176
+ rule %r/(:|\s*\()/, Punctuation, :pop!
177
+
178
+ rule %r/'/, Name::Function
179
+ rule %r/[^:\('\s]+/, Name::Function
180
+
181
+ rule %r/(?=\s+)/ do
182
+ token Text
183
+ pop!
184
+ push :old_arguments
185
+ end
186
+ end
187
+
188
+ state :procedure_definition do
189
+ rule %r/(:|\s*\()/, Punctuation, :pop!
190
+
191
+ rule %r/[^:\(\s]+/, Name::Function
192
+
193
+ rule %r/(\s+)/, Text, :pop!
194
+ end
195
+
196
+ state :function_call do
197
+ rule %r/\b(#{functions_string.join('|')})\$(?=\s*[:(])/, Name::Function, :function
198
+ rule %r/\b(#{functions_array.join('|')})#(?=\s*[:(])/, Name::Function, :function
199
+ rule %r/\b(#{functions_numeric.join('|')})(?=\s*[:(])/, Name::Function, :function
200
+ end
201
+
202
+ state :function do
203
+ rule %r/\s+/, Text
204
+
205
+ rule %r/(?::|\s*\()/ do
206
+ token Text
207
+ pop!
208
+ push :comma_list
209
+ end
210
+ end
211
+
212
+ state :comma_list do
213
+ rule %r/(\s*\n\s*)(\.{3})/ do
214
+ groups Text, Punctuation
215
+ end
216
+
217
+ rule %r/\s*[\])\n]/, Text, :pop!
218
+
219
+ rule %r/\s+/, Text
220
+ rule %r/"/, Literal::String, :string
221
+ rule %r/\b(if|then|else|fi|endif)\b/, Keyword
222
+
223
+ mixin :function_call
224
+ mixin :variable_name
225
+ mixin :operator
226
+ mixin :number
227
+
228
+ rule %r/[()]/, Text
229
+ rule %r/,/, Punctuation
230
+ end
231
+
232
+ state :old_arguments do
233
+ rule %r/\n/, Text, :pop!
234
+
235
+ mixin :variable_name
236
+ mixin :operator
237
+ mixin :number
238
+
239
+ rule %r/"/, Literal::String, :string
240
+ rule %r/[^\n]/, Text
241
+ end
242
+
243
+ state :number do
244
+ rule %r/\n/, Text, :pop!
245
+ rule %r/\b\d+(\.\d*)?([eE][-+]?\d+)?%?/, Literal::Number
246
+ end
247
+
248
+ state :variable_name do
249
+ mixin :operator
250
+ mixin :number
251
+
252
+ rule %r/\b(?:#{variables_string.join('|')})\$/, Name::Builtin
253
+ rule %r/\b(?:#{variables_numeric.join('|')})(?!\$)\b/, Name::Builtin
254
+
255
+ rule %r/\b(Object|#{objects.join('|')})_/ do
256
+ token Name::Builtin
257
+ push :object_reference
258
+ end
259
+
260
+ rule %r/\.?[a-z][a-zA-Z0-9_.]*(\$|#)?/, Text
261
+ rule %r/[\[\]]/, Text, :comma_list
262
+ mixin :string_interpolated
263
+ end
264
+
265
+ state :object_reference do
266
+ mixin :string_interpolated
267
+ rule %r/([a-z][a-zA-Z0-9_]*|\d+)/, Name::Builtin
268
+
269
+ rule %r/\.(#{object_attributes.join('|')})\b/, Name::Builtin, :pop!
270
+
271
+ rule %r/\$/, Name::Builtin
272
+ rule %r/\[/, Text, :pop!
273
+ end
274
+
275
+ state :operator do
276
+ # This rule incorrectly matches === or +++++, which are not operators
277
+ rule %r/([+\/*<>=!-]=?|[&*|][&*|]?|\^|<>)/, Operator
278
+ rule %r/(?<![\w.])(and|or|not|div|mod)(?![\w.])/, Operator::Word
279
+ end
280
+
281
+ state :string_interpolated do
282
+ rule %r/'[\._a-z][^\[\]'":]*(\[([\d,]+|"[\w,]+")\])?(:[0-9]+)?'/, Literal::String::Interpol
283
+ end
284
+
285
+ state :string_unquoted do
286
+ rule %r/\n\s*\.{3}/, Punctuation
287
+ rule %r/\n/, Text, :pop!
288
+ rule %r/\s/, Text
289
+
290
+ mixin :string_interpolated
291
+
292
+ rule %r/'/, Literal::String
293
+ rule %r/[^'\n]+/, Literal::String
294
+ end
295
+
296
+ state :string do
297
+ rule %r/\n\s*\.{3}/, Punctuation
298
+ rule %r/"/, Literal::String, :pop!
299
+
300
+ mixin :string_interpolated
301
+
302
+ rule %r/'/, Literal::String
303
+ rule %r/[^'"\n]+/, Literal::String
304
+ end
305
+
306
+ state :old_form do
307
+ rule %r/(\s+)(#.*?$)/ do
308
+ groups Text, Comment::Single
309
+ end
310
+
311
+ rule %r/\s+/, Text
312
+
313
+ rule %r/(optionmenu|choice)([ \t]+\S+:[ \t]+)/ do
314
+ groups Keyword, Text
315
+ push :number
316
+ end
317
+
318
+ rule %r/(option|button)([ \t]+)/ do
319
+ groups Keyword, Text
320
+ push :string_unquoted
321
+ end
322
+
323
+ rule %r/(sentence|text)([ \t]+\S+)/ do
324
+ groups Keyword, Text
325
+ push :string_unquoted
326
+ end
327
+
328
+ rule %r/(word)([ \t]+\S+[ \t]*)(\S+)?([ \t]+.*)?/ do
329
+ groups Keyword, Text, Literal::String, Text
330
+ end
331
+
332
+ rule %r/(boolean)(\s+\S+\s*)(0|1|"?(?:yes|no)"?)/ do
333
+ groups Keyword, Text, Name::Variable
334
+ end
335
+
336
+ rule %r/(real|natural|positive|integer)([ \t]+\S+[ \t]*)([+-]?)/ do
337
+ groups Keyword, Text, Operator
338
+ push :number
339
+ end
340
+
341
+ rule %r/(comment)(\s+)/ do
342
+ groups Keyword, Text
343
+ push :string_unquoted
344
+ end
345
+
346
+ rule %r/\bendform\b/, Keyword, :pop!
347
+ end
348
+
349
+ end
350
+ end
351
+ end
@@ -0,0 +1,67 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Prolog < RegexLexer
7
+ title "Prolog"
8
+ desc "The Prolog programming language (http://en.wikipedia.org/wiki/Prolog)"
9
+ tag 'prolog'
10
+ aliases 'prolog'
11
+ filenames '*.pro', '*.P', '*.prolog', '*.pl'
12
+ mimetypes 'text/x-prolog'
13
+
14
+ start { push :bol }
15
+
16
+ state :bol do
17
+ rule %r/#.*/, Comment::Single
18
+ rule(//) { pop! }
19
+ end
20
+
21
+ state :basic do
22
+ rule %r/\s+/, Text
23
+ rule %r/%.*/, Comment::Single
24
+ rule %r/\/\*/, Comment::Multiline, :nested_comment
25
+
26
+ rule %r/[\[\](){}|.,;!]/, Punctuation
27
+ rule %r/:-|-->/, Punctuation
28
+
29
+ rule %r/"[^"]*"/, Str::Double
30
+
31
+ rule %r/\d+\.\d+/, Num::Float
32
+ rule %r/\d+/, Num
33
+ end
34
+
35
+ state :atoms do
36
+ rule %r/[[:lower:]]([[:word:]])*/, Str::Symbol
37
+ rule %r/'[^']*'/, Str::Symbol
38
+ end
39
+
40
+ state :operators do
41
+ rule %r/(<|>|=<|>=|==|=:=|=|\/|\/\/|\*|\+|-)(?=\s|[a-zA-Z0-9\[])/,
42
+ Operator
43
+ rule %r/is/, Operator
44
+ rule %r/(mod|div|not)/, Operator
45
+ rule %r/[#&*+-.\/:<=>?@^~]+/, Operator
46
+ end
47
+
48
+ state :variables do
49
+ rule %r/[A-Z]+\w*/, Name::Variable
50
+ rule %r/_[[:word:]]*/, Name::Variable
51
+ end
52
+
53
+ state :root do
54
+ mixin :basic
55
+ mixin :atoms
56
+ mixin :variables
57
+ mixin :operators
58
+ end
59
+
60
+ state :nested_comment do
61
+ rule %r(/\*), Comment::Multiline, :push
62
+ rule %r/\s*\*[^*\/]+/, Comment::Multiline
63
+ rule %r(\*/), Comment::Multiline, :pop!
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,123 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Prometheus < RegexLexer
6
+ desc 'prometheus'
7
+ tag 'prometheus'
8
+ aliases 'prometheus'
9
+ filenames '*.prometheus'
10
+
11
+ mimetypes 'text/x-prometheus', 'application/x-prometheus'
12
+
13
+ def self.functions
14
+ @functions ||= Set.new %w(
15
+ abs absent ceil changes clamp_max clamp_min count_scalar day_of_month
16
+ day_of_week days_in_month delta deriv drop_common_labels exp floor
17
+ histogram_quantile holt_winters hour idelta increase irate label_replace
18
+ ln log2 log10 month predict_linear rate resets round scalar sort
19
+ sort_desc sqrt time vector year avg_over_time min_over_time
20
+ max_over_time sum_over_time count_over_time quantile_over_time
21
+ stddev_over_time stdvar_over_time
22
+ )
23
+ end
24
+
25
+ state :root do
26
+ mixin :strings
27
+ mixin :whitespace
28
+
29
+ rule %r/-?\d+\.\d+/, Num::Float
30
+ rule %r/-?\d+[smhdwy]?/, Num::Integer
31
+
32
+ mixin :operators
33
+
34
+ rule %r/(ignoring|on)(\()/ do
35
+ groups Keyword::Pseudo, Punctuation
36
+ push :label_list
37
+ end
38
+ rule %r/(group_left|group_right)(\()/ do
39
+ groups Keyword::Type, Punctuation
40
+ end
41
+ rule %r/(bool|offset)\b/, Keyword
42
+ rule %r/(without|by)\b/, Keyword, :label_list
43
+ rule %r/[\w:]+/ do |m|
44
+ if self.class.functions.include?(m[0])
45
+ token Name::Builtin
46
+ else
47
+ token Name
48
+ end
49
+ end
50
+
51
+ mixin :metrics
52
+ end
53
+
54
+ state :metrics do
55
+ rule %r/[a-zA-Z0-9_-]+/, Name
56
+
57
+ rule %r/[\(\)\]:.,]/, Punctuation
58
+ rule %r/\{/, Punctuation, :filters
59
+ rule %r/\[/, Punctuation
60
+ end
61
+
62
+ state :strings do
63
+ rule %r/"/, Str::Double, :double_string_escaped
64
+ rule %r/'/, Str::Single, :single_string_escaped
65
+ rule %r/`.*`/, Str::Backtick
66
+ end
67
+
68
+ [
69
+ [:double, Str::Double, '"'],
70
+ [:single, Str::Single, "'"]
71
+ ].each do |name, tok, fin|
72
+ state :"#{name}_string_escaped" do
73
+ rule %r/\\[\\abfnrtv#{fin}]/, Str::Escape
74
+ rule %r/[^\\#{fin}]+/m, tok
75
+ rule %r/#{fin}/, tok, :pop!
76
+ end
77
+ end
78
+
79
+ state :filters do
80
+ mixin :inline_whitespace
81
+ rule %r/,/, Punctuation
82
+ mixin :labels
83
+ mixin :filter_matching_operators
84
+ mixin :strings
85
+ rule %r/}/, Punctuation, :pop!
86
+ end
87
+
88
+ state :label_list do
89
+ rule %r/\(/, Punctuation
90
+ rule %r/[a-zA-Z0-9_:-]+/, Name::Attribute
91
+ rule %r/,/, Punctuation
92
+ mixin :whitespace
93
+ rule %r/\)/, Punctuation, :pop!
94
+ end
95
+
96
+ state :labels do
97
+ rule %r/[a-zA-Z0-9_:-]+/, Name::Attribute
98
+ end
99
+
100
+ state :operators do
101
+ rule %r([+\-\*/%\^]), Operator # Arithmetic
102
+ rule %r(=|==|!=|<|>|<=|>=), Operator # Comparison
103
+ rule %r/and|or|unless/, Operator # Logical/Set
104
+ rule %r/(sum|min|max|avg|stddev|stdvar|count|count_values|bottomk|topk)\b/, Name::Function
105
+ end
106
+
107
+ state :filter_matching_operators do
108
+ rule %r/!(=|~)|=~?/, Operator
109
+ end
110
+
111
+ state :inline_whitespace do
112
+ rule %r/[ \t\r]+/, Text
113
+ end
114
+
115
+ state :whitespace do
116
+ mixin :inline_whitespace
117
+ rule %r/\n\s*/m, Text
118
+ rule %r/#.*?$/, Comment
119
+ end
120
+ end
121
+ end
122
+ end
123
+