nano-clean-pkg 0.0.1

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 (540) hide show
  1. checksums.yaml +7 -0
  2. data/nano-clean-pkg.gemspec +11 -0
  3. data/rouge-5.0.0/Gemfile +48 -0
  4. data/rouge-5.0.0/LICENSE +187 -0
  5. data/rouge-5.0.0/bin/rougify +17 -0
  6. data/rouge-5.0.0/lib/rouge/cli.rb +527 -0
  7. data/rouge-5.0.0/lib/rouge/demos/abap +32 -0
  8. data/rouge-5.0.0/lib/rouge/demos/actionscript +4 -0
  9. data/rouge-5.0.0/lib/rouge/demos/ada +26 -0
  10. data/rouge-5.0.0/lib/rouge/demos/apache +21 -0
  11. data/rouge-5.0.0/lib/rouge/demos/apex +9 -0
  12. data/rouge-5.0.0/lib/rouge/demos/apiblueprint +33 -0
  13. data/rouge-5.0.0/lib/rouge/demos/applescript +2 -0
  14. data/rouge-5.0.0/lib/rouge/demos/armasm +12 -0
  15. data/rouge-5.0.0/lib/rouge/demos/augeas +16 -0
  16. data/rouge-5.0.0/lib/rouge/demos/awk +4 -0
  17. data/rouge-5.0.0/lib/rouge/demos/batchfile +3 -0
  18. data/rouge-5.0.0/lib/rouge/demos/bbcbasic +6 -0
  19. data/rouge-5.0.0/lib/rouge/demos/bibtex +12 -0
  20. data/rouge-5.0.0/lib/rouge/demos/bicep +10 -0
  21. data/rouge-5.0.0/lib/rouge/demos/biml +38 -0
  22. data/rouge-5.0.0/lib/rouge/demos/bpf +7 -0
  23. data/rouge-5.0.0/lib/rouge/demos/brainfuck +5 -0
  24. data/rouge-5.0.0/lib/rouge/demos/brightscript +6 -0
  25. data/rouge-5.0.0/lib/rouge/demos/bsl +7 -0
  26. data/rouge-5.0.0/lib/rouge/demos/c +8 -0
  27. data/rouge-5.0.0/lib/rouge/demos/ceylon +7 -0
  28. data/rouge-5.0.0/lib/rouge/demos/cfscript +18 -0
  29. data/rouge-5.0.0/lib/rouge/demos/cisco_ios +19 -0
  30. data/rouge-5.0.0/lib/rouge/demos/clean +6 -0
  31. data/rouge-5.0.0/lib/rouge/demos/clojure +5 -0
  32. data/rouge-5.0.0/lib/rouge/demos/cmake +7 -0
  33. data/rouge-5.0.0/lib/rouge/demos/cmhg +8 -0
  34. data/rouge-5.0.0/lib/rouge/demos/cobol +103 -0
  35. data/rouge-5.0.0/lib/rouge/demos/codeowners +6 -0
  36. data/rouge-5.0.0/lib/rouge/demos/coffeescript +5 -0
  37. data/rouge-5.0.0/lib/rouge/demos/common_lisp +1 -0
  38. data/rouge-5.0.0/lib/rouge/demos/conf +4 -0
  39. data/rouge-5.0.0/lib/rouge/demos/console +6 -0
  40. data/rouge-5.0.0/lib/rouge/demos/cpp +8 -0
  41. data/rouge-5.0.0/lib/rouge/demos/crystal +45 -0
  42. data/rouge-5.0.0/lib/rouge/demos/csharp +5 -0
  43. data/rouge-5.0.0/lib/rouge/demos/css +4 -0
  44. data/rouge-5.0.0/lib/rouge/demos/csvs +8 -0
  45. data/rouge-5.0.0/lib/rouge/demos/cuda +11 -0
  46. data/rouge-5.0.0/lib/rouge/demos/cypher +5 -0
  47. data/rouge-5.0.0/lib/rouge/demos/cython +6 -0
  48. data/rouge-5.0.0/lib/rouge/demos/d +16 -0
  49. data/rouge-5.0.0/lib/rouge/demos/dafny +16 -0
  50. data/rouge-5.0.0/lib/rouge/demos/dart +6 -0
  51. data/rouge-5.0.0/lib/rouge/demos/datastudio +20 -0
  52. data/rouge-5.0.0/lib/rouge/demos/diff +7 -0
  53. data/rouge-5.0.0/lib/rouge/demos/digdag +19 -0
  54. data/rouge-5.0.0/lib/rouge/demos/docker +9 -0
  55. data/rouge-5.0.0/lib/rouge/demos/dot +5 -0
  56. data/rouge-5.0.0/lib/rouge/demos/dylan +8 -0
  57. data/rouge-5.0.0/lib/rouge/demos/ecl +17 -0
  58. data/rouge-5.0.0/lib/rouge/demos/eex +1 -0
  59. data/rouge-5.0.0/lib/rouge/demos/eiffel +30 -0
  60. data/rouge-5.0.0/lib/rouge/demos/elixir +1 -0
  61. data/rouge-5.0.0/lib/rouge/demos/elm +4 -0
  62. data/rouge-5.0.0/lib/rouge/demos/email +11 -0
  63. data/rouge-5.0.0/lib/rouge/demos/epp +4 -0
  64. data/rouge-5.0.0/lib/rouge/demos/erb +1 -0
  65. data/rouge-5.0.0/lib/rouge/demos/erlang +7 -0
  66. data/rouge-5.0.0/lib/rouge/demos/escape +3 -0
  67. data/rouge-5.0.0/lib/rouge/demos/factor +5 -0
  68. data/rouge-5.0.0/lib/rouge/demos/fluent +13 -0
  69. data/rouge-5.0.0/lib/rouge/demos/fortran +22 -0
  70. data/rouge-5.0.0/lib/rouge/demos/freefem +16 -0
  71. data/rouge-5.0.0/lib/rouge/demos/fsharp +12 -0
  72. data/rouge-5.0.0/lib/rouge/demos/gdscript +18 -0
  73. data/rouge-5.0.0/lib/rouge/demos/ghc-cmm +23 -0
  74. data/rouge-5.0.0/lib/rouge/demos/ghc-core +26 -0
  75. data/rouge-5.0.0/lib/rouge/demos/gherkin +17 -0
  76. data/rouge-5.0.0/lib/rouge/demos/gjs +23 -0
  77. data/rouge-5.0.0/lib/rouge/demos/glsl +14 -0
  78. data/rouge-5.0.0/lib/rouge/demos/go +7 -0
  79. data/rouge-5.0.0/lib/rouge/demos/gradle +10 -0
  80. data/rouge-5.0.0/lib/rouge/demos/graphql +17 -0
  81. data/rouge-5.0.0/lib/rouge/demos/groovy +9 -0
  82. data/rouge-5.0.0/lib/rouge/demos/gts +36 -0
  83. data/rouge-5.0.0/lib/rouge/demos/hack +5 -0
  84. data/rouge-5.0.0/lib/rouge/demos/haml +5 -0
  85. data/rouge-5.0.0/lib/rouge/demos/handlebars +7 -0
  86. data/rouge-5.0.0/lib/rouge/demos/haskell +6 -0
  87. data/rouge-5.0.0/lib/rouge/demos/haxe +4 -0
  88. data/rouge-5.0.0/lib/rouge/demos/hcl +7 -0
  89. data/rouge-5.0.0/lib/rouge/demos/hlsl +20 -0
  90. data/rouge-5.0.0/lib/rouge/demos/hocon +8 -0
  91. data/rouge-5.0.0/lib/rouge/demos/hql +5 -0
  92. data/rouge-5.0.0/lib/rouge/demos/html +8 -0
  93. data/rouge-5.0.0/lib/rouge/demos/http +14 -0
  94. data/rouge-5.0.0/lib/rouge/demos/hylang +10 -0
  95. data/rouge-5.0.0/lib/rouge/demos/idlang +8 -0
  96. data/rouge-5.0.0/lib/rouge/demos/idris +13 -0
  97. data/rouge-5.0.0/lib/rouge/demos/iecst +21 -0
  98. data/rouge-5.0.0/lib/rouge/demos/igorpro +9 -0
  99. data/rouge-5.0.0/lib/rouge/demos/ini +4 -0
  100. data/rouge-5.0.0/lib/rouge/demos/io +11 -0
  101. data/rouge-5.0.0/lib/rouge/demos/irb +4 -0
  102. data/rouge-5.0.0/lib/rouge/demos/irb_output +2 -0
  103. data/rouge-5.0.0/lib/rouge/demos/isabelle +16 -0
  104. data/rouge-5.0.0/lib/rouge/demos/isbl +4 -0
  105. data/rouge-5.0.0/lib/rouge/demos/j +12 -0
  106. data/rouge-5.0.0/lib/rouge/demos/janet +3 -0
  107. data/rouge-5.0.0/lib/rouge/demos/java +5 -0
  108. data/rouge-5.0.0/lib/rouge/demos/javascript +1 -0
  109. data/rouge-5.0.0/lib/rouge/demos/jinja +9 -0
  110. data/rouge-5.0.0/lib/rouge/demos/jsl +3 -0
  111. data/rouge-5.0.0/lib/rouge/demos/json +1 -0
  112. data/rouge-5.0.0/lib/rouge/demos/json-doc +1 -0
  113. data/rouge-5.0.0/lib/rouge/demos/json5 +12 -0
  114. data/rouge-5.0.0/lib/rouge/demos/jsonnet +28 -0
  115. data/rouge-5.0.0/lib/rouge/demos/jsp +29 -0
  116. data/rouge-5.0.0/lib/rouge/demos/jsx +17 -0
  117. data/rouge-5.0.0/lib/rouge/demos/julia +11 -0
  118. data/rouge-5.0.0/lib/rouge/demos/kick_assembler +14 -0
  119. data/rouge-5.0.0/lib/rouge/demos/kotlin +3 -0
  120. data/rouge-5.0.0/lib/rouge/demos/lasso +12 -0
  121. data/rouge-5.0.0/lib/rouge/demos/lean +8 -0
  122. data/rouge-5.0.0/lib/rouge/demos/liquid +10 -0
  123. data/rouge-5.0.0/lib/rouge/demos/literate_coffeescript +3 -0
  124. data/rouge-5.0.0/lib/rouge/demos/literate_haskell +7 -0
  125. data/rouge-5.0.0/lib/rouge/demos/livescript +15 -0
  126. data/rouge-5.0.0/lib/rouge/demos/llvm +20 -0
  127. data/rouge-5.0.0/lib/rouge/demos/lua +12 -0
  128. data/rouge-5.0.0/lib/rouge/demos/lustre +6 -0
  129. data/rouge-5.0.0/lib/rouge/demos/lutin +18 -0
  130. data/rouge-5.0.0/lib/rouge/demos/m68k +16 -0
  131. data/rouge-5.0.0/lib/rouge/demos/magik +6 -0
  132. data/rouge-5.0.0/lib/rouge/demos/make +6 -0
  133. data/rouge-5.0.0/lib/rouge/demos/markdown +4 -0
  134. data/rouge-5.0.0/lib/rouge/demos/mason +22 -0
  135. data/rouge-5.0.0/lib/rouge/demos/mathematica +8 -0
  136. data/rouge-5.0.0/lib/rouge/demos/matlab +6 -0
  137. data/rouge-5.0.0/lib/rouge/demos/meson +10 -0
  138. data/rouge-5.0.0/lib/rouge/demos/minizinc +23 -0
  139. data/rouge-5.0.0/lib/rouge/demos/mojo +10 -0
  140. data/rouge-5.0.0/lib/rouge/demos/moonscript +16 -0
  141. data/rouge-5.0.0/lib/rouge/demos/mosel +10 -0
  142. data/rouge-5.0.0/lib/rouge/demos/msgtrans +4 -0
  143. data/rouge-5.0.0/lib/rouge/demos/mxml +22 -0
  144. data/rouge-5.0.0/lib/rouge/demos/nasm +26 -0
  145. data/rouge-5.0.0/lib/rouge/demos/nesasm +11 -0
  146. data/rouge-5.0.0/lib/rouge/demos/nginx +5 -0
  147. data/rouge-5.0.0/lib/rouge/demos/nial +35 -0
  148. data/rouge-5.0.0/lib/rouge/demos/nim +27 -0
  149. data/rouge-5.0.0/lib/rouge/demos/nix +19 -0
  150. data/rouge-5.0.0/lib/rouge/demos/objective_c +18 -0
  151. data/rouge-5.0.0/lib/rouge/demos/objective_cpp +17 -0
  152. data/rouge-5.0.0/lib/rouge/demos/ocaml +12 -0
  153. data/rouge-5.0.0/lib/rouge/demos/ocl +4 -0
  154. data/rouge-5.0.0/lib/rouge/demos/openedge +4 -0
  155. data/rouge-5.0.0/lib/rouge/demos/opentype_feature_file +5 -0
  156. data/rouge-5.0.0/lib/rouge/demos/p4 +99 -0
  157. data/rouge-5.0.0/lib/rouge/demos/pascal +14 -0
  158. data/rouge-5.0.0/lib/rouge/demos/pdf +29 -0
  159. data/rouge-5.0.0/lib/rouge/demos/perl +5 -0
  160. data/rouge-5.0.0/lib/rouge/demos/php +3 -0
  161. data/rouge-5.0.0/lib/rouge/demos/plaintext +1 -0
  162. data/rouge-5.0.0/lib/rouge/demos/plist +11 -0
  163. data/rouge-5.0.0/lib/rouge/demos/plsql +2 -0
  164. data/rouge-5.0.0/lib/rouge/demos/pony +17 -0
  165. data/rouge-5.0.0/lib/rouge/demos/postscript +9 -0
  166. data/rouge-5.0.0/lib/rouge/demos/powershell +13 -0
  167. data/rouge-5.0.0/lib/rouge/demos/praat +26 -0
  168. data/rouge-5.0.0/lib/rouge/demos/prolog +9 -0
  169. data/rouge-5.0.0/lib/rouge/demos/prometheus +9 -0
  170. data/rouge-5.0.0/lib/rouge/demos/properties +7 -0
  171. data/rouge-5.0.0/lib/rouge/demos/protobuf +5 -0
  172. data/rouge-5.0.0/lib/rouge/demos/puppet +6 -0
  173. data/rouge-5.0.0/lib/rouge/demos/python +6 -0
  174. data/rouge-5.0.0/lib/rouge/demos/q +8 -0
  175. data/rouge-5.0.0/lib/rouge/demos/qml +9 -0
  176. data/rouge-5.0.0/lib/rouge/demos/r +8 -0
  177. data/rouge-5.0.0/lib/rouge/demos/racket +24 -0
  178. data/rouge-5.0.0/lib/rouge/demos/reasonml +12 -0
  179. data/rouge-5.0.0/lib/rouge/demos/rego +8 -0
  180. data/rouge-5.0.0/lib/rouge/demos/rescript +26 -0
  181. data/rouge-5.0.0/lib/rouge/demos/rml +33 -0
  182. data/rouge-5.0.0/lib/rouge/demos/robot_framework +27 -0
  183. data/rouge-5.0.0/lib/rouge/demos/rocq +16 -0
  184. data/rouge-5.0.0/lib/rouge/demos/ruby +9 -0
  185. data/rouge-5.0.0/lib/rouge/demos/rust +12 -0
  186. data/rouge-5.0.0/lib/rouge/demos/sas +13 -0
  187. data/rouge-5.0.0/lib/rouge/demos/sass +3 -0
  188. data/rouge-5.0.0/lib/rouge/demos/scala +3 -0
  189. data/rouge-5.0.0/lib/rouge/demos/scheme +4 -0
  190. data/rouge-5.0.0/lib/rouge/demos/scss +5 -0
  191. data/rouge-5.0.0/lib/rouge/demos/sed +4 -0
  192. data/rouge-5.0.0/lib/rouge/demos/shell +2 -0
  193. data/rouge-5.0.0/lib/rouge/demos/sieve +10 -0
  194. data/rouge-5.0.0/lib/rouge/demos/slice +10 -0
  195. data/rouge-5.0.0/lib/rouge/demos/slim +17 -0
  196. data/rouge-5.0.0/lib/rouge/demos/smalltalk +6 -0
  197. data/rouge-5.0.0/lib/rouge/demos/smarty +11 -0
  198. data/rouge-5.0.0/lib/rouge/demos/sml +4 -0
  199. data/rouge-5.0.0/lib/rouge/demos/sparql +6 -0
  200. data/rouge-5.0.0/lib/rouge/demos/sqf +14 -0
  201. data/rouge-5.0.0/lib/rouge/demos/sql +1 -0
  202. data/rouge-5.0.0/lib/rouge/demos/ssh +4 -0
  203. data/rouge-5.0.0/lib/rouge/demos/stan +13 -0
  204. data/rouge-5.0.0/lib/rouge/demos/stata +14 -0
  205. data/rouge-5.0.0/lib/rouge/demos/supercollider +11 -0
  206. data/rouge-5.0.0/lib/rouge/demos/svelte +29 -0
  207. data/rouge-5.0.0/lib/rouge/demos/swift +5 -0
  208. data/rouge-5.0.0/lib/rouge/demos/systemd +4 -0
  209. data/rouge-5.0.0/lib/rouge/demos/syzlang +15 -0
  210. data/rouge-5.0.0/lib/rouge/demos/syzprog +8 -0
  211. data/rouge-5.0.0/lib/rouge/demos/tap +5 -0
  212. data/rouge-5.0.0/lib/rouge/demos/tcl +1 -0
  213. data/rouge-5.0.0/lib/rouge/demos/terraform +16 -0
  214. data/rouge-5.0.0/lib/rouge/demos/tex +1 -0
  215. data/rouge-5.0.0/lib/rouge/demos/thrift +15 -0
  216. data/rouge-5.0.0/lib/rouge/demos/toml +9 -0
  217. data/rouge-5.0.0/lib/rouge/demos/tsx +17 -0
  218. data/rouge-5.0.0/lib/rouge/demos/ttcn3 +6 -0
  219. data/rouge-5.0.0/lib/rouge/demos/tulip +13 -0
  220. data/rouge-5.0.0/lib/rouge/demos/turtle +26 -0
  221. data/rouge-5.0.0/lib/rouge/demos/twig +9 -0
  222. data/rouge-5.0.0/lib/rouge/demos/typescript +1 -0
  223. data/rouge-5.0.0/lib/rouge/demos/vala +8 -0
  224. data/rouge-5.0.0/lib/rouge/demos/vb +4 -0
  225. data/rouge-5.0.0/lib/rouge/demos/vcl +12 -0
  226. data/rouge-5.0.0/lib/rouge/demos/velocity +9 -0
  227. data/rouge-5.0.0/lib/rouge/demos/verilog +27 -0
  228. data/rouge-5.0.0/lib/rouge/demos/veryl +24 -0
  229. data/rouge-5.0.0/lib/rouge/demos/vhdl +23 -0
  230. data/rouge-5.0.0/lib/rouge/demos/viml +14 -0
  231. data/rouge-5.0.0/lib/rouge/demos/vue +11 -0
  232. data/rouge-5.0.0/lib/rouge/demos/wollok +11 -0
  233. data/rouge-5.0.0/lib/rouge/demos/xml +2 -0
  234. data/rouge-5.0.0/lib/rouge/demos/xojo +14 -0
  235. data/rouge-5.0.0/lib/rouge/demos/xpath +2 -0
  236. data/rouge-5.0.0/lib/rouge/demos/xquery +22 -0
  237. data/rouge-5.0.0/lib/rouge/demos/yaml +4 -0
  238. data/rouge-5.0.0/lib/rouge/demos/yang +17 -0
  239. data/rouge-5.0.0/lib/rouge/demos/zig +6 -0
  240. data/rouge-5.0.0/lib/rouge/eager.rb +3 -0
  241. data/rouge-5.0.0/lib/rouge/formatter.rb +112 -0
  242. data/rouge-5.0.0/lib/rouge/formatters/html.rb +64 -0
  243. data/rouge-5.0.0/lib/rouge/formatters/html_debug.rb +16 -0
  244. data/rouge-5.0.0/lib/rouge/formatters/html_inline.rb +30 -0
  245. data/rouge-5.0.0/lib/rouge/formatters/html_legacy.rb +56 -0
  246. data/rouge-5.0.0/lib/rouge/formatters/html_legacy_table.rb +57 -0
  247. data/rouge-5.0.0/lib/rouge/formatters/html_line_highlighter.rb +31 -0
  248. data/rouge-5.0.0/lib/rouge/formatters/html_line_table.rb +56 -0
  249. data/rouge-5.0.0/lib/rouge/formatters/html_linewise.rb +31 -0
  250. data/rouge-5.0.0/lib/rouge/formatters/html_pygments.rb +23 -0
  251. data/rouge-5.0.0/lib/rouge/formatters/html_table.rb +77 -0
  252. data/rouge-5.0.0/lib/rouge/formatters/null.rb +20 -0
  253. data/rouge-5.0.0/lib/rouge/formatters/terminal256.rb +198 -0
  254. data/rouge-5.0.0/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  255. data/rouge-5.0.0/lib/rouge/formatters/tex.rb +92 -0
  256. data/rouge-5.0.0/lib/rouge/guesser.rb +57 -0
  257. data/rouge-5.0.0/lib/rouge/guessers/disambiguation.rb +172 -0
  258. data/rouge-5.0.0/lib/rouge/guessers/filename.rb +27 -0
  259. data/rouge-5.0.0/lib/rouge/guessers/glob_mapping.rb +45 -0
  260. data/rouge-5.0.0/lib/rouge/guessers/mimetype.rb +16 -0
  261. data/rouge-5.0.0/lib/rouge/guessers/modeline.rb +46 -0
  262. data/rouge-5.0.0/lib/rouge/guessers/source.rb +31 -0
  263. data/rouge-5.0.0/lib/rouge/guessers/util.rb +34 -0
  264. data/rouge-5.0.0/lib/rouge/lexer.rb +556 -0
  265. data/rouge-5.0.0/lib/rouge/lexers/abap/builtins.rb +187 -0
  266. data/rouge-5.0.0/lib/rouge/lexers/abap.rb +132 -0
  267. data/rouge-5.0.0/lib/rouge/lexers/actionscript.rb +196 -0
  268. data/rouge-5.0.0/lib/rouge/lexers/ada.rb +162 -0
  269. data/rouge-5.0.0/lib/rouge/lexers/apache/keywords.rb +16 -0
  270. data/rouge-5.0.0/lib/rouge/lexers/apache.rb +84 -0
  271. data/rouge-5.0.0/lib/rouge/lexers/apex.rb +128 -0
  272. data/rouge-5.0.0/lib/rouge/lexers/apiblueprint.rb +49 -0
  273. data/rouge-5.0.0/lib/rouge/lexers/apple_script.rb +370 -0
  274. data/rouge-5.0.0/lib/rouge/lexers/armasm.rb +145 -0
  275. data/rouge-5.0.0/lib/rouge/lexers/augeas.rb +93 -0
  276. data/rouge-5.0.0/lib/rouge/lexers/awk.rb +162 -0
  277. data/rouge-5.0.0/lib/rouge/lexers/batchfile.rb +165 -0
  278. data/rouge-5.0.0/lib/rouge/lexers/bbcbasic.rb +112 -0
  279. data/rouge-5.0.0/lib/rouge/lexers/bibtex.rb +115 -0
  280. data/rouge-5.0.0/lib/rouge/lexers/bicep.rb +111 -0
  281. data/rouge-5.0.0/lib/rouge/lexers/biml.rb +70 -0
  282. data/rouge-5.0.0/lib/rouge/lexers/bpf.rb +118 -0
  283. data/rouge-5.0.0/lib/rouge/lexers/brainfuck.rb +54 -0
  284. data/rouge-5.0.0/lib/rouge/lexers/brightscript.rb +146 -0
  285. data/rouge-5.0.0/lib/rouge/lexers/bsl.rb +82 -0
  286. data/rouge-5.0.0/lib/rouge/lexers/c.rb +204 -0
  287. data/rouge-5.0.0/lib/rouge/lexers/ceylon.rb +96 -0
  288. data/rouge-5.0.0/lib/rouge/lexers/cfscript.rb +154 -0
  289. data/rouge-5.0.0/lib/rouge/lexers/cisco_ios.rb +83 -0
  290. data/rouge-5.0.0/lib/rouge/lexers/clean.rb +156 -0
  291. data/rouge-5.0.0/lib/rouge/lexers/clojure.rb +113 -0
  292. data/rouge-5.0.0/lib/rouge/lexers/cmake.rb +218 -0
  293. data/rouge-5.0.0/lib/rouge/lexers/cmhg.rb +34 -0
  294. data/rouge-5.0.0/lib/rouge/lexers/cobol.rb +137 -0
  295. data/rouge-5.0.0/lib/rouge/lexers/codeowners.rb +30 -0
  296. data/rouge-5.0.0/lib/rouge/lexers/coffeescript.rb +215 -0
  297. data/rouge-5.0.0/lib/rouge/lexers/common_lisp.rb +346 -0
  298. data/rouge-5.0.0/lib/rouge/lexers/conf.rb +25 -0
  299. data/rouge-5.0.0/lib/rouge/lexers/console.rb +196 -0
  300. data/rouge-5.0.0/lib/rouge/lexers/cpp.rb +102 -0
  301. data/rouge-5.0.0/lib/rouge/lexers/crystal.rb +435 -0
  302. data/rouge-5.0.0/lib/rouge/lexers/csharp.rb +118 -0
  303. data/rouge-5.0.0/lib/rouge/lexers/css.rb +337 -0
  304. data/rouge-5.0.0/lib/rouge/lexers/csvs.rb +44 -0
  305. data/rouge-5.0.0/lib/rouge/lexers/cuda.rb +35 -0
  306. data/rouge-5.0.0/lib/rouge/lexers/cypher.rb +116 -0
  307. data/rouge-5.0.0/lib/rouge/lexers/cython.rb +127 -0
  308. data/rouge-5.0.0/lib/rouge/lexers/d.rb +177 -0
  309. data/rouge-5.0.0/lib/rouge/lexers/dafny.rb +128 -0
  310. data/rouge-5.0.0/lib/rouge/lexers/dart.rb +108 -0
  311. data/rouge-5.0.0/lib/rouge/lexers/datastudio.rb +138 -0
  312. data/rouge-5.0.0/lib/rouge/lexers/diff.rb +47 -0
  313. data/rouge-5.0.0/lib/rouge/lexers/digdag.rb +69 -0
  314. data/rouge-5.0.0/lib/rouge/lexers/docker.rb +55 -0
  315. data/rouge-5.0.0/lib/rouge/lexers/dot.rb +70 -0
  316. data/rouge-5.0.0/lib/rouge/lexers/dylan.rb +109 -0
  317. data/rouge-5.0.0/lib/rouge/lexers/ecl.rb +175 -0
  318. data/rouge-5.0.0/lib/rouge/lexers/eex.rb +52 -0
  319. data/rouge-5.0.0/lib/rouge/lexers/eiffel.rb +65 -0
  320. data/rouge-5.0.0/lib/rouge/lexers/elixir.rb +158 -0
  321. data/rouge-5.0.0/lib/rouge/lexers/elm.rb +90 -0
  322. data/rouge-5.0.0/lib/rouge/lexers/email.rb +39 -0
  323. data/rouge-5.0.0/lib/rouge/lexers/epp.rb +51 -0
  324. data/rouge-5.0.0/lib/rouge/lexers/erb.rb +53 -0
  325. data/rouge-5.0.0/lib/rouge/lexers/erlang.rb +115 -0
  326. data/rouge-5.0.0/lib/rouge/lexers/escape.rb +58 -0
  327. data/rouge-5.0.0/lib/rouge/lexers/factor.rb +303 -0
  328. data/rouge-5.0.0/lib/rouge/lexers/fluent.rb +74 -0
  329. data/rouge-5.0.0/lib/rouge/lexers/fortran.rb +178 -0
  330. data/rouge-5.0.0/lib/rouge/lexers/freefem.rb +240 -0
  331. data/rouge-5.0.0/lib/rouge/lexers/fsharp.rb +120 -0
  332. data/rouge-5.0.0/lib/rouge/lexers/gdscript.rb +171 -0
  333. data/rouge-5.0.0/lib/rouge/lexers/ghc_cmm.rb +340 -0
  334. data/rouge-5.0.0/lib/rouge/lexers/ghc_core.rb +152 -0
  335. data/rouge-5.0.0/lib/rouge/lexers/gherkin/keywords.rb +23 -0
  336. data/rouge-5.0.0/lib/rouge/lexers/gherkin.rb +142 -0
  337. data/rouge-5.0.0/lib/rouge/lexers/gjs.rb +39 -0
  338. data/rouge-5.0.0/lib/rouge/lexers/glsl/builtins.rb +17 -0
  339. data/rouge-5.0.0/lib/rouge/lexers/glsl.rb +69 -0
  340. data/rouge-5.0.0/lib/rouge/lexers/go.rb +177 -0
  341. data/rouge-5.0.0/lib/rouge/lexers/gradle.rb +38 -0
  342. data/rouge-5.0.0/lib/rouge/lexers/graphql.rb +261 -0
  343. data/rouge-5.0.0/lib/rouge/lexers/groovy.rb +119 -0
  344. data/rouge-5.0.0/lib/rouge/lexers/gts.rb +39 -0
  345. data/rouge-5.0.0/lib/rouge/lexers/hack.rb +47 -0
  346. data/rouge-5.0.0/lib/rouge/lexers/haml.rb +226 -0
  347. data/rouge-5.0.0/lib/rouge/lexers/handlebars.rb +91 -0
  348. data/rouge-5.0.0/lib/rouge/lexers/haskell.rb +207 -0
  349. data/rouge-5.0.0/lib/rouge/lexers/haxe.rb +265 -0
  350. data/rouge-5.0.0/lib/rouge/lexers/hcl.rb +166 -0
  351. data/rouge-5.0.0/lib/rouge/lexers/hlsl.rb +166 -0
  352. data/rouge-5.0.0/lib/rouge/lexers/hocon.rb +86 -0
  353. data/rouge-5.0.0/lib/rouge/lexers/hql.rb +135 -0
  354. data/rouge-5.0.0/lib/rouge/lexers/html.rb +141 -0
  355. data/rouge-5.0.0/lib/rouge/lexers/http.rb +87 -0
  356. data/rouge-5.0.0/lib/rouge/lexers/hylang.rb +93 -0
  357. data/rouge-5.0.0/lib/rouge/lexers/idlang.rb +312 -0
  358. data/rouge-5.0.0/lib/rouge/lexers/idris.rb +210 -0
  359. data/rouge-5.0.0/lib/rouge/lexers/iecst.rb +92 -0
  360. data/rouge-5.0.0/lib/rouge/lexers/igorpro/builtins.rb +1530 -0
  361. data/rouge-5.0.0/lib/rouge/lexers/igorpro.rb +193 -0
  362. data/rouge-5.0.0/lib/rouge/lexers/ini.rb +56 -0
  363. data/rouge-5.0.0/lib/rouge/lexers/io.rb +69 -0
  364. data/rouge-5.0.0/lib/rouge/lexers/irb.rb +73 -0
  365. data/rouge-5.0.0/lib/rouge/lexers/isabelle.rb +251 -0
  366. data/rouge-5.0.0/lib/rouge/lexers/isbl.rb +61 -0
  367. data/rouge-5.0.0/lib/rouge/lexers/j.rb +244 -0
  368. data/rouge-5.0.0/lib/rouge/lexers/janet.rb +218 -0
  369. data/rouge-5.0.0/lib/rouge/lexers/java.rb +92 -0
  370. data/rouge-5.0.0/lib/rouge/lexers/javascript.rb +315 -0
  371. data/rouge-5.0.0/lib/rouge/lexers/jinja.rb +169 -0
  372. data/rouge-5.0.0/lib/rouge/lexers/jsl.rb +66 -0
  373. data/rouge-5.0.0/lib/rouge/lexers/json.rb +72 -0
  374. data/rouge-5.0.0/lib/rouge/lexers/json5.rb +74 -0
  375. data/rouge-5.0.0/lib/rouge/lexers/json_doc.rb +26 -0
  376. data/rouge-5.0.0/lib/rouge/lexers/jsonnet.rb +153 -0
  377. data/rouge-5.0.0/lib/rouge/lexers/jsp.rb +119 -0
  378. data/rouge-5.0.0/lib/rouge/lexers/jsx.rb +91 -0
  379. data/rouge-5.0.0/lib/rouge/lexers/julia.rb +293 -0
  380. data/rouge-5.0.0/lib/rouge/lexers/kick_assembler.rb +100 -0
  381. data/rouge-5.0.0/lib/rouge/lexers/kotlin.rb +150 -0
  382. data/rouge-5.0.0/lib/rouge/lexers/lasso/keywords.rb +20 -0
  383. data/rouge-5.0.0/lib/rouge/lexers/lasso.rb +212 -0
  384. data/rouge-5.0.0/lib/rouge/lexers/lean.rb +164 -0
  385. data/rouge-5.0.0/lib/rouge/lexers/liquid.rb +284 -0
  386. data/rouge-5.0.0/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  387. data/rouge-5.0.0/lib/rouge/lexers/literate_haskell.rb +37 -0
  388. data/rouge-5.0.0/lib/rouge/lexers/livescript.rb +310 -0
  389. data/rouge-5.0.0/lib/rouge/lexers/llvm/keywords.rb +16 -0
  390. data/rouge-5.0.0/lib/rouge/lexers/llvm.rb +59 -0
  391. data/rouge-5.0.0/lib/rouge/lexers/lua/keywords.rb +26 -0
  392. data/rouge-5.0.0/lib/rouge/lexers/lua.rb +186 -0
  393. data/rouge-5.0.0/lib/rouge/lexers/lustre.rb +79 -0
  394. data/rouge-5.0.0/lib/rouge/lexers/lutin.rb +34 -0
  395. data/rouge-5.0.0/lib/rouge/lexers/m68k.rb +143 -0
  396. data/rouge-5.0.0/lib/rouge/lexers/magik.rb +127 -0
  397. data/rouge-5.0.0/lib/rouge/lexers/make.rb +148 -0
  398. data/rouge-5.0.0/lib/rouge/lexers/markdown.rb +183 -0
  399. data/rouge-5.0.0/lib/rouge/lexers/mason.rb +110 -0
  400. data/rouge-5.0.0/lib/rouge/lexers/mathematica/keywords.rb +15 -0
  401. data/rouge-5.0.0/lib/rouge/lexers/mathematica.rb +95 -0
  402. data/rouge-5.0.0/lib/rouge/lexers/matlab/keywords.rb +15 -0
  403. data/rouge-5.0.0/lib/rouge/lexers/matlab.rb +81 -0
  404. data/rouge-5.0.0/lib/rouge/lexers/meson.rb +158 -0
  405. data/rouge-5.0.0/lib/rouge/lexers/minizinc.rb +87 -0
  406. data/rouge-5.0.0/lib/rouge/lexers/mojo.rb +39 -0
  407. data/rouge-5.0.0/lib/rouge/lexers/moonscript.rb +117 -0
  408. data/rouge-5.0.0/lib/rouge/lexers/mosel.rb +228 -0
  409. data/rouge-5.0.0/lib/rouge/lexers/msgtrans.rb +26 -0
  410. data/rouge-5.0.0/lib/rouge/lexers/mxml.rb +69 -0
  411. data/rouge-5.0.0/lib/rouge/lexers/nasm.rb +73 -0
  412. data/rouge-5.0.0/lib/rouge/lexers/nesasm.rb +78 -0
  413. data/rouge-5.0.0/lib/rouge/lexers/nginx.rb +73 -0
  414. data/rouge-5.0.0/lib/rouge/lexers/nial.rb +165 -0
  415. data/rouge-5.0.0/lib/rouge/lexers/nim.rb +154 -0
  416. data/rouge-5.0.0/lib/rouge/lexers/nix.rb +213 -0
  417. data/rouge-5.0.0/lib/rouge/lexers/objective_c/common.rb +182 -0
  418. data/rouge-5.0.0/lib/rouge/lexers/objective_c.rb +21 -0
  419. data/rouge-5.0.0/lib/rouge/lexers/objective_cpp.rb +32 -0
  420. data/rouge-5.0.0/lib/rouge/lexers/ocaml/common.rb +53 -0
  421. data/rouge-5.0.0/lib/rouge/lexers/ocaml.rb +65 -0
  422. data/rouge-5.0.0/lib/rouge/lexers/ocl.rb +84 -0
  423. data/rouge-5.0.0/lib/rouge/lexers/openedge.rb +632 -0
  424. data/rouge-5.0.0/lib/rouge/lexers/opentype_feature_file.rb +97 -0
  425. data/rouge-5.0.0/lib/rouge/lexers/p4.rb +81 -0
  426. data/rouge-5.0.0/lib/rouge/lexers/pascal.rb +68 -0
  427. data/rouge-5.0.0/lib/rouge/lexers/pdf.rb +109 -0
  428. data/rouge-5.0.0/lib/rouge/lexers/perl.rb +251 -0
  429. data/rouge-5.0.0/lib/rouge/lexers/php/keywords.rb +150 -0
  430. data/rouge-5.0.0/lib/rouge/lexers/php.rb +470 -0
  431. data/rouge-5.0.0/lib/rouge/lexers/plain_text.rb +27 -0
  432. data/rouge-5.0.0/lib/rouge/lexers/plist.rb +47 -0
  433. data/rouge-5.0.0/lib/rouge/lexers/plsql.rb +577 -0
  434. data/rouge-5.0.0/lib/rouge/lexers/pony.rb +94 -0
  435. data/rouge-5.0.0/lib/rouge/lexers/postscript.rb +93 -0
  436. data/rouge-5.0.0/lib/rouge/lexers/powershell.rb +248 -0
  437. data/rouge-5.0.0/lib/rouge/lexers/praat.rb +438 -0
  438. data/rouge-5.0.0/lib/rouge/lexers/prolog.rb +67 -0
  439. data/rouge-5.0.0/lib/rouge/lexers/prometheus.rb +122 -0
  440. data/rouge-5.0.0/lib/rouge/lexers/properties.rb +52 -0
  441. data/rouge-5.0.0/lib/rouge/lexers/protobuf.rb +71 -0
  442. data/rouge-5.0.0/lib/rouge/lexers/puppet.rb +129 -0
  443. data/rouge-5.0.0/lib/rouge/lexers/python.rb +340 -0
  444. data/rouge-5.0.0/lib/rouge/lexers/q.rb +125 -0
  445. data/rouge-5.0.0/lib/rouge/lexers/qml.rb +74 -0
  446. data/rouge-5.0.0/lib/rouge/lexers/r.rb +89 -0
  447. data/rouge-5.0.0/lib/rouge/lexers/racket.rb +568 -0
  448. data/rouge-5.0.0/lib/rouge/lexers/reasonml.rb +66 -0
  449. data/rouge-5.0.0/lib/rouge/lexers/rego.rb +60 -0
  450. data/rouge-5.0.0/lib/rouge/lexers/rescript.rb +119 -0
  451. data/rouge-5.0.0/lib/rouge/lexers/rml.rb +142 -0
  452. data/rouge-5.0.0/lib/rouge/lexers/robot_framework.rb +249 -0
  453. data/rouge-5.0.0/lib/rouge/lexers/rocq.rb +264 -0
  454. data/rouge-5.0.0/lib/rouge/lexers/ruby.rb +481 -0
  455. data/rouge-5.0.0/lib/rouge/lexers/rust.rb +261 -0
  456. data/rouge-5.0.0/lib/rouge/lexers/sas.rb +562 -0
  457. data/rouge-5.0.0/lib/rouge/lexers/sass/common.rb +182 -0
  458. data/rouge-5.0.0/lib/rouge/lexers/sass.rb +75 -0
  459. data/rouge-5.0.0/lib/rouge/lexers/scala.rb +172 -0
  460. data/rouge-5.0.0/lib/rouge/lexers/scheme.rb +113 -0
  461. data/rouge-5.0.0/lib/rouge/lexers/scss.rb +35 -0
  462. data/rouge-5.0.0/lib/rouge/lexers/sed.rb +173 -0
  463. data/rouge-5.0.0/lib/rouge/lexers/shell.rb +205 -0
  464. data/rouge-5.0.0/lib/rouge/lexers/sieve.rb +97 -0
  465. data/rouge-5.0.0/lib/rouge/lexers/slice.rb +32 -0
  466. data/rouge-5.0.0/lib/rouge/lexers/slim.rb +229 -0
  467. data/rouge-5.0.0/lib/rouge/lexers/smalltalk.rb +117 -0
  468. data/rouge-5.0.0/lib/rouge/lexers/smarty.rb +81 -0
  469. data/rouge-5.0.0/lib/rouge/lexers/sml.rb +345 -0
  470. data/rouge-5.0.0/lib/rouge/lexers/sparql.rb +131 -0
  471. data/rouge-5.0.0/lib/rouge/lexers/sqf/keywords.rb +14 -0
  472. data/rouge-5.0.0/lib/rouge/lexers/sqf.rb +108 -0
  473. data/rouge-5.0.0/lib/rouge/lexers/sql.rb +161 -0
  474. data/rouge-5.0.0/lib/rouge/lexers/ssh.rb +33 -0
  475. data/rouge-5.0.0/lib/rouge/lexers/stan.rb +445 -0
  476. data/rouge-5.0.0/lib/rouge/lexers/stata.rb +165 -0
  477. data/rouge-5.0.0/lib/rouge/lexers/supercollider.rb +115 -0
  478. data/rouge-5.0.0/lib/rouge/lexers/svelte.rb +91 -0
  479. data/rouge-5.0.0/lib/rouge/lexers/swift.rb +202 -0
  480. data/rouge-5.0.0/lib/rouge/lexers/systemd.rb +34 -0
  481. data/rouge-5.0.0/lib/rouge/lexers/syzlang.rb +316 -0
  482. data/rouge-5.0.0/lib/rouge/lexers/syzprog.rb +122 -0
  483. data/rouge-5.0.0/lib/rouge/lexers/tap.rb +88 -0
  484. data/rouge-5.0.0/lib/rouge/lexers/tcl.rb +198 -0
  485. data/rouge-5.0.0/lib/rouge/lexers/terraform.rb +121 -0
  486. data/rouge-5.0.0/lib/rouge/lexers/tex.rb +70 -0
  487. data/rouge-5.0.0/lib/rouge/lexers/thrift.rb +120 -0
  488. data/rouge-5.0.0/lib/rouge/lexers/toml.rb +124 -0
  489. data/rouge-5.0.0/lib/rouge/lexers/tsx.rb +33 -0
  490. data/rouge-5.0.0/lib/rouge/lexers/ttcn3.rb +117 -0
  491. data/rouge-5.0.0/lib/rouge/lexers/tulip.rb +107 -0
  492. data/rouge-5.0.0/lib/rouge/lexers/turtle.rb +61 -0
  493. data/rouge-5.0.0/lib/rouge/lexers/twig.rb +40 -0
  494. data/rouge-5.0.0/lib/rouge/lexers/typescript/common.rb +60 -0
  495. data/rouge-5.0.0/lib/rouge/lexers/typescript.rb +23 -0
  496. data/rouge-5.0.0/lib/rouge/lexers/vala.rb +78 -0
  497. data/rouge-5.0.0/lib/rouge/lexers/varnish.rb +168 -0
  498. data/rouge-5.0.0/lib/rouge/lexers/vb.rb +165 -0
  499. data/rouge-5.0.0/lib/rouge/lexers/velocity.rb +71 -0
  500. data/rouge-5.0.0/lib/rouge/lexers/verilog.rb +163 -0
  501. data/rouge-5.0.0/lib/rouge/lexers/veryl.rb +109 -0
  502. data/rouge-5.0.0/lib/rouge/lexers/vhdl.rb +98 -0
  503. data/rouge-5.0.0/lib/rouge/lexers/viml/keywords.rb +19 -0
  504. data/rouge-5.0.0/lib/rouge/lexers/viml.rb +68 -0
  505. data/rouge-5.0.0/lib/rouge/lexers/vue.rb +127 -0
  506. data/rouge-5.0.0/lib/rouge/lexers/wollok.rb +107 -0
  507. data/rouge-5.0.0/lib/rouge/lexers/xml.rb +56 -0
  508. data/rouge-5.0.0/lib/rouge/lexers/xojo.rb +61 -0
  509. data/rouge-5.0.0/lib/rouge/lexers/xpath.rb +332 -0
  510. data/rouge-5.0.0/lib/rouge/lexers/xquery.rb +146 -0
  511. data/rouge-5.0.0/lib/rouge/lexers/yaml.rb +388 -0
  512. data/rouge-5.0.0/lib/rouge/lexers/yang.rb +115 -0
  513. data/rouge-5.0.0/lib/rouge/lexers/zig.rb +139 -0
  514. data/rouge-5.0.0/lib/rouge/plugins/redcarpet.rb +38 -0
  515. data/rouge-5.0.0/lib/rouge/regex_lexer.rb +522 -0
  516. data/rouge-5.0.0/lib/rouge/template_lexer.rb +21 -0
  517. data/rouge-5.0.0/lib/rouge/tex_theme_renderer.rb +132 -0
  518. data/rouge-5.0.0/lib/rouge/text_analyzer.rb +50 -0
  519. data/rouge-5.0.0/lib/rouge/theme.rb +218 -0
  520. data/rouge-5.0.0/lib/rouge/themes/base16.rb +137 -0
  521. data/rouge-5.0.0/lib/rouge/themes/bw.rb +43 -0
  522. data/rouge-5.0.0/lib/rouge/themes/colorful.rb +70 -0
  523. data/rouge-5.0.0/lib/rouge/themes/github.rb +149 -0
  524. data/rouge-5.0.0/lib/rouge/themes/gruvbox.rb +176 -0
  525. data/rouge-5.0.0/lib/rouge/themes/igor_pro.rb +25 -0
  526. data/rouge-5.0.0/lib/rouge/themes/magritte.rb +80 -0
  527. data/rouge-5.0.0/lib/rouge/themes/molokai.rb +84 -0
  528. data/rouge-5.0.0/lib/rouge/themes/monokai.rb +95 -0
  529. data/rouge-5.0.0/lib/rouge/themes/monokai_sublime.rb +94 -0
  530. data/rouge-5.0.0/lib/rouge/themes/pastie.rb +72 -0
  531. data/rouge-5.0.0/lib/rouge/themes/thankful_eyes.rb +77 -0
  532. data/rouge-5.0.0/lib/rouge/themes/tulip.rb +72 -0
  533. data/rouge-5.0.0/lib/rouge/token.rb +192 -0
  534. data/rouge-5.0.0/lib/rouge/util.rb +102 -0
  535. data/rouge-5.0.0/lib/rouge/version.rb +8 -0
  536. data/rouge-5.0.0/lib/rouge.rb +117 -0
  537. data/rouge-5.0.0/lib/rubocop/cop/rouge/no_building_alternation_pattern_in_regexp.rb +71 -0
  538. data/rouge-5.0.0/lib/rubocop/cop/rouge/no_huge_collections.rb +37 -0
  539. data/rouge-5.0.0/rouge.gemspec +29 -0
  540. metadata +578 -0
@@ -0,0 +1,55 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Docker < RegexLexer
7
+ title "Docker"
8
+ desc "Dockerfile syntax"
9
+ tag 'docker'
10
+ aliases 'dockerfile', 'Dockerfile', 'containerfile', 'Containerfile'
11
+ filenames 'Dockerfile', 'Dockerfile.*', '*.Dockerfile', '*.docker', 'Containerfile', 'Containerfile.*', '*.Containerfile'
12
+ mimetypes 'text/x-dockerfile-config'
13
+
14
+ KEYWORDS = %w(
15
+ FROM MAINTAINER CMD LABEL EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USER WORKDIR ARG STOPSIGNAL HEALTHCHECK SHELL
16
+ ).join('|')
17
+
18
+ start { @shell = Shell.new(@options) }
19
+
20
+ state :root do
21
+ rule %r/\s+/, Text
22
+
23
+ rule %r/^(FROM)(\s+)(.*)(\s+)(AS)(\s+)(.*)/io do
24
+ groups Keyword, Text::Whitespace, Str, Text::Whitespace, Keyword, Text::Whitespace, Str
25
+ end
26
+
27
+ rule %r/^(ONBUILD)(\s+)(#{KEYWORDS})(.*)/io do
28
+ groups Keyword, Text::Whitespace, Keyword, Str
29
+ end
30
+
31
+ rule %r/^(#{KEYWORDS})\b(.*)/io do
32
+ groups Keyword, Str
33
+ end
34
+
35
+ rule %r/#.*?$/, Comment
36
+
37
+ rule %r/^(ONBUILD\s+)?RUN(\s+)/i do
38
+ token Keyword
39
+ push :run
40
+ @shell.reset!
41
+ end
42
+
43
+ rule %r/\w+/, Text
44
+ rule %r/[^\w]+/, Text
45
+ rule %r/./, Text
46
+ end
47
+
48
+ state :run do
49
+ rule %r/\n/, Text, :pop!
50
+ rule %r/\\./m, Str::Escape
51
+ rule(/(\\.|[^\n\\])+/) { delegate @shell }
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,70 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Dot < RegexLexer
7
+ title "DOT"
8
+ desc "graph description language"
9
+
10
+ tag 'dot'
11
+ aliases 'graphviz'
12
+ filenames '*.dot'
13
+ mimetypes 'text/vnd.graphviz'
14
+
15
+ start do
16
+ @html = HTML.new(options)
17
+ end
18
+
19
+ state :comments_and_whitespace do
20
+ rule %r/\s+/, Text
21
+ rule %r(#.*), Comment::Single
22
+ rule %r(//.*?$), Comment::Single
23
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
24
+ end
25
+
26
+ state :html do
27
+ rule %r/[^<>]+/ do
28
+ delegate @html
29
+ end
30
+ rule %r/<.+?>/m do
31
+ delegate @html
32
+ end
33
+ rule %r/>/, Punctuation, :pop!
34
+ end
35
+
36
+ state :ID do
37
+ rule %r/([a-zA-Z][a-zA-Z_0-9]*)(\s*)(=)/ do |m|
38
+ token Name, m[1]
39
+ token Text, m[2]
40
+ token Punctuation, m[3]
41
+ end
42
+ rule %r/[a-zA-Z][a-zA-Z_0-9]*/, Name::Variable
43
+ rule %r/([0-9]+)?\.[0-9]+/, Num::Float
44
+ rule %r/[0-9]+/, Num::Integer
45
+ rule %r/"(\\"|[^"])*"/, Str::Double
46
+ rule %r/</ do
47
+ token Punctuation
48
+ @html.reset!
49
+ push :html
50
+ end
51
+ end
52
+
53
+ state :a_list do
54
+ mixin :comments_and_whitespace
55
+ mixin :ID
56
+ rule %r/[=;,]/, Punctuation
57
+ rule %r/\]/, Operator, :pop!
58
+ end
59
+
60
+ state :root do
61
+ mixin :comments_and_whitespace
62
+ rule %r/\b(strict|graph|digraph|subgraph|node|edge)\b/i, Keyword
63
+ rule %r/[{};:=]/, Punctuation
64
+ rule %r/-[->]/, Operator
65
+ rule %r/\[/, Operator, :a_list
66
+ mixin :ID
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,109 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Dylan < RegexLexer
7
+ title 'Dylan'
8
+ desc 'Dylan Language (https://opendylan.org)'
9
+ tag 'dylan'
10
+ filenames '*.dylan'
11
+
12
+ # Definitions from the Dylan Reference Manual
13
+ # see:
14
+ # https://opendylan.org/books/drm/Modules
15
+ # https://opendylan.org/books/drm/Conditional_Execution
16
+ # https://opendylan.org/books/drm/Statement_Macros
17
+ reserved_words = Set.new %w(
18
+ begin block case class constant create define domain else
19
+ end exception for function generic handler if let library local
20
+ macro method module otherwise select unless until variable while
21
+ )
22
+
23
+ hash_word = Set.new %w(#t #f #next #rest #key #all-keys #include)
24
+ operators = Set.new %w(+ - * / ^ = == ~ ~= ~== < <= > >= & | :=)
25
+
26
+ state :root do
27
+ rule %r/^[\w.-]+:/, Comment::Preproc, :header
28
+ rule %r/\s+/, Text::Whitespace
29
+ rule(%r//) { goto :main }
30
+ end
31
+
32
+ # see https://opendylan.org/books/drm/Dylan_Interchange_Format
33
+ state :header do
34
+ rule(/.*?$/) { token Comment; goto :header_value }
35
+ end
36
+
37
+ state :header_value do
38
+ # line continuations are defined as any line that starts with whitespace
39
+ rule %r/^[ \t]+.*?$/, Comment
40
+ rule %r/\n+/, Comment
41
+ rule(//) { pop! }
42
+ end
43
+
44
+ state :main do
45
+ # Comments
46
+ rule %r(//.*?$), Comment::Single
47
+ rule %r(/\*.*?\*/)m, Comment::Multiline
48
+ rule %r/\s+/, Text::Whitespace
49
+
50
+ # Keywords
51
+ rule %r/\w+/ do |m|
52
+ if reserved_words.include?(m[0])
53
+ token Keyword
54
+ elsif hash_word.include?(m[0])
55
+ token Keyword::Constant
56
+ else
57
+ fallthrough!
58
+ end
59
+ end
60
+
61
+ rule %r/#(t|f|next|rest|key|all-keys|include)\b/, Keyword::Constant
62
+
63
+ # Numbers
64
+ rule %r([+-]?\d+/\d+), Literal::Number::Other
65
+ rule %r/[+-]?\d*[.]\d+(?:e[+-]?\d+)?/i, Literal::Number::Float
66
+ rule %r/[+-]?\d+[.]\d*(?:e[+-]?\d+)?/i, Literal::Number::Float
67
+ rule %r/[+-]\d+(?:e[+-]?\d+)?/i, Literal::Number::Float
68
+ rule %r/#b[01]+/, Literal::Number::Bin
69
+ rule %r/#o[0-7]+/, Literal::Number::Oct
70
+ rule %r/[+-]?[0-9]+/, Literal::Number::Integer
71
+ rule %r/#x[0-9a-f]+/i, Literal::Number::Hex
72
+
73
+ # Operators and punctuation
74
+ rule %r/::|=>|#[(\[#]|[.][.][.]|[(),.;\[\]{}=?]/, Punctuation
75
+
76
+ word_re = %r([\w!&*<>|^\$%@][\w!&*<>|^\$%@=/?~+-]*|[+-~])
77
+
78
+ rule %r/\\#{word_re}/, Str::Symbol
79
+
80
+ rule word_re do |m|
81
+ word = m[0]
82
+ if operators.include?(word)
83
+ token Operator
84
+ elsif word.start_with?('<') && word.end_with?('>')
85
+ token Name::Class
86
+ elsif word.start_with?('*') && word.end_with?('*')
87
+ token Name::Variable::Instance
88
+ elsif word.start_with?('$')
89
+ token Name::Constant
90
+ else
91
+ token Name
92
+ end
93
+ end
94
+
95
+ rule %r/:/, Operator # For 'constrained names'
96
+ # Strings, characters and whitespace
97
+ rule %r/"/, Str::Double, :dq
98
+ rule %r/'([^\\']|(\\[\\'abefnrt0])|(\\[0-9a-f]+))'/, Str::Char
99
+ end
100
+
101
+ state :dq do
102
+ rule %r/\\[\\'"abefnrt0]/, Str::Escape
103
+ rule %r/\\<\h+>/, Str::Escape
104
+ rule %r/[^\\"]+/, Str::Double
105
+ rule %r/"/, Str::Double, :pop!
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,175 @@
1
+ # -*- codding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class ECL < RegexLexer
7
+ tag 'ecl'
8
+ filenames '*.ecl'
9
+ mimetypes 'application/x-ecl'
10
+
11
+ title "ECL"
12
+ desc "Enterprise Control Language (hpccsystems.com)"
13
+
14
+ id = /(#?)\b([a-z_][\w]*?)(\d*)\b/i
15
+
16
+ def self.class_first
17
+ @class_first ||= Set.new %w(
18
+ file date str math metaphone metaphone3 uni audit blas system
19
+ )
20
+ end
21
+
22
+ def self.class_second
23
+ @class_second ||= Set.new %w(
24
+ debug email job log thorlib util workunit
25
+ )
26
+ end
27
+
28
+ def self.functions
29
+ @functions ||= Set.new %w(
30
+ abs acos aggregate allnodes apply ascii asin asstring atan _token ave
31
+ case catch choose choosen choosesets clustersize combine correlation
32
+ cos cosh count covariance cron dataset dedup define denormalize
33
+ dictionary distribute distributed distribution ebcdic enth error
34
+ evaluate event eventextra eventname exists exp failcode failmessage
35
+ fetch fromunicode fromxml getenv getisvalid global graph group hash
36
+ hashcrc having httpcall httpheader if iff index intformat isvalid
37
+ iterate join keyunicode length library limit ln local log loop map
38
+ matched matchlength matchposition matchtext matchunicode max merge
39
+ mergejoin min nofold nolocal nonempty normalize parse pipe power
40
+ preload process project pull random range rank ranked realformat
41
+ recordof regexfind regexreplace regroup rejected rollup round roundup
42
+ row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt
43
+ stepped stored sum table tan tanh thisnode topn tounicode toxml
44
+ transfer transform trim truncate typeof ungroup unicodeorder variance
45
+ which workunit xmldecode xmlencode xmltext xmlunicode assert
46
+ build buildindex fail keydiff keypatch loadxml nothor notify
47
+ output parallel sequential wait
48
+ )
49
+ end
50
+
51
+ def self.keywords
52
+ @keywords ||= Set.new %w(
53
+ and or in not all any as from atmost before best between case const
54
+ counter csv descend encrypt end endmacro enum except exclusive expire
55
+ export extend fail few first flat full function functionmacro group
56
+ heading hole ifblock import joined keep keyed last left limit load
57
+ local locale lookup many maxcount maxlength _token module interface
58
+ named nocase noroot noscan nosort of only opt outer overwrite packed
59
+ partition penalty physicallength pipe quote record repeat return
60
+ right rows scan self separator service shared skew skip sql store
61
+ terminator thor threshold token transform trim type unicodeorder
62
+ unsorted validate virtual whole wild within xml xpath after cluster
63
+ compressed compression default encoding escape fileposition forward
64
+ grouped inner internal linkcounted literal lzw mofn multiple
65
+ namespace wnotrim noxpath onfail prefetch retry rowset scope smart
66
+ soapaction stable timelimit timeout unordered unstable update use
67
+ width
68
+ )
69
+ end
70
+
71
+ def self.template
72
+ @template ||= Set.new %w(
73
+ append apply break constant debug declare demangle else elseif end
74
+ endregion error expand export exportxml for forall getdatatype if
75
+ ifdefined inmodule isdefined isvalid line link loop mangle onwarning
76
+ option region set stored text trace uniquename warning webservice
77
+ workunit loadxml
78
+ )
79
+ end
80
+
81
+ def self.type
82
+ @type ||= Set.new %w(
83
+ ascii big_endian boolean data decimal ebcdic grouped integer
84
+ linkcounted pattern qstring real record rule set of streamed string
85
+ token udecimal unicode utf8 unsigned varstring varunicode
86
+ )
87
+ end
88
+
89
+ def self.typed
90
+ @typed ||= Set.new %w(
91
+ data string qstring varstring varunicode unicode utf8
92
+ )
93
+ end
94
+
95
+ state :single_quote do
96
+ rule %r([xDQUV]?'([^'\\]*(?:\\.[^'\\]*)*)'), Str::Single
97
+ rule %r/\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)/, Text
98
+ end
99
+
100
+ state :inline_whitespace do
101
+ rule %r/[ \t\r]+/, Text
102
+ rule %r/\\\n/, Text # line continuation
103
+ rule %r(/[*].*?[*]/)m, Comment::Multiline
104
+ end
105
+
106
+ state :whitespace do
107
+ rule %r/\n+/m, Text
108
+ rule %r(//.*), Comment::Single
109
+ mixin :inline_whitespace
110
+ end
111
+
112
+ state :root do
113
+ mixin :whitespace
114
+ mixin :single_quote
115
+
116
+ rule %r(\b(?i:(and|not|or|in))\b), Operator::Word
117
+ rule %r(:=|>|<|<>|/|\\|\+|-|=), Operator
118
+ rule %r([\[\]{}();,\&\.\%]), Punctuation
119
+
120
+ rule %r(\b(?i:(beginc\+\+.*?endc\+\+)))m, Str::Single
121
+ rule %r(\b(?i:(embed.*?endembed)))m, Str::Single
122
+
123
+ rule %r(\b(\w+)\.(\w+)\.(\w+)) do |m|
124
+ if m[1] == "std" &&
125
+ self.class.class_first.include?(m[2]) &&
126
+ self.class.class_second.include?(m[3])
127
+ token Name::Class
128
+ else
129
+ token Name::Variable
130
+ end
131
+ end
132
+
133
+ rule %r(\b(?i:(u)?decimal)(\d+(_\d+)?)\b), Keyword::Type
134
+
135
+ rule %r/\d+\.\d+(e[\+\-]?\d+)?/i, Num::Float
136
+ rule %r/x[0-9a-f]+/i, Num::Hex
137
+
138
+ rule %r/0x[0-9a-f]+/i, Num::Hex
139
+ rule %r/0[0-9a-f]+x/i, Num::Hex
140
+ rule %r(0[bB][01]+), Num::Bin
141
+ rule %r([01]+[bB]), Num::Bin
142
+ rule %r(\d+), Num::Integer
143
+
144
+ rule id do |m|
145
+ name_only = m[2].downcase
146
+ name = name_only + m[3]
147
+ number = (m[3] == "") ? nil : m[3].to_i
148
+ if m[1] == "#"
149
+ if self.class.template.include? name
150
+ token Keyword::Type
151
+ else
152
+ token Error
153
+ end
154
+ elsif self.class.typed.include?(name_only) && number != nil
155
+ token Keyword::Type
156
+ elsif self.class.type.include? name
157
+ token Keyword::Type
158
+ elsif self.class.keywords.include? name
159
+ token Keyword
160
+ elsif self.class.functions.include? name
161
+ token Name::Function
162
+ elsif ["integer", "unsigned"].include?(name_only) && (1..8).cover?(number)
163
+ token Keyword::Type
164
+ elsif name_only == "real" && [4, 8].include?(number)
165
+ token Keyword::Type
166
+ elsif ["true", "false"].include? name
167
+ token Keyword::Constant
168
+ else
169
+ token Name::Other
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,52 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class EEX < TemplateLexer
6
+ title "EEX"
7
+ desc "Embedded Elixir"
8
+
9
+ tag 'eex'
10
+ aliases 'leex', 'heex'
11
+
12
+ filenames '*.eex', '*.leex', '*.heex'
13
+
14
+ def initialize(opts={})
15
+ @elixir_lexer = Elixir.new(opts)
16
+
17
+ super(opts)
18
+ end
19
+
20
+ start do
21
+ parent.reset!
22
+ @elixir_lexer.reset!
23
+ end
24
+
25
+ open = /<%%|<%=|<%#|<%/
26
+ close = /%%>|%>/
27
+
28
+ state :root do
29
+ rule %r/<%#/, Comment, :comment
30
+
31
+ rule open, Comment::Preproc, :elixir
32
+
33
+ rule %r/.+?(?=#{open})|.+/mo do
34
+ delegate parent
35
+ end
36
+ end
37
+
38
+ state :comment do
39
+ rule close, Comment, :pop!
40
+ rule %r/.+?(?=#{close})|.+/mo, Comment
41
+ end
42
+
43
+ state :elixir do
44
+ rule close, Comment::Preproc, :pop!
45
+
46
+ rule %r/.+?(?=#{close})|.+/mo do
47
+ delegate @elixir_lexer
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,65 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Eiffel < RegexLexer
7
+ title "Eiffel"
8
+ desc "Eiffel programming language"
9
+
10
+ tag 'eiffel'
11
+ filenames '*.e'
12
+ mimetypes 'text/x-eiffel'
13
+
14
+ LanguageKeywords = %w(
15
+ across agent alias all and attached as assign attribute check
16
+ class convert create debug deferred detachable do else elseif end
17
+ ensure expanded export external feature from frozen if implies inherit
18
+ inspect invariant like local loop not note obsolete old once or
19
+ Precursor redefine rename require rescue retry select separate
20
+ some then undefine until variant Void when xor
21
+ )
22
+
23
+ BooleanConstants = %w(True False)
24
+
25
+ LanguageVariables = %w(Current Result)
26
+
27
+ SimpleString = /(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/
28
+
29
+ state :root do
30
+ rule %r/"\[/, Str::Other, :aligned_verbatim_string
31
+ rule %r/"\{/, Str::Other, :non_aligned_verbatim_string
32
+ rule %r/"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/, Str::Double
33
+ rule %r/--.*/, Comment::Single
34
+ rule %r/'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/, Str::Char
35
+
36
+ rule %r/(?:#{LanguageKeywords.join('|')})\b/, Keyword
37
+ rule %r/(?:#{LanguageVariables.join('|')})\b/, Keyword::Variable
38
+ rule %r/(?:#{BooleanConstants.join('|')})\b/, Keyword::Constant
39
+
40
+ rule %r/\b0[xX][\da-fA-F](?:_*[\da-fA-F])*b/, Num::Hex
41
+ rule %r/\b0[cC][0-7](?:_*[0-7])*\b/, Num::Oct
42
+ rule %r/\b0[bB][01](?:_*[01])*\b/, Num::Bin
43
+ rule %r/\d(?:_*\d)*/, Num::Integer
44
+ rule %r/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/, Num::Float
45
+
46
+ rule %r/:=|<<|>>|\(\||\|\)|->|\.|[{}\[\];(),:?]/, Punctuation::Indicator
47
+ rule %r/\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~≤≥−∀∃¦⟳⟲]/, Operator
48
+
49
+ rule %r/[A-Z][\dA-Z_]*/, Name::Class
50
+ rule %r/[A-Za-z][\dA-Za-z_]*/, Name
51
+ rule %r/\s+/, Text
52
+ end
53
+
54
+ state :aligned_verbatim_string do
55
+ rule %r/]"/, Str::Other, :pop!
56
+ rule SimpleString, Str::Other
57
+ end
58
+
59
+ state :non_aligned_verbatim_string do
60
+ rule %r/}"/, Str::Other, :pop!
61
+ rule SimpleString, Str::Other
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,158 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ # Direct port of pygments Lexer.
7
+ # See: https://bitbucket.org/birkenfeld/pygments-main/src/7304e4759ae65343d89a51359ca538912519cc31/pygments/lexers/functional.py?at=default#cl-2362
8
+ class Elixir < RegexLexer
9
+ title "Elixir"
10
+ desc "Elixir language (elixir-lang.org)"
11
+
12
+ tag 'elixir'
13
+ aliases 'elixir', 'exs'
14
+
15
+ filenames '*.ex', '*.exs'
16
+
17
+ def self.detect?(text)
18
+ return true if text.shebang?('elixir')
19
+ end
20
+
21
+ mimetypes 'text/x-elixir', 'application/x-elixir'
22
+
23
+ state :root do
24
+ rule %r/\s+/m, Text
25
+ rule %r/#.*$/, Comment::Single
26
+ rule %r{\b(case|cond|end|bc|lc|if|unless|try|loop|receive|fn|defmodule|
27
+ defp?|defprotocol|defimpl|defrecord|defmacrop?|defdelegate|
28
+ defexception|defguardp?|defstruct|exit|raise|throw|after|rescue|catch|else)\b(?![?!])|
29
+ (?<!\.)\b(do|\-\>)\b}x, Keyword
30
+ rule %r/\b(import|require|use|recur|quote|unquote|super|refer)\b(?![?!])/, Keyword::Namespace
31
+ rule %r/(?<!\.)\b(and|not|or|when|xor|in)\b/, Operator::Word
32
+ rule %r{%=|\*=|\*\*=|\+=|\-=|\^=|\|\|=|
33
+ <=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?=[\s])\?|
34
+ (?<=[\s])!+|&(&&?|(?!\d))|\|\||\^|\*|\+|\-|/|
35
+ \||\+\+|\-\-|\*\*|\/\/|\<\-|\<\>|<<|>>|=|\.|~~~}x, Operator
36
+ rule %r{(?<!:)(:)([a-zA-Z_]\w*([?!]|=(?![>=]))?|\<\>|===?|>=?|<=?|
37
+ <=>|&&?|%\(\)|%\[\]|%\{\}|\+\+?|\-\-?|\|\|?|\!|//|[%&`/\|]|
38
+ \*\*?|=?~|<\-)|([a-zA-Z_]\w*([?!])?)(:)(?!:)}, Str::Symbol
39
+ rule %r/:"/, Str::Symbol, :interpoling_symbol
40
+ rule %r/\b(nil|true|false)\b(?![?!])|\b[A-Z]\w*\b/, Name::Constant
41
+ rule %r/\b(__(FILE|LINE|MODULE|MAIN|FUNCTION)__)\b(?![?!])/, Name::Builtin::Pseudo
42
+ rule %r/[a-zA-Z_!]\w*[!\?]?/, Name
43
+ rule %r{::|[%(){};,/\|:\\\[\]]}, Punctuation
44
+ rule %r/@[a-zA-Z_]\w*|&\d/, Name::Variable
45
+ rule %r{\b\d(_?\d)*(\.(?![^\d\s])(_?\d)+)([eE][-+]?\d(_?\d)*)?\b}, Num::Float
46
+ rule %r{\b0x[0-9A-Fa-f](_?[0-9A-Fa-f])*\b}, Num::Hex
47
+ rule %r{\b0o[0-7](_?[0-7])*\b}, Num::Oct
48
+ rule %r{\b0b[01](_?[01])*\b}, Num::Bin
49
+ rule %r{\b\d(_?\d)*\b}, Num::Integer
50
+
51
+ mixin :strings
52
+ mixin :sigil_strings
53
+ end
54
+
55
+ state :strings do
56
+ rule %r/(%[A-Ba-z])?"""(?:.|\n)*?"""/, Str::Doc
57
+ rule %r/'''(?:.|\n)*?'''/, Str::Doc
58
+ rule %r/"/, Str::Double, :dqs
59
+ rule %r/'/, Str::Single, :sqs
60
+ rule %r{(?<!\w)\?(\\(x\d{1,2}|\h{1,2}(?!\h)\b|0[0-7]{0,2}(?![0-7])\b[^x0MC])|(\\[MC]-)+\w|[^\s\\])}, Str::Other
61
+ end
62
+
63
+ state :dqs do
64
+ mixin :escapes
65
+ mixin :interpoling
66
+ rule %r/[^#"\\]+/, Str::Double
67
+ rule %r/"/, Str::Double, :pop!
68
+ rule %r/[#\\]/, Str::Double
69
+ end
70
+
71
+ state :sqs do
72
+ mixin :escapes
73
+ mixin :interpoling
74
+ rule %r/[^#'\\]+/, Str::Single
75
+ rule %r/'/, Str::Single, :pop!
76
+ rule %r/[#\\]/, Str::Single
77
+ end
78
+
79
+ state :interpoling do
80
+ rule %r/#\{/, Str::Interpol, :interpoling_string
81
+ end
82
+
83
+ state :interpoling_string do
84
+ rule %r/\}/, Str::Interpol, :pop!
85
+ mixin :root
86
+ end
87
+
88
+ state :escapes do
89
+ rule %r/\\x\h{2}/, Str::Escape
90
+ rule %r/\\u\{?\d+\}?/, Str::Escape
91
+ rule %r/\\[\\abdefnrstv0"']/, Str::Escape
92
+ end
93
+
94
+ state :interpoling_symbol do
95
+ rule %r/"/, Str::Symbol, :pop!
96
+ mixin :interpoling
97
+ rule %r/[^#"]+/, Str::Symbol
98
+ end
99
+
100
+ state :sigil_strings do
101
+ # ~-sigiled strings
102
+ # ~r(abc), ~r[abc], ~r<abc>, ~r|abc|, ~r/abc/, etc
103
+ # Cribbed and adjusted from Ruby lexer
104
+ delimiter_map = { '{' => '}', '[' => ']', '(' => ')', '<' => '>' }
105
+ sigil_opens = Regexp.union(delimiter_map.keys + [%r/"{3}/] + %w(| / ' "))
106
+ rule %r/~([a-z]|[A-Z][A-Z0-9]*)(#{sigil_opens})/ do |m|
107
+ open = Regexp.escape(m[2])
108
+ close = Regexp.escape(delimiter_map[m[2]] || m[2])
109
+ interp = /^[srcw]$/ === m[1]
110
+ toktype = Str::Other
111
+
112
+ puts " open: #{open.inspect}" if @debug
113
+ puts " close: #{close.inspect}" if @debug
114
+
115
+ # regexes
116
+ if m[1] == 'r' || m[1] == 'R'
117
+ toktype = Str::Regex
118
+ push :regex_flags
119
+ end
120
+
121
+ if m[1] == 'w' || m[1] == 'W'
122
+ push :list_flags
123
+ end
124
+
125
+ if open == '"""'
126
+ toktype = Str::Doc
127
+ end
128
+
129
+ token toktype
130
+
131
+ push do
132
+ rule %r/#{close}/, toktype, :pop!
133
+
134
+ if toktype == Str::Doc
135
+ rule %r/(?:.|\n)*?"""/, toktype, :pop!
136
+ elsif interp
137
+ mixin :interpoling
138
+ rule %r/#/, toktype
139
+ else
140
+ rule %r/[\\#]/, toktype
141
+ end
142
+
143
+ uniq_chars = [open, close].uniq.join.squeeze
144
+ rule %r/[^##{uniq_chars}\\]+/m, toktype
145
+ end
146
+ end
147
+ end
148
+
149
+ state :regex_flags do
150
+ rule %r/[fgimrsux]*/, Str::Regex, :pop!
151
+ end
152
+
153
+ state :list_flags do
154
+ rule %r/[csa]?/, Str::Other, :pop!
155
+ end
156
+ end
157
+ end
158
+ end