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,187 @@
1
+ # ABAP keywords, builtins, RAP syntax and CDS syntax taken from
2
+ #
3
+ # https://help.sap.com/doc/abapdocu_758_index_htm/7.58/en-US/index.htm?file=abenabap_shortref.htm
4
+ # https://help.sap.com/doc/abapdocu_758_index_htm/7.58/en-us/abenbuilt_in_functions_overview.htm
5
+ # https://help.sap.com/doc/abapdocu_758_index_htm/7.58/en-US/abencds_language_elements.htm
6
+ # https://help.sap.com/doc/abapdocu_758_index_htm/7.58/en-us/abenabap_words.htm
7
+ #
8
+ # Updated with modern ABAP 7.40+ and CDS keywords from ABAP 7.58 documentation
9
+ #
10
+ # This file is manually maintained by Manuel Laggner <manuel@laggner.info>
11
+ #
12
+ # Please contact them with any requests for updates.
13
+
14
+ module Rouge
15
+ module Lexers
16
+ class ABAP
17
+ KEYWORDS = Set.new %w(
18
+ *-INPUT ?TO ABAP-SOURCE ABBREVIATED ABS ABSTRACT ACCEPT ACCEPTING
19
+ ACCESS ACCORDING ACCP ACTION ACTIVATION ACTUAL ADD
20
+ ADD-CORRESPONDING ADJACENT ADJUST_NUMBERS AFTER ALIAS ALIASES ALIGN
21
+ ALL ALLOCATE ALLOW_PRECISION_LOSS ALLOWED ALPHA ANALYSIS ANALYZER
22
+ AMDP AND ANNOTATION ANNOTATIONS ANY APPEND APPENDAGE APPENDING
23
+ APPLICATION ARCHIVE AREA ARITHMETIC AS ASCENDING ASPECT ASSERT ASSIGN
24
+ ASSIGNED ASSIGNING ASSOCIATION ASSOCIATIONS ASYNCHRONOUS AT
25
+ ATTRIBUTES AUTHORITY AUTHORITY-CHECK AUTHORIZATION AUTO AVG BACK
26
+ BACKGROUND BACKUP BACKWARD BADI BASE BEFORE BEGIN BETWEEN BIG BINARY
27
+ BINTOHEX BIT BIT-AND BIT-NOT BIT-OR BIT-XOR BITFIELD BLACK BLANK
28
+ BLANKS BLOB BLOCK BLOCKED BLOCKS BLUE BOUND BOUNDARIES BOUNDS BOXED
29
+ BREAK-POINT BREAKUP BT BUFFER BULK BY BYPASSING BYTE BYTE-CA BYTE-CN
30
+ BYTE-CO BYTE-CS BYTE-NA BYTE-NS BYTE-ORDER CA CALL CALLING CASE CAST
31
+ CASTING CATCH CEIL CENTER CENTERED CHAIN CHAIN-INPUT CHAIN-REQUEST
32
+ CHANGE CHANGING CHANNELS CHAR CHAR-TO-HEX CHARACTER CHECK CHECKBOX
33
+ CHECK_BEFORE_SAVE CHILD CI_ CID CIRCULAR CLASS CLASS-CODING
34
+ CLASS-DATA CLASS-EVENTS CLASS-METHODS CLASS-POOL CDS CLEANUP
35
+ CLEANUP_FINALIZE CLEAR CLIENT CLIENTS CLNT CLOB CLOCK CLOSE CN CO
36
+ COALESCE CODE CODING COLLECT COLOR COLUMN COLUMNS COL_BACKGROUND
37
+ COL_GROUP COL_HEADING COL_KEY COL_NEGATIVE COL_NORMAL COL_POSITIVE
38
+ COL_TOTAL COMMENT COMMENTS COMMIT COMMON COMMUNICATION COMPARING
39
+ COMPONENT COMPONENTS COMPOSITION COMPRESSION COMPUTE CONCAT
40
+ CONCATENATE CONCAT_WITH_SPACE COND CONDENSE CONDITION CONNECT
41
+ CONNECTION CONSTANTS CONTEXT CONTEXTS CONTINUE CONTROL CONTROLS CONV
42
+ CONVERSION CONVERT COPIES COPY CORR CORR_SPEARMAN CORRESPONDING
43
+ CORRSPEARMAN COUNT COUNTRY COVER CP CPI CREATE CREATING CRITICAL CS
44
+ CUKY CURR CURRENCY CURRENCY_CONVERSION CURRENT CURSOR
45
+ CURSOR-SELECTION CUSTOMER CUSTOMER-FUNCTION DANGEROUS DATA DATABASE
46
+ DATAINFO DATASET DATE DATN DATN_ADD_DAYS DATN_ADD_MONTHS
47
+ DATN_DAYS_BETWEEN DATS DATS_ADD_DAYS DATS_ADD_MONTHS
48
+ DATS_DAYS_BETWEEN DATS_FROM_DATN DATS_IS_VALID DATS_TIMS_TO_TSTMP
49
+ DATS_TO_DATN DAYLIGHT DAYNAME DB2 DB6 DD/MM/YY DD/MM/YYYY DDMMYY
50
+ DEALLOCATE DEC DECFLOAT16 DECFLOAT16_DEC DECFLOAT34 DECFLOAT34_DEC
51
+ DECIMALS DECIMAL_SHIFT DECLARATIONS DEEP DEFAULT DEFERRED DEFINE
52
+ DEFINING DEFINITION DELETE DELETING DEMAND DENSE_RANK DEPARTMENT
53
+ DEPTH DESCENDING DESCRIBE DESTINATION DETAIL DETERMINATION DETERMINE
54
+ DETERMINISTIC DF16_DEC DF16_RAW DF16_SCL DF34_DEC DF34_RAW DF34_SCL
55
+ DIALOG DIRECTORY DISABLE DISCARDING DISCONNECT DISPLAY DISPLAY-MODE
56
+ DISTANCE DISTINCT DIV DIVIDE DIVIDE-CORRESPONDING DIVISION DO DUMMY
57
+ DUPLICATE DUPLICATES DURATION DURING DYNAMIC DYNPRO E EARLY EDIT
58
+ EDITOR-CALL ELSE ELSEIF EMPTY ENABLED ENABLING ENCODING END
59
+ END-ENHANCEMENT-SECTION END-LINES END-OF-DEFINITION END-OF-FILE
60
+ END-OF-EDITING END-OF-PAGE END-OF-SELECTION END-TEST-INJECTION
61
+ END-TEST-SEAM ENDAT ENDCASE ENDCATCH ENDCHAIN ENDCLASS ENDDO
62
+ ENDENHANCEMENT ENDEXEC ENDFORM ENDFUNCTION ENDIAN ENDIF ENDING
63
+ ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT
64
+ ENDTRY ENDWHILE ENDWITH ENGINEERING ENHANCEMENT ENHANCEMENT-POINT
65
+ ENHANCEMENT-SECTION ENHANCEMENTS ENTITIES ENTITY ENTRIES ENTRY ENUM
66
+ ENVIRONMENT EQ EQUIV ERROR ERRORMESSAGE ERRORS ESCAPE ESCAPING EVENT
67
+ EVENTS EXACT EXCEPT EXCEPTION EXCEPTION-TABLE EXCEPTIONS EXCLUDE
68
+ EXCLUDING EXEC EXECUTE EXISTS EXIT EXIT-COMMAND EXPAND EXPANDING
69
+ EXPIRATION EXPLICIT EXPONENT EXPORT EXPORTING EXTEND EXTENDED
70
+ EXTENSION EXTRACT EXTRACT_DAY EXTRACT_HOUR EXTRACT_MINUTE
71
+ EXTRACT_MONTH EXTRACT_SECOND EXTRACT_YEAR FAIL FETCH FIELD
72
+ FIELD-GROUPS FIELD-SYMBOL FIELD-SYMBOLS FIELDS FILE FILTER
73
+ FILTER-TABLE FILTERS FINAL FIND FIRST FIRST-LINE FIRST_VALUE
74
+ FIXED-POINT FKEQ FKGE FLOOR FLTP FLTP_TO_DEC FLUSH FOLLOWING FONT
75
+ FOR FORM FORMAT FORWARD FOUND FRAME FRAMES FREE FRIENDS FROM FULL
76
+ FUNCTION FUNCTION-POOL FUNCTIONALITY FURTHER GAPS GE GENERATE GET
77
+ GGM1 GEOM_EWKB GIVING GKEQ GKGE GLOBAL GRANT GRAPH GREEN GROUP
78
+ GROUPING GROUPS GT HANDLE HANDLER HARMLESS HASHED HAVING HDB
79
+ HEAD-LINES HEADER HEADERS HEADING HELP-ID HELP-REQUEST HEXTOBIN HIDE
80
+ HIERARCHY HIERARCHY_ANCESTORS HIERARCHY_ANCESTORS_AGGREGATE
81
+ HIERARCHY_DESCENDANTS HIERARCHY_DESCENDANTS_AGGREGATE
82
+ HIERARCHY_SIBLINGS HIGH HINT HOLD HOTSPOT I ICON ID IDENTIFICATION
83
+ IDENTIFIER IDS IF IGNORE IGNORING IMMEDIATELY IMPLEMENTATION
84
+ IMPLEMENTATIONS IMPLEMENTED IMPLICIT IMPORT IMPORTING IN INACTIVE
85
+ INCL INCLUDE INCLUDES INCLUDING INCREMENT INDEX INDEX-LINE INFOTYPES
86
+ INHERITING INIT INITIAL INITIALIZATION INNER INOUT INPUT INSERT
87
+ INSTANCE INSTANCES INSTR INT1 INT2 INT4 INT8 INTENSIFIED INTERFACE
88
+ INTERFACE-POOL INTERFACES INTERNAL INTERVALS INTO INVERSE
89
+ INVERTED-DATE IS ISO IS_VALID ITNO JOB JOIN KEEP KEEPING KERNEL KEY
90
+ KEYS KEYWORDS KIND LAG LANG LANGUAGE LAST LAST_VALUE LATE LAYOUT
91
+ LCHR LDB_PROCESS LE LEAD LEADING LEAVE LEFT LEFT-JUSTIFIED LEFTPLUS
92
+ LEFTSPACE LEGACY LENGTH LET LEVEL LEVELS LIKE LIKE_REGEXPR LINE
93
+ LINE-COUNT LINE-SELECTION LINE-SIZE LINEFEED LINES LIST
94
+ LIST-PROCESSING LISTBOX LITTLE LLANG LOAD LOAD-OF-PROGRAM LOB LOCAL
95
+ LOCALE LOCATE LOCATE_REGEXPR LOCATE_REGEXPR_AFTER LOCATOR LOCK
96
+ LOCKS LOG-POINT LOGFILE LOGICAL LONG LOOP LOW LOWER LPAD LPI LRAW
97
+ LT LTRIM M MAIL MAIN MAJOR-ID MANY MAP_MESSAGES MAPPING MARGIN MARK
98
+ MASK MATCH MATCH_RESULT MATCH_RESULT_TAB MATCHCODE MATCHED MAX
99
+ MAXIMUM MEASURES MEDIAN MEDIUM MEMBERS MEMORY MESH MESSAGE
100
+ MESSAGE-ID MESSAGES MESSAGING METHOD METHODS MIN MINIMUM MINOR-ID
101
+ MM/DD/YY MM/DD/YYYY MMDDYY MOD MODE MODIF MODIFIER MODIFY MODULE
102
+ MONTHNAME MOVE MOVE-CORRESPONDING MSSQLNT MULTIPLE MULTIPLY
103
+ MULTIPLY-CORRESPONDING NA NAME NAMETAB NATIVE NB NE NESTED NESTING
104
+ NEW NEW-LINE NEW-PAGE NEW-SECTION NEXT NO NO-DISPLAY NO-EXTENSION
105
+ NO-GAP NO-GAPS NO-GROUPING NO-HEADING NO-SCROLLING NO-SIGN NO-TITLE
106
+ NO-TOPOFPAGE NO-ZERO NODE NODES NON-UNICODE NON-UNIQUE NOT NP NS
107
+ NTILE NULL NULLS NUMBER NUMBERING NUMC O OBJECT OBJECTS OBLIGATORY
108
+ OCCURRENCE OCCURRENCES OCCURS OF OFF OFFSET ON ONE ONLY OPEN OPTION
109
+ OPTIONAL OPTIONS OR ORACLE ORDER ORPHANS OTHER OTHERS OUT OUTER
110
+ OUTPUT OUTPUT-LENGTH OVERFLOW OVERLAY PACK PACKAGE PAD PADDING PAGE
111
+ PAGES PARAMETER PARAMETER-TABLE PARAMETERS PARENT PARENTS PART
112
+ PARTIALLY PARTITION PATTERN PCRE PERCENTAGE PERFORM PERFORMING
113
+ PERSON PF PF-STATUS PINK PLACES POOL POSITION POS_HIGH POS_LOW
114
+ PRAGMAS PREC PRECEDING PRECOMPILED PREFERRED PRESERVING PRIMARY
115
+ PRINT PRINT-CONTROL PRIORITY PRIVATE PROCEDURE PROCESS PROGRAM
116
+ PROPERTY PROTECTED PROVIDE PUBLIC PUSH PUSHBUTTON PUT QUAN
117
+ QUEUE-ONLY QUICKINFO RADIOBUTTON RAISE RAISING RANGE RANGES RAW
118
+ RAWSTRING READ READ-ONLY READER RECEIVE RECEIVED RECEIVER RECEIVING
119
+ RED REDEFINITION REDUCE REDUCED REF REFERENCE REFRESH REGEX REJECT
120
+ RELATING REMOTE RENAMING REPLACE REPLACEMENT REPLACING REPORT
121
+ REPORTED REQUEST REQUESTED REQUIRED RESERVE RESET RESOLUTION
122
+ RESPECTING RESPONSE RESPONSES RESPONSIBLE RESULT RESULTS RESUMABLE
123
+ RESUME RETRY RETURN RETURNCODE RETURNING RETURNS RIGHT
124
+ RIGHT-JUSTIFIED RIGHTPLUS RIGHTSPACE RISK RMC_COMMUNICATION_FAILURE
125
+ RMC_INVALID_STATUS RMC_SYSTEM_FAILURE ROLE ROLLBACK ROUND ROW
126
+ ROW_NUMBER ROWS RPAD RTRIM RUN SAP SAP-SPOOL SAVING SCALAR
127
+ SCALE_PRESERVING SCALE_PRESERVING_SCIENTIFIC SCAN SCIENTIFIC
128
+ SCIENTIFIC_WITH_LEADING_ZERO SCHEMA SCREEN SCROLL SCROLL-BOUNDARY
129
+ SCROLLING SEARCH SECONDARY SECONDS SECTION SELECT SELECT-OPTIONS
130
+ SELECTION SELECTION-SCREEN SELECTION-SET SELECTION-SETS
131
+ SELECTION-TABLE SELECTIONS SEND SEPARATE SEPARATED SESSION SET SETS
132
+ SHARED SHIFT SHORT SHORTDUMP SHORTDUMP-ID SIBLINGS SIGN
133
+ SIGN_AS_POSTFIX SIMPLE SINGLE SIZE SKIP SKIPPING SMART SOME SORT
134
+ SORTABLE SORTED SOURCE SPACE SPANTREE SPECIFIED SPLIT SPOOL SPOTS
135
+ SQL SQLSCRIPT SSTRING STABLE STAMP STANDARD START START-OF-EDITING
136
+ START-OF-SELECTION STARTING STATE STATEMENT STATEMENTS STATIC
137
+ STATICS STATUSINFO STDDEV STEP-LOOP STEP STOP STRING STRING_AGG
138
+ STRUCTURE STRUCTURES STYLE SUBKEY SUBMATCH_RESULT
139
+ SUBMATCH_RESULT_TAB SUBMATCHES SUBMIT SUBROUTINE SUBSCREEN SUBSTRING
140
+ SUBSTRING_REGEXPR SUBTOTAL SUBTRACT SUBTRACT-CORRESPONDING SUFFIX
141
+ SUM SUMMARY SUMMING SUPPLIED SUPPLY SUPPRESS SWITCH SWITCHSTATES
142
+ SYMBOL SYBASE SYNCPOINTS SYNTAX SYNTAX-CHECK SYNTAX-TRACE SYST
143
+ SYSTEM-CALL SYSTEM-EXCEPTIONS SYSTEM-EXIT T000 TAB TABBED TABLE
144
+ TABLES TABLEVIEW TABSTRIP TARGET TASK TASKS TEST TEST-INJECTION
145
+ TEST-SEAM TESTING TEXT TEXTPOOL THEN THROW TIME TIMES TIMESTAMP
146
+ TIMEZONE TIMN TIMS TIMS_FROM_TIMN TIMS_IS_VALID TIMS_TO_TIMN TITLE
147
+ TITLE-LINES TITLEBAR TO TOKENIZATION TOKENS TOP-LINES TOP-OF-PAGE
148
+ TOTAL TRACE-ENTRY TRACE-FILE TRACE-TABLE TRAILING TRANSACTION
149
+ TRANSFER TRANSFORMATION TRANSLATE TRANSPORTING TRDIR TRMAC TRUNCATE
150
+ TRUNCATION TRY TSTMP_ADD_SECONDS TSTMP_CURRENT_UTCTIMESTAMP
151
+ TSTMP_IS_VALID TSTMP_SECONDS_BETWEEN TYPE TYPE-POOL TYPE-POOLS
152
+ TYPES ULINE UNASSIGN UNDER UNICODE UNION UNIQUE UNIT UNIT_CONVERSION
153
+ UNIX UNBLOCKED UNBOUNDED UNPACK UNTIL UNWIND UP UPDATE UPPER USER
154
+ USER-COMMAND USING UTF-8 VALID VALIDATE VALIDATION VALUE
155
+ VALUE-REQUEST VALUES VAR VARC VARY VARYING VERBATIM
156
+ VERIFICATION-MESSAGE VERSION VIA VIEW VISIBLE WAIT WARNING WEEKDAY
157
+ WHEN WHENEVER WHERE WHILE WIDTH WINDOW WINDOWS WITH WITH-HEADING
158
+ WITH-TITLE WITHOUT WORD WORK WORKSPACE WRITE WRITER XML XSD YELLOW
159
+ YES YYMMDD Z ZERO ZONE
160
+ )
161
+
162
+ BUILTINS = Set.new %w(
163
+ abs acos add_days add_months add_seconds asin atan attribute
164
+ bintohex bit-set boolc boolx cast ceil cfunc charlen char_off
165
+ class_constructor cmax cmin cnt coalesce concat concat_lines_of cond
166
+ cond-var condense constructor contains contains_any_not_of
167
+ contains_any_of conv corresponding cos cosh count count_any_not_of
168
+ count_any_of curr_to_decfloat_amount currency_conversion
169
+ current_utctimestamp datn_add_days datn_add_months datn_days_between
170
+ dats_from_datn dats_to_datn days_between dbmaxlen dbtab deserialize
171
+ distance div division escape exact exp filter find find_any_not_of
172
+ find_any_of find_end floor fltp_to_dec frac get_numeric_value
173
+ hextobin idx index insert ipow is_valid lines line_exists
174
+ line_index log log10 match matches mod new nmax nmin numofchar reduce
175
+ ref repeat replace replace_regexpr rescale reverse round
176
+ seconds_between segment serialize shift_left shift_right sign sin
177
+ sinh sqrt strlen substring substring_after substring_before
178
+ substring_from substring_to sum switch switch-var table_line tan tanh
179
+ tims_from_timn tims_to_timn to_lower to_mixed to_upper translate
180
+ trunc tstmp_to_dats tstmp_to_dst tstmp_to_tims tstmpl_from_utcl
181
+ tstmpl_to_utcl unit_conversion utcl_add_seconds utcl_current
182
+ utcl_seconds_between utclong_add utclong_current utclong_diff value
183
+ xsdbool xstrlen
184
+ )
185
+ end
186
+ end
187
+ end
@@ -0,0 +1,132 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class ABAP < RegexLexer
7
+ title "ABAP"
8
+ desc "SAP - Advanced Business Application Programming"
9
+ tag 'abap'
10
+ filenames '*.abap'
11
+ mimetypes 'text/x-abap'
12
+
13
+ lazy { require_relative 'abap/builtins' }
14
+
15
+ TYPES = Set.new %w(
16
+ b c d decfloat16 decfloat34 f i int8 n p s t x
17
+ clike csequence decfloat string xstring
18
+ )
19
+
20
+ NEW_KEYWORDS = Set.new %w(DATA FIELD-SYMBOL)
21
+
22
+ state :root do
23
+ rule %r/\s+/m, Text
24
+
25
+ rule %r/(".*?$)/, Comment::Single
26
+ rule %r/(^\*.*?$)/, Comment::Single
27
+ rule %r/\d+/, Num::Integer
28
+
29
+ # String templates |...|
30
+ rule %r/\|/, Str::Interpol, :string_template
31
+
32
+ rule %r/('|`)/, Str::Single, :single_string
33
+
34
+ # CDS annotations: @KEYWORD.field
35
+ rule %r/(@)([A-Z][A-Za-z0-9_]*)(\.)([A-Za-z][A-Za-z0-9_]*)/ do |m|
36
+ token Operator, m[1]
37
+ if KEYWORDS.include? m[2].upcase
38
+ token Keyword, m[2]
39
+ else
40
+ token Name, m[2]
41
+ end
42
+ token Punctuation, m[3]
43
+ token Name, m[4]
44
+ end
45
+
46
+ # structure field access with dot (table.field should not highlight field as keyword)
47
+ # This must come before the general punctuation rule
48
+ # In dot-access patterns, treat both parts as names (even if they match keywords)
49
+ rule %r/([A-Za-z][A-Za-z0-9_]*)(\.)([A-Za-z][A-Za-z0-9_]*)/ do |m|
50
+ token Name, m[1]
51
+ token Punctuation, m[2]
52
+ token Name, m[3]
53
+ end
54
+ # Parameter names in function/method interfaces (word before =)
55
+ # Matches word followed by optional whitespace and =
56
+ # This handles EXPORTING/IMPORTING/CHANGING/TABLES/USING parameter names
57
+ rule %r/([A-Za-z][A-Za-z0-9_]*)(?=\s*=)/ do |m|
58
+ token Name, m[1]
59
+ end
60
+ rule %r/[\[\]\(\)\{\}\.,:]/, Punctuation
61
+
62
+ # builtins / new ABAP 7.40 keywords (@DATA(), ...)
63
+ rule %r/(->|=>)?([A-Za-z][A-Za-z0-9_\-]*)(\()/ do |m|
64
+ token Operator, m[1]
65
+
66
+ word = m[2]
67
+
68
+ if (NEW_KEYWORDS.include? word.upcase) && m[1].nil?
69
+ token Keyword, m[2]
70
+ elsif (BUILTINS.include? word.downcase) && m[1].nil?
71
+ token Name::Builtin, m[2]
72
+ else
73
+ token Name, m[2]
74
+ end
75
+
76
+ token Punctuation, m[3]
77
+ end
78
+
79
+ # hyphenated keywords (like NON-UNIQUE)
80
+ rule %r/[A-Za-z][A-Za-z0-9_]*(-[A-Za-z][A-Za-z0-9_]*)+/ do |m|
81
+ if KEYWORDS.include? m[0].upcase
82
+ token Keyword
83
+ else
84
+ token Name
85
+ end
86
+ end
87
+
88
+ # structure component access (variable-component should not be highlighted as keyword)
89
+ # this rule matches: word-word where the second part is lowercase or starts lowercase
90
+ rule %r/[A-Za-z][A-Za-z0-9_]*-[a-z][A-Za-z0-9_]*/, Name
91
+
92
+ # variable names starting with $ (like $session)
93
+ rule %r/\$[A-Za-z][A-Za-z0-9_]*/, Name
94
+
95
+ # keywords, types and normal text
96
+ rule %r/\w\w*/ do |m|
97
+ if KEYWORDS.include? m[0].upcase
98
+ token Keyword
99
+ elsif TYPES.include? m[0].downcase
100
+ token Keyword::Type
101
+ else
102
+ token Name
103
+ end
104
+ end
105
+
106
+ # operators
107
+ rule %r((->|->>|=>)), Operator
108
+ rule %r([-\*\+%/~=&\?<>!#\@\^]+), Operator
109
+
110
+ end
111
+
112
+ state :operators do
113
+ rule %r((->|->>|=>)), Operator
114
+ rule %r([-\*\+%/~=&\?<>!#\@\^]+), Operator
115
+ end
116
+
117
+ state :single_string do
118
+ rule %r/\\./, Str::Escape
119
+ rule %r/(''|``)/, Str::Escape
120
+ rule %r/['`]/, Str::Single, :pop!
121
+ rule %r/[^\\'`]+/, Str::Single
122
+ end
123
+
124
+ state :string_template do
125
+ rule %r/\{[^}]*\}/, Str::Interpol # embedded expressions
126
+ rule %r/\|/, Str::Interpol, :pop!
127
+ rule %r/[^|{]+/, Str::Interpol
128
+ end
129
+
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,196 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Actionscript < RegexLexer
7
+ title "ActionScript"
8
+ desc "ActionScript"
9
+
10
+ tag 'actionscript'
11
+ aliases 'as', 'as3'
12
+ filenames '*.as'
13
+ mimetypes 'application/x-actionscript'
14
+
15
+ state :comments_and_whitespace do
16
+ rule %r/\s+/, Text
17
+ rule %r(//.*?$), Comment::Single
18
+ rule %r(/\*.*?\*/)m, Comment::Multiline
19
+ end
20
+
21
+ state :expr_start do
22
+ mixin :comments_and_whitespace
23
+
24
+ rule %r(/) do
25
+ token Str::Regex
26
+ goto :regex
27
+ end
28
+
29
+ rule %r/[{]/, Punctuation, :object
30
+
31
+ rule %r//, Text, :pop!
32
+ end
33
+
34
+ state :regex do
35
+ rule %r(/) do
36
+ token Str::Regex
37
+ goto :regex_end
38
+ end
39
+
40
+ rule %r([^/]\n), Error, :pop!
41
+
42
+ rule %r/\n/, Error, :pop!
43
+ rule %r/\[\^/, Str::Escape, :regex_group
44
+ rule %r/\[/, Str::Escape, :regex_group
45
+ rule %r/\\./, Str::Escape
46
+ rule %r{[(][?][:=<!]}, Str::Escape
47
+ rule %r/[{][\d,]+[}]/, Str::Escape
48
+ rule %r/[()?]/, Str::Escape
49
+ rule %r/./, Str::Regex
50
+ end
51
+
52
+ state :regex_end do
53
+ rule %r/[gim]+/, Str::Regex, :pop!
54
+ rule(//) { pop! }
55
+ end
56
+
57
+ state :regex_group do
58
+ # specially highlight / in a group to indicate that it doesn't
59
+ # close the regex
60
+ rule %r(/), Str::Escape
61
+
62
+ rule %r([^/]\n) do
63
+ token Error
64
+ pop! 2
65
+ end
66
+
67
+ rule %r/\]/, Str::Escape, :pop!
68
+ rule %r/\\./, Str::Escape
69
+ rule %r/./, Str::Regex
70
+ end
71
+
72
+ state :bad_regex do
73
+ rule %r/[^\n]+/, Error, :pop!
74
+ end
75
+
76
+ def self.keywords
77
+ @keywords ||= Set.new %w(
78
+ for in while do break return continue switch case default
79
+ if else throw try catch finally new delete typeof is
80
+ this with
81
+ )
82
+ end
83
+
84
+ def self.declarations
85
+ @declarations ||= Set.new %w(var with function)
86
+ end
87
+
88
+ def self.reserved
89
+ @reserved ||= Set.new %w(
90
+ dynamic final internal native public protected private class const
91
+ override static package interface extends implements namespace
92
+ set get import include super flash_proxy object_proxy trace
93
+ )
94
+ end
95
+
96
+ def self.constants
97
+ @constants ||= Set.new %w(true false null NaN Infinity undefined)
98
+ end
99
+
100
+ def self.builtins
101
+ @builtins ||= %w(
102
+ void Function Math Class
103
+ Object RegExp decodeURI
104
+ decodeURIComponent encodeURI encodeURIComponent
105
+ eval isFinite isNaN parseFloat parseInt this
106
+ )
107
+ end
108
+
109
+ id = /[$a-zA-Z_][a-zA-Z0-9_]*/
110
+
111
+ state :root do
112
+ rule %r/\A\s*#!.*?\n/m, Comment::Preproc, :statement
113
+ rule %r/\n/, Text, :statement
114
+ rule %r((?<=\n)(?=\s|/|<!--)), Text, :expr_start
115
+ mixin :comments_and_whitespace
116
+ rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | ===
117
+ | !== )x,
118
+ Operator, :expr_start
119
+ rule %r([:-<>+*%&|\^/!=]=?), Operator, :expr_start
120
+ rule %r/[(\[,]/, Punctuation, :expr_start
121
+ rule %r/;/, Punctuation, :statement
122
+ rule %r/[)\].]/, Punctuation
123
+
124
+ rule %r/[?]/ do
125
+ token Punctuation
126
+ push :ternary
127
+ push :expr_start
128
+ end
129
+
130
+ rule %r/[{}]/, Punctuation, :statement
131
+
132
+ rule id do |m|
133
+ if self.class.keywords.include? m[0]
134
+ token Keyword
135
+ push :expr_start
136
+ elsif self.class.declarations.include? m[0]
137
+ token Keyword::Declaration
138
+ push :expr_start
139
+ elsif self.class.reserved.include? m[0]
140
+ token Keyword::Reserved
141
+ elsif self.class.constants.include? m[0]
142
+ token Keyword::Constant
143
+ elsif self.class.builtins.include? m[0]
144
+ token Name::Builtin
145
+ else
146
+ token Name::Other
147
+ end
148
+ end
149
+
150
+ rule %r/\-?[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
151
+ rule %r/0x[0-9a-fA-F]+/, Num::Hex
152
+ rule %r/\-?[0-9]+/, Num::Integer
153
+ rule %r/"(\\\\|\\"|[^"])*"/, Str::Double
154
+ rule %r/'(\\\\|\\'|[^'])*'/, Str::Single
155
+ end
156
+
157
+ # braced parts that aren't object literals
158
+ state :statement do
159
+ rule %r/(#{id})(\s*)(:)/ do
160
+ groups Name::Label, Text, Punctuation
161
+ end
162
+
163
+ rule %r/[{}]/, Punctuation
164
+
165
+ mixin :expr_start
166
+ end
167
+
168
+ # object literals
169
+ state :object do
170
+ mixin :comments_and_whitespace
171
+ rule %r/[}]/ do
172
+ token Punctuation
173
+ goto :statement
174
+ end
175
+
176
+ rule %r/(#{id})(\s*)(:)/ do
177
+ groups Name::Attribute, Text, Punctuation
178
+ push :expr_start
179
+ end
180
+
181
+ rule %r/:/, Punctuation
182
+ mixin :root
183
+ end
184
+
185
+ # ternary expressions, where <id>: is not a label!
186
+ state :ternary do
187
+ rule %r/:/ do
188
+ token Punctuation
189
+ goto :expr_start
190
+ end
191
+
192
+ mixin :root
193
+ end
194
+ end
195
+ end
196
+ end
@@ -0,0 +1,162 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Ada < RegexLexer
7
+ tag 'ada'
8
+ filenames '*.ada', '*.ads', '*.adb', '*.adc', '*.gpr'
9
+ mimetypes 'text/x-ada'
10
+
11
+ title 'Ada'
12
+ desc 'The Ada 2012 programming language'
13
+
14
+ # Ada identifiers are Unicode with underscores only allowed as separators.
15
+ ID = /[[:alpha:]](?:\p{Pc}?[[:alnum:]])*\b/
16
+
17
+ # Numerals can also contain underscores.
18
+ NUM = /\d(_?\d)*/
19
+ XNUM = /\h(_?\h)*/
20
+ EXP = /(E[-+]?#{NUM})?/i
21
+
22
+ # Return a hash mapping lower-case identifiers to token classes.
23
+ def self.idents
24
+ @idents ||= Hash.new(Name).tap do |h|
25
+ %w(
26
+ abort abstract accept access aliased all array at begin body
27
+ case constant declare delay delta digits do else elsif end
28
+ exception exit for generic goto if in interface is limited
29
+ loop new null of others out overriding parallel pragma private
30
+ protected raise range record renames requeue return reverse
31
+ select separate some synchronized tagged task terminate then
32
+ until use when while with
33
+ ).each {|w| h[w] = Keyword}
34
+
35
+ %w(abs and mod not or rem xor).each {|w| h[w] = Operator::Word}
36
+
37
+ %w(
38
+ entry function package procedure subtype type
39
+ ).each {|w| h[w] = Keyword::Declaration}
40
+
41
+ %w(
42
+ boolean character constraint_error duration float integer
43
+ natural positive long_float long_integer long_long_float
44
+ long_long_integer program_error short_float short_integer
45
+ short_short_integer storage_error string tasking_error
46
+ wide_character wide_string wide_wide_character
47
+ wide_wide_string
48
+ ).each {|w| h[w] = Name::Builtin}
49
+ end
50
+ end
51
+
52
+ state :whitespace do
53
+ rule %r{\s+}m, Text
54
+ rule %r{--.*$}, Comment::Single
55
+ end
56
+
57
+ state :dquote_string do
58
+ rule %r{[^"\n]+}, Literal::String::Double
59
+ rule %r{""}, Literal::String::Escape
60
+ rule %r{"}, Literal::String::Double, :pop!
61
+ rule %r{\n}, Error, :pop!
62
+ end
63
+
64
+ state :attr do
65
+ mixin :whitespace
66
+ rule ID, Name::Attribute, :pop!
67
+ rule %r{}, Text, :pop!
68
+ end
69
+
70
+ # Handle a dotted name immediately following a declaration keyword.
71
+ state :decl_name do
72
+ mixin :whitespace
73
+ rule %r{body\b}i, Keyword::Declaration # package body Foo.Bar is...
74
+ rule %r{(#{ID})(\.)} do
75
+ groups Name::Namespace, Punctuation
76
+ end
77
+ # function "<=" (Left, Right: Type) is ...
78
+ rule %r{#{ID}|"(and|or|xor|/?=|<=?|>=?|\+|–|&\|/|mod|rem|\*?\*|abs|not)"},
79
+ Name::Function, :pop!
80
+ rule %r{}, Text, :pop!
81
+ end
82
+
83
+ # Handle a sequence of library unit names: with Ada.Foo, Ada.Bar;
84
+ #
85
+ # There's a chance we entered this state mistakenly since 'with'
86
+ # has multiple other uses in Ada (none of which are likely to
87
+ # appear at the beginning of a line). Try to bail as soon as
88
+ # possible if we see something suspicious like keywords.
89
+ #
90
+ # See ada_spec.rb for some examples.
91
+ state :libunit_name do
92
+ mixin :whitespace
93
+
94
+ rule ID do |m|
95
+ t = self.class.idents[m[0].downcase]
96
+ if t <= Name
97
+ # Convert all kinds of Name to namespaces in this context.
98
+ token Name::Namespace
99
+ else
100
+ # Yikes, we're not supposed to get a keyword in a library unit name!
101
+ # We probably entered this state by mistake, so try to fix it.
102
+ token t
103
+ if t == Keyword::Declaration
104
+ goto :decl_name
105
+ else
106
+ pop!
107
+ end
108
+ end
109
+ end
110
+
111
+ rule %r{[.,]}, Punctuation
112
+ rule %r{}, Text, :pop!
113
+ end
114
+
115
+ state :root do
116
+ mixin :whitespace
117
+
118
+ # String literals.
119
+ rule %r{'.'}, Literal::String::Char
120
+ rule %r{"[^"\n]*}, Literal::String::Double, :dquote_string
121
+
122
+ # Real literals.
123
+ rule %r{#{NUM}\.#{NUM}#{EXP}}, Literal::Number::Float
124
+ rule %r{#{NUM}##{XNUM}\.#{XNUM}##{EXP}}, Literal::Number::Float
125
+
126
+ # Integer literals.
127
+ rule %r{2#[01](_?[01])*##{EXP}}, Literal::Number::Bin
128
+ rule %r{8#[0-7](_?[0-7])*##{EXP}}, Literal::Number::Oct
129
+ rule %r{16##{XNUM}*##{EXP}}, Literal::Number::Hex
130
+ rule %r{#{NUM}##{XNUM}##{EXP}}, Literal::Number::Integer
131
+ rule %r{#{NUM}#\w+#}, Error
132
+ rule %r{#{NUM}#{EXP}}, Literal::Number::Integer
133
+
134
+ # Special constructs.
135
+ rule %r{'}, Punctuation, :attr
136
+ rule %r{<<#{ID}>>}, Name::Label
137
+
138
+ # Context clauses are tricky because the 'with' keyword is used
139
+ # for many purposes. Detect at beginning of the line only.
140
+ rule %r{^(?:(limited)(\s+))?(?:(private)(\s+))?(with)\b}i do
141
+ groups Keyword::Namespace, Text, Keyword::Namespace, Text, Keyword::Namespace
142
+ push :libunit_name
143
+ end
144
+
145
+ # Operators and punctuation characters.
146
+ rule %r{[+*/&<=>|]|-|=>|\.\.|\*\*|[:></]=|<<|>>|<>|@}, Operator
147
+ rule %r{[.,:;()\[\]]}, Punctuation
148
+
149
+ rule ID do |m|
150
+ t = self.class.idents[m[0].downcase]
151
+ token t
152
+ if t == Keyword::Declaration
153
+ push :decl_name
154
+ end
155
+ end
156
+
157
+ # Flag word-like things that don't match the ID pattern.
158
+ rule %r{\b(\p{Pc}|[[:alpha:]])\p{Word}*}, Error
159
+ end
160
+ end
161
+ end
162
+ end