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,145 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class ArmAsm < RegexLexer
7
+ title "ArmAsm"
8
+ desc "Arm assembly syntax"
9
+ tag 'armasm'
10
+ filenames '*.s'
11
+
12
+ def self.preproc_keyword
13
+ @preproc_keyword ||= %w(
14
+ define elif else endif error if ifdef ifndef include line pragma undef warning
15
+ )
16
+ end
17
+
18
+ def self.file_directive
19
+ @file_directive ||= %w(
20
+ BIN GET INCBIN INCLUDE LNK
21
+ )
22
+ end
23
+
24
+ def self.general_directive
25
+ @general_directive ||= %w(
26
+ ALIAS ALIGN AOF AOUT AREA ARM ASSERT ATTR CN CODE16 CODE32 COMMON CP
27
+ DATA DCB DCD DCDO DCDU DCFD DCFDU DCFH DCFHU DCFS DCFSU DCI DCI.N DCI.W
28
+ DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT
29
+ EXPORTAS EXTERN FIELD FILL FN FRAME FUNCTION GBLA GBLL GBLS GLOBAL IF
30
+ IMPORT INFO KEEP LCLA LCLL LCLS LEADR LEAF LTORG MACRO MAP MEND MEXIT
31
+ NOFP OPT ORG PRESERVE8 PROC QN RELOC REQUIRE REQUIRE8 RLIST RN ROUT
32
+ SETA SETL SETS SN SPACE STRONG SUBT THUMB THUMBX TTL WEND WHILE
33
+ \[ \] [|!#*=%&^]
34
+ )
35
+ end
36
+
37
+ def self.shift_or_condition
38
+ @shift_or_condition ||= %w(
39
+ ASR LSL LSR ROR RRX AL CC CS EQ GE GT HI HS LE LO LS LT MI NE PL VC VS
40
+ asr lsl lsr ror rrx al cc cs eq ge gt hi hs le lo ls lt mi ne pl vc vs
41
+ )
42
+ end
43
+
44
+ def self.builtin
45
+ @builtin ||= %w(
46
+ ARCHITECTURE AREANAME ARMASM_VERSION CODESIZE COMMANDLINE CONFIG CPU
47
+ ENDIAN FALSE FPIC FPU INPUTFILE INTER LINENUM LINENUMUP LINENUMUPPER
48
+ OBJASM_VERSION OPT PC PCSTOREOFFSET REENTRANT ROPI RWPI TRUE VAR
49
+ )
50
+ end
51
+
52
+ def self.operator
53
+ @operator ||= %w(
54
+ AND BASE CC CC_ENCODING CHR DEF EOR FATTR FEXEC FLOAD FSIZE INDEX LAND
55
+ LEFT LEN LEOR LNOT LOR LOWERCASE MOD NOT OR RCONST REVERSE_CC RIGHT ROL
56
+ ROR SHL SHR STR TARGET_ARCH_[0-9A-Z_]+ TARGET_FEATURE_[0-9A-Z_]+
57
+ TARGET_FPU_[A-Z_] TARGET_PROFILE_[ARM] UAL UPPERCASE
58
+ )
59
+ end
60
+
61
+ state :root do
62
+ rule %r/\n/, Text
63
+ rule %r/^([ \t]*)(#[ \t]*(?:(?:#{ArmAsm.preproc_keyword.join('|')})(?:[ \t].*)?)?)(\n)/ do
64
+ groups Text, Comment::Preproc, Text
65
+ end
66
+ rule %r/[ \t]+/, Text, :command
67
+ rule %r/;.*/, Comment
68
+ rule %r/\$[a-z_]\w*\.?/i, Name::Namespace # variable substitution or macro argument
69
+ rule %r/\w+|\|[^|\n]+\|/, Name::Label
70
+ end
71
+
72
+ state :command do
73
+ rule %r/\n/, Text, :pop!
74
+ rule %r/[ \t]+/ do |m|
75
+ token Text
76
+ goto :args
77
+ end
78
+ rule %r/;.*/, Comment, :pop!
79
+ rule %r/(?:#{ArmAsm.file_directive.join('|')})\b/ do |m|
80
+ token Keyword
81
+ goto :filespec
82
+ end
83
+ rule %r/(?:#{ArmAsm.general_directive.join('|')})(?=[; \t\n])/, Keyword
84
+ rule %r/(?:[A-Z][\dA-Z]*|[a-z][\da-z]*)(?:\.[NWnw])?(?:\.[DFIPSUdfipsu]?(?:8|16|32|64)?){,3}\b/, Name::Builtin # rather than attempt to list all opcodes, rely on all-uppercase or all-lowercase rule
85
+ rule %r/[a-z_]\w*|\|[^|\n]+\|/i, Name::Function # probably a macro name
86
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
87
+ end
88
+
89
+ state :args do
90
+ rule %r/\n/, Text, :pop!
91
+ rule %r/[ \t]+/, Text
92
+ rule %r/;.*/, Comment, :pop!
93
+ rule %r/(?:#{ArmAsm.shift_or_condition.join('|')})\b/, Name::Builtin
94
+ rule %r/[a-z_]\w*|\|[^|\n]+\|/i, Name::Variable # various types of symbol
95
+ rule %r/%[bf]?[at]?\d+(?:[a-z_]\w*)?/i, Name::Label
96
+ rule %r/(?:&|0x)\h+(?!p)/i, Literal::Number::Hex
97
+ rule %r/(?:&|0x)[.\h]+(?:p[-+]?\d+)?/i, Literal::Number::Float
98
+ rule %r/0f_\h{8}|0d_\h{16}/i, Literal::Number::Float
99
+ rule %r/(?:2_[01]+|3_[0-2]+|4_[0-3]+|5_[0-4]+|6_[0-5]+|7_[0-6]+|8_[0-7]+|9_[0-8]+|\d+)(?!e)/i, Literal::Number::Integer
100
+ rule %r/(?:2_[.01]+|3_[.0-2]+|4_[.0-3]+|5_[.0-4]+|6_[.0-5]+|7_[.0-6]+|8_[.0-7]+|9_[.0-8]+|[.\d]+)(?:e[-+]?\d+)?/i, Literal::Number::Float
101
+ rule %r/[@:](?=[ \t]*(?:8|16|32|64|128|256)[^\d])/, Operator
102
+ rule %r/[.@]|\{(?:#{ArmAsm.builtin.join('|')})\}/, Name::Constant
103
+ rule %r/[-!#%&()*+,\/<=>?^{|}]|\[|\]|!=|&&|\/=|<<|<=|<>|==|><|>=|>>|\|\||:(?:#{ArmAsm.operator.join('|')}):/, Operator
104
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
105
+ rule %r/'/ do |m|
106
+ token Literal::String::Char
107
+ goto :singlequoted
108
+ end
109
+ rule %r/"/ do |m|
110
+ token Literal::String::Double
111
+ goto :doublequoted
112
+ end
113
+ end
114
+
115
+ state :singlequoted do
116
+ rule %r/\n/, Text, :pop!
117
+ rule %r/\$\$/, Literal::String::Char
118
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
119
+ rule %r/'/ do |m|
120
+ token Literal::String::Char
121
+ goto :args
122
+ end
123
+ rule %r/[^$'\n]+/, Literal::String::Char
124
+ end
125
+
126
+ state :doublequoted do
127
+ rule %r/\n/, Text, :pop!
128
+ rule %r/\$\$/, Literal::String::Double
129
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
130
+ rule %r/"/ do |m|
131
+ token Literal::String::Double
132
+ goto :args
133
+ end
134
+ rule %r/[^$"\n]+/, Literal::String::Double
135
+ end
136
+
137
+ state :filespec do
138
+ rule %r/\n/, Text, :pop!
139
+ rule %r/\$\$/, Literal::String::Other
140
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
141
+ rule %r/[^$\n]+/, Literal::String::Other
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,162 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Awk < RegexLexer
7
+ title "Awk"
8
+ desc "pattern-directed scanning and processing language"
9
+
10
+ tag 'awk'
11
+ filenames '*.awk'
12
+ mimetypes 'application/x-awk'
13
+
14
+ def self.detect?(text)
15
+ return true if text.shebang?('awk')
16
+ end
17
+
18
+ id = /[$a-zA-Z_][a-zA-Z0-9_]*/
19
+
20
+ def self.keywords
21
+ @keywords ||= Set.new %w(
22
+ if else while for do break continue return next nextfile delete
23
+ exit print printf getline
24
+ )
25
+ end
26
+
27
+ def self.declarations
28
+ @declarations ||= Set.new %w(function)
29
+ end
30
+
31
+ def self.reserved
32
+ @reserved ||= Set.new %w(BEGIN END)
33
+ end
34
+
35
+ def self.constants
36
+ @constants ||= Set.new %w(
37
+ CONVFMT FS NF NR FNR FILENAME RS OFS ORS OFMT SUBSEP ARGC ARGV
38
+ ENVIRON
39
+ )
40
+ end
41
+
42
+ def self.builtins
43
+ @builtins ||= %w(
44
+ exp log sqrt sin cos atan2 length rand srand int substr index match
45
+ split sub gsub sprintf system tolower toupper
46
+ )
47
+ end
48
+
49
+ state :comments_and_whitespace do
50
+ rule %r/\s+/, Text
51
+ rule %r(#.*?$), Comment::Single
52
+ end
53
+
54
+ state :expr_start do
55
+ mixin :comments_and_whitespace
56
+ rule %r(/) do
57
+ token Str::Regex
58
+ goto :regex
59
+ end
60
+ rule %r//, Text, :pop!
61
+ end
62
+
63
+ state :regex do
64
+ rule %r(/) do
65
+ token Str::Regex
66
+ goto :regex_end
67
+ end
68
+
69
+ rule %r([^/]\n), Error, :pop!
70
+
71
+ rule %r/\n/, Error, :pop!
72
+ rule %r/\[\^/, Str::Escape, :regex_group
73
+ rule %r/\[/, Str::Escape, :regex_group
74
+ rule %r/\\./, Str::Escape
75
+ rule %r{[(][?][:=<!]}, Str::Escape
76
+ rule %r/[{][\d,]+[}]/, Str::Escape
77
+ rule %r/[()?]/, Str::Escape
78
+ rule %r/./, Str::Regex
79
+ end
80
+
81
+ state :regex_end do
82
+ rule(//) { pop! }
83
+ end
84
+
85
+ state :regex_group do
86
+ # specially highlight / in a group to indicate that it doesn't
87
+ # close the regex
88
+ rule %r(/), Str::Escape
89
+
90
+ rule %r([^/]\n) do
91
+ token Error
92
+ pop! 2
93
+ end
94
+
95
+ rule %r/\]/, Str::Escape, :pop!
96
+ rule %r/\\./, Str::Escape
97
+ rule %r/./, Str::Regex
98
+ end
99
+
100
+ state :bad_regex do
101
+ rule %r/[^\n]+/, Error, :pop!
102
+ end
103
+
104
+ state :root do
105
+ mixin :comments_and_whitespace
106
+ rule %r((?<=\n)(?=\s|/)), Text, :expr_start
107
+ rule %r([-<>+*/%\^!=]=?|in\b|\+\+|--|\|), Operator, :expr_start
108
+ rule %r(&&|\|\||~!?), Operator, :expr_start
109
+ rule %r/[(\[,]/, Punctuation, :expr_start
110
+ rule %r/;/, Punctuation, :statement
111
+ rule %r/[)\].]/, Punctuation
112
+
113
+ rule %r/[?]/ do
114
+ token Punctuation
115
+ push :ternary
116
+ push :expr_start
117
+ end
118
+
119
+ rule %r/[{}]/, Punctuation, :statement
120
+
121
+ rule id do |m|
122
+ if self.class.keywords.include? m[0]
123
+ token Keyword
124
+ push :expr_start
125
+ elsif self.class.declarations.include? m[0]
126
+ token Keyword::Declaration
127
+ push :expr_start
128
+ elsif self.class.reserved.include? m[0]
129
+ token Keyword::Reserved
130
+ elsif self.class.constants.include? m[0]
131
+ token Keyword::Constant
132
+ elsif self.class.builtins.include? m[0]
133
+ token Name::Builtin
134
+ elsif m[0] =~ /^\$/
135
+ token Name::Variable
136
+ else
137
+ token Name::Other
138
+ end
139
+ end
140
+
141
+ rule %r/[0-9]+\.[0-9]+/, Num::Float
142
+ rule %r/[0-9]+/, Num::Integer
143
+ rule %r/"(\\[\\"]|[^"])*"/, Str::Double
144
+ rule %r/:/, Punctuation
145
+ end
146
+
147
+ state :statement do
148
+ rule %r/[{}]/, Punctuation
149
+ mixin :expr_start
150
+ end
151
+
152
+ state :ternary do
153
+ rule %r/:/ do
154
+ token Punctuation
155
+ goto :expr_start
156
+ end
157
+
158
+ mixin :root
159
+ end
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,164 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Batchfile < RegexLexer
7
+ title "Batchfile"
8
+ desc "Windows Batch File"
9
+
10
+ tag 'batchfile'
11
+ aliases 'bat', 'batch', 'dosbatch', 'winbatch'
12
+ filenames '*.bat', '*.cmd'
13
+
14
+ mimetypes 'application/bat', 'application/x-bat', 'application/x-msdos-program'
15
+
16
+ def self.keywords
17
+ @keywords ||= %w(
18
+ if else for in do goto call exit
19
+ )
20
+ end
21
+
22
+ def self.operator_words
23
+ @operator_words ||= %w(
24
+ exist defined errorlevel cmdextversion not equ neq lss leq gtr geq
25
+ )
26
+ end
27
+
28
+ def self.devices
29
+ @devices ||= %w(
30
+ con prn aux nul com1 com2 com3 com4 com5 com6 com7 com8 com9 lpt1 lpt2
31
+ lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9
32
+ )
33
+ end
34
+
35
+ def self.builtin_commands
36
+ @builtin_commands ||= %w(
37
+ assoc attrib break bcdedit cacls cd chcp chdir chkdsk chkntfs choice
38
+ cls cmd color comp compact convert copy date del dir diskpart doskey
39
+ dpath driverquery echo endlocal erase fc find findstr format fsutil
40
+ ftype gpresult graftabl help icacls label md mkdir mklink mode more
41
+ move openfiles path pause popd print prompt pushd rd recover ren
42
+ rename replace rmdir robocopy setlocal sc schtasks shift shutdown sort
43
+ start subst systeminfo takeown tasklist taskkill time timeout title
44
+ tree type ver verify vol xcopy waitfor wmic
45
+ )
46
+ end
47
+
48
+ def self.other_commands
49
+ @other_commands ||= %w(
50
+ addusers admodcmd ansicon arp at bcdboot bitsadmin browstat certreq
51
+ certutil change cidiag cipher cleanmgr clip cmdkey compress convertcp
52
+ coreinfo csccmd csvde cscript curl debug defrag delprof deltree devcon
53
+ diamond dirquota diruse diskshadow diskuse dism dnscmd dsacls dsadd
54
+ dsget dsquery dsmod dsmove dsrm dsmgmt dsregcmd edlin eventcreate
55
+ expand extract fdisk fltmc forfiles freedisk ftp getmac gpupdate
56
+ hostname ifmember inuse ipconfig kill lgpo lodctr logman logoff
57
+ logtime makecab mapisend mbsacli mem mountvol moveuser msg mshta
58
+ msiexec msinfo32 mstsc nbtstat net net1 netdom netsh netstat nlsinfo
59
+ nltest now nslookup ntbackup ntdsutil ntoskrnl ntrights nvspbind
60
+ pathping perms ping portqry powercfg pngout pnputil printbrm prncnfg
61
+ prnmngr procdump psexec psfile psgetsid psinfo pskill pslist
62
+ psloggedon psloglist pspasswd psping psservice psshutdown pssuspend
63
+ qbasic qgrep qprocess query quser qwinsta rasdial reg reg1 regdump
64
+ regedt32 regsvr32 regini reset restore rundll32 rmtshare route rpcping
65
+ run runas scandisk setspn setx sfc share shellrunas shortcut sigcheck
66
+ sleep slmgr strings subinacl sysmon telnet tftp tlist touch tracerpt
67
+ tracert tscon tsdiscon tskill tttracer typeperf tzutil undelete
68
+ unformat verifier vmconnect vssadmin w32tm wbadmin wecutil wevtutil
69
+ wget where whoami windiff winrm winrs wpeutil wpr wusa wuauclt wscript
70
+ )
71
+ end
72
+
73
+ def self.attributes
74
+ @attributes ||= %w(
75
+ on off disable enableextensions enabledelayedexpansion
76
+ )
77
+ end
78
+
79
+ state :basic do
80
+ # Comments
81
+ rule %r/\brem\b.*$/i, Comment
82
+ # Empty Labels
83
+ rule %r/^::.*$/, Comment
84
+
85
+ # Labels
86
+ rule %r/:[a-z]+/i, Name::Label
87
+
88
+ rule %r/([a-z]\w*)(\.exe|com|bat|cmd|msi)?/i do |m|
89
+ if self.class.devices.include? m[1]
90
+ groups Keyword::Reserved, Error
91
+ elsif self.class.keywords.include? m[1]
92
+ groups Keyword, Error
93
+ elsif self.class.operator_words.include? m[1]
94
+ groups Operator::Word, Error
95
+ elsif self.class.builtin_commands.include? m[1]
96
+ token Name::Builtin
97
+ elsif self.class.other_commands.include? m[1]
98
+ token Name::Builtin
99
+ elsif self.class.attributes.include? m[1]
100
+ groups Name::Attribute, Error
101
+ elsif "set".casecmp m[1]
102
+ groups Keyword::Declaration, Error
103
+ else
104
+ token Text
105
+ end
106
+ end
107
+
108
+ rule %r/([\/\-+][a-z]+)\s*/i, Name::Attribute
109
+
110
+ mixin :expansions
111
+
112
+ rule %r/[<>&|(){}\[\]\-+=;,~?*]/, Operator
113
+ end
114
+
115
+ state :escape do
116
+ rule %r/\^./m, Str::Escape
117
+ end
118
+
119
+ state :expansions do
120
+ # Normal and Delayed expansion
121
+ rule %r/[%!]+([a-z_$@#]+)[%!]+/i, Name::Variable
122
+ # For Variables
123
+ rule %r/(\%+~?[a-z]+\d?)/i, Name::Variable::Magic
124
+ end
125
+
126
+ state :double_quotes do
127
+ mixin :escape
128
+ rule %r/["]/, Str::Double, :pop!
129
+ mixin :expansions
130
+ rule %r/[^\^"%!]+/, Str::Double
131
+ end
132
+
133
+ state :single_quotes do
134
+ mixin :escape
135
+ rule %r/[']/, Str::Single, :pop!
136
+ mixin :expansions
137
+ rule %r/[^\^'%!]+/, Str::Single
138
+ end
139
+
140
+ state :backtick do
141
+ mixin :escape
142
+ rule %r/[`]/, Str::Backtick, :pop!
143
+ mixin :expansions
144
+ rule %r/[^\^`%!]+/, Str::Backtick
145
+ end
146
+
147
+ state :data do
148
+ rule %r/\s+/, Text
149
+ rule %r/0x[0-9a-f]+/i, Literal::Number::Hex
150
+ rule %r/[0-9]/, Literal::Number
151
+ rule %r/["]/, Str::Double, :double_quotes
152
+ rule %r/[']/, Str::Single, :single_quotes
153
+ rule %r/[`]/, Str::Backtick, :backtick
154
+ rule %r/[^\s&|()\[\]{}\^=;!%+\-,"'`~?*]+/, Text
155
+ mixin :escape
156
+ end
157
+
158
+ state :root do
159
+ mixin :basic
160
+ mixin :data
161
+ end
162
+ end
163
+ end
164
+ end