pygments.rb 1.2.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +40 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +4 -6
  6. data/.rubocop.yml +16 -0
  7. data/CHANGELOG.adoc +137 -0
  8. data/Gemfile +3 -1
  9. data/LICENSE +1 -1
  10. data/README.adoc +159 -0
  11. data/Rakefile +8 -32
  12. data/bench.rb +14 -8
  13. data/lib/pygments.rb +16 -14
  14. data/lib/pygments/lexer.rb +87 -65
  15. data/lib/pygments/mentos.py +23 -110
  16. data/lib/pygments/popen.rb +188 -284
  17. data/lib/pygments/version.rb +2 -2
  18. data/pygments.rb.gemspec +20 -13
  19. data/test/test_pygments.rb +50 -110
  20. data/vendor/pygments-main/{AUTHORS → Pygments-2.8.1.dist-info/AUTHORS} +26 -3
  21. data/vendor/pygments-main/Pygments-2.8.1.dist-info/INSTALLER +1 -0
  22. data/vendor/pygments-main/{LICENSE → Pygments-2.8.1.dist-info/LICENSE} +1 -1
  23. data/vendor/pygments-main/Pygments-2.8.1.dist-info/METADATA +48 -0
  24. data/vendor/pygments-main/Pygments-2.8.1.dist-info/RECORD +494 -0
  25. data/vendor/pygments-main/Pygments-2.8.1.dist-info/REQUESTED +0 -0
  26. data/vendor/pygments-main/Pygments-2.8.1.dist-info/WHEEL +5 -0
  27. data/vendor/pygments-main/Pygments-2.8.1.dist-info/entry_points.txt +3 -0
  28. data/vendor/pygments-main/Pygments-2.8.1.dist-info/top_level.txt +1 -0
  29. data/vendor/pygments-main/bin/pygmentize +8 -0
  30. data/vendor/pygments-main/pygments/__init__.py +6 -12
  31. data/vendor/pygments-main/pygments/__main__.py +17 -0
  32. data/vendor/pygments-main/pygments/cmdline.py +213 -184
  33. data/vendor/pygments-main/pygments/console.py +6 -10
  34. data/vendor/pygments-main/pygments/filter.py +4 -7
  35. data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
  36. data/vendor/pygments-main/pygments/formatter.py +4 -5
  37. data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
  38. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
  39. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  40. data/vendor/pygments-main/pygments/formatters/html.py +242 -139
  41. data/vendor/pygments-main/pygments/formatters/img.py +91 -50
  42. data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
  43. data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
  44. data/vendor/pygments-main/pygments/formatters/other.py +18 -17
  45. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
  46. data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
  47. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
  48. data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
  49. data/vendor/pygments-main/pygments/lexer.py +47 -44
  50. data/vendor/pygments-main/pygments/lexers/__init__.py +341 -0
  51. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1644 -0
  52. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +231 -0
  53. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +75 -0
  54. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1724 -0
  55. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5326 -0
  56. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +292 -0
  57. data/vendor/pygments-main/pygments/lexers/_mapping.py +554 -0
  58. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1171 -0
  59. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
  60. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2600 -0
  61. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4752 -0
  62. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +677 -0
  63. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3093 -0
  64. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1160 -0
  65. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +557 -0
  66. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +457 -0
  67. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1003 -0
  68. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
  69. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
  70. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1938 -0
  71. data/vendor/pygments-main/pygments/lexers/actionscript.py +244 -0
  72. data/vendor/pygments-main/pygments/lexers/agile.py +23 -0
  73. data/vendor/pygments-main/pygments/lexers/algebra.py +239 -0
  74. data/vendor/pygments-main/pygments/lexers/ambient.py +75 -0
  75. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  76. data/vendor/pygments-main/pygments/lexers/ampl.py +86 -0
  77. data/vendor/pygments-main/pygments/lexers/apl.py +100 -0
  78. data/vendor/pygments-main/pygments/lexers/archetype.py +317 -0
  79. data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +1004 -0
  81. data/vendor/pygments-main/pygments/lexers/automation.py +379 -0
  82. data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
  83. data/vendor/pygments-main/pygments/lexers/basic.py +661 -0
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +159 -0
  85. data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +626 -0
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +342 -0
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +565 -0
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +77 -0
  90. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  91. data/vendor/pygments-main/pygments/lexers/chapel.py +111 -0
  92. data/vendor/pygments-main/pygments/lexers/clean.py +178 -0
  93. data/vendor/pygments-main/pygments/lexers/compiled.py +33 -0
  94. data/vendor/pygments-main/pygments/lexers/configs.py +985 -0
  95. data/vendor/pygments-main/pygments/lexers/console.py +113 -0
  96. data/vendor/pygments-main/pygments/lexers/crystal.py +366 -0
  97. data/vendor/pygments-main/pygments/lexers/csound.py +466 -0
  98. data/vendor/pygments-main/pygments/lexers/css.py +694 -0
  99. data/vendor/pygments-main/pygments/lexers/d.py +255 -0
  100. data/vendor/pygments-main/pygments/lexers/dalvik.py +124 -0
  101. data/vendor/pygments-main/pygments/lexers/data.py +697 -0
  102. data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
  103. data/vendor/pygments-main/pygments/lexers/diff.py +164 -0
  104. data/vendor/pygments-main/pygments/lexers/dotnet.py +706 -0
  105. data/vendor/pygments-main/pygments/lexers/dsls.py +959 -0
  106. data/vendor/pygments-main/pygments/lexers/dylan.py +286 -0
  107. data/vendor/pygments-main/pygments/lexers/ecl.py +137 -0
  108. data/vendor/pygments-main/pygments/lexers/eiffel.py +64 -0
  109. data/vendor/pygments-main/pygments/lexers/elm.py +120 -0
  110. data/vendor/pygments-main/pygments/lexers/email.py +150 -0
  111. data/vendor/pygments-main/pygments/lexers/erlang.py +529 -0
  112. data/vendor/pygments-main/pygments/lexers/esoteric.py +303 -0
  113. data/vendor/pygments-main/pygments/lexers/ezhil.py +76 -0
  114. data/vendor/pygments-main/pygments/lexers/factor.py +343 -0
  115. data/vendor/pygments-main/pygments/lexers/fantom.py +249 -0
  116. data/vendor/pygments-main/pygments/lexers/felix.py +272 -0
  117. data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
  118. data/vendor/pygments-main/pygments/lexers/forth.py +177 -0
  119. data/vendor/pygments-main/pygments/lexers/fortran.py +208 -0
  120. data/vendor/pygments-main/pygments/lexers/foxpro.py +427 -0
  121. data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
  122. data/vendor/pygments-main/pygments/lexers/functional.py +20 -0
  123. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  124. data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
  125. data/vendor/pygments-main/pygments/lexers/go.py +100 -0
  126. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +269 -0
  127. data/vendor/pygments-main/pygments/lexers/graph.py +84 -0
  128. data/vendor/pygments-main/pygments/lexers/graphics.py +799 -0
  129. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  130. data/vendor/pygments-main/pygments/lexers/haskell.py +869 -0
  131. data/vendor/pygments-main/pygments/lexers/haxe.py +935 -0
  132. data/vendor/pygments-main/pygments/lexers/hdl.py +468 -0
  133. data/vendor/pygments-main/pygments/lexers/hexdump.py +102 -0
  134. data/vendor/pygments-main/pygments/lexers/html.py +613 -0
  135. data/vendor/pygments-main/pygments/lexers/idl.py +280 -0
  136. data/vendor/pygments-main/pygments/lexers/igor.py +419 -0
  137. data/vendor/pygments-main/pygments/lexers/inferno.py +95 -0
  138. data/vendor/pygments-main/pygments/lexers/installers.py +321 -0
  139. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1367 -0
  140. data/vendor/pygments-main/pygments/lexers/iolang.py +62 -0
  141. data/vendor/pygments-main/pygments/lexers/j.py +145 -0
  142. data/vendor/pygments-main/pygments/lexers/javascript.py +1536 -0
  143. data/vendor/pygments-main/pygments/lexers/julia.py +330 -0
  144. data/vendor/pygments-main/pygments/lexers/jvm.py +1739 -0
  145. data/vendor/pygments-main/pygments/lexers/lisp.py +2698 -0
  146. data/vendor/pygments-main/pygments/lexers/make.py +205 -0
  147. data/vendor/pygments-main/pygments/lexers/markup.py +762 -0
  148. data/vendor/pygments-main/pygments/lexers/math.py +20 -0
  149. data/vendor/pygments-main/pygments/lexers/matlab.py +3280 -0
  150. data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
  151. data/vendor/pygments-main/pygments/lexers/ml.py +957 -0
  152. data/vendor/pygments-main/pygments/lexers/modeling.py +365 -0
  153. data/vendor/pygments-main/pygments/lexers/modula2.py +1579 -0
  154. data/vendor/pygments-main/pygments/lexers/monte.py +203 -0
  155. data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
  156. data/vendor/pygments-main/pygments/lexers/ncl.py +893 -0
  157. data/vendor/pygments-main/pygments/lexers/nimrod.py +158 -0
  158. data/vendor/pygments-main/pygments/lexers/nit.py +63 -0
  159. data/vendor/pygments-main/pygments/lexers/nix.py +135 -0
  160. data/vendor/pygments-main/pygments/lexers/oberon.py +120 -0
  161. data/vendor/pygments-main/pygments/lexers/objective.py +503 -0
  162. data/vendor/pygments-main/pygments/lexers/ooc.py +84 -0
  163. data/vendor/pygments-main/pygments/lexers/other.py +40 -0
  164. data/vendor/pygments-main/pygments/lexers/parasail.py +78 -0
  165. data/vendor/pygments-main/pygments/lexers/parsers.py +799 -0
  166. data/vendor/pygments-main/pygments/lexers/pascal.py +643 -0
  167. data/vendor/pygments-main/pygments/lexers/pawn.py +202 -0
  168. data/vendor/pygments-main/pygments/lexers/perl.py +731 -0
  169. data/vendor/pygments-main/pygments/lexers/php.py +320 -0
  170. data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
  171. data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
  172. data/vendor/pygments-main/pygments/lexers/praat.py +301 -0
  173. data/vendor/pygments-main/pygments/lexers/prolog.py +305 -0
  174. data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
  175. data/vendor/pygments-main/pygments/lexers/python.py +1158 -0
  176. data/vendor/pygments-main/pygments/lexers/qvt.py +151 -0
  177. data/vendor/pygments-main/pygments/lexers/r.py +190 -0
  178. data/vendor/pygments-main/pygments/lexers/rdf.py +462 -0
  179. data/vendor/pygments-main/pygments/lexers/rebol.py +430 -0
  180. data/vendor/pygments-main/pygments/lexers/resource.py +84 -0
  181. data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
  182. data/vendor/pygments-main/pygments/lexers/rnc.py +66 -0
  183. data/vendor/pygments-main/pygments/lexers/roboconf.py +81 -0
  184. data/vendor/pygments-main/pygments/lexers/robotframework.py +551 -0
  185. data/vendor/pygments-main/pygments/lexers/ruby.py +523 -0
  186. data/vendor/pygments-main/pygments/lexers/rust.py +223 -0
  187. data/vendor/pygments-main/pygments/lexers/sas.py +227 -0
  188. data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
  189. data/vendor/pygments-main/pygments/lexers/scripting.py +1283 -0
  190. data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
  191. data/vendor/pygments-main/pygments/lexers/shell.py +909 -0
  192. data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
  193. data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
  194. data/vendor/pygments-main/pygments/lexers/smalltalk.py +194 -0
  195. data/vendor/pygments-main/pygments/lexers/smv.py +78 -0
  196. data/vendor/pygments-main/pygments/lexers/snobol.py +82 -0
  197. data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
  198. data/vendor/pygments-main/pygments/lexers/special.py +106 -0
  199. data/vendor/pygments-main/pygments/lexers/sql.py +832 -0
  200. data/vendor/pygments-main/pygments/lexers/stata.py +170 -0
  201. data/vendor/pygments-main/pygments/lexers/supercollider.py +94 -0
  202. data/vendor/pygments-main/pygments/lexers/tcl.py +144 -0
  203. data/vendor/pygments-main/pygments/lexers/templates.py +2263 -0
  204. data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
  205. data/vendor/pygments-main/pygments/lexers/testing.py +206 -0
  206. data/vendor/pygments-main/pygments/lexers/text.py +25 -0
  207. data/vendor/pygments-main/pygments/lexers/textedit.py +168 -0
  208. data/vendor/pygments-main/pygments/lexers/textfmts.py +429 -0
  209. data/vendor/pygments-main/pygments/lexers/theorem.py +476 -0
  210. data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
  211. data/vendor/pygments-main/pygments/lexers/trafficscript.py +53 -0
  212. data/vendor/pygments-main/pygments/lexers/typoscript.py +218 -0
  213. data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
  214. data/vendor/pygments-main/pygments/lexers/urbi.py +145 -0
  215. data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
  216. data/vendor/pygments-main/pygments/lexers/varnish.py +189 -0
  217. data/vendor/pygments-main/pygments/lexers/verification.py +113 -0
  218. data/vendor/pygments-main/pygments/lexers/web.py +23 -0
  219. data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
  220. data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
  221. data/vendor/pygments-main/pygments/lexers/whiley.py +115 -0
  222. data/vendor/pygments-main/pygments/lexers/x10.py +68 -0
  223. data/vendor/pygments-main/pygments/lexers/xorg.py +36 -0
  224. data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
  225. data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
  226. data/vendor/pygments-main/pygments/modeline.py +1 -2
  227. data/vendor/pygments-main/pygments/plugin.py +4 -3
  228. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  229. data/vendor/pygments-main/pygments/scanner.py +2 -3
  230. data/vendor/pygments-main/pygments/sphinxext.py +2 -5
  231. data/vendor/pygments-main/pygments/style.py +61 -25
  232. data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
  233. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  234. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  235. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  237. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  239. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  242. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
  247. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  249. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  250. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  251. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  252. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  253. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/solarized.py +136 -0
  261. data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
  262. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
  263. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  264. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  265. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  266. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  267. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  268. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  269. data/vendor/pygments-main/pygments/token.py +1 -2
  270. data/vendor/pygments-main/pygments/unistring.py +47 -109
  271. data/vendor/pygments-main/pygments/util.py +16 -96
  272. metadata +81 -139
  273. data/CHANGELOG.md +0 -111
  274. data/README.md +0 -121
  275. data/cache-lexers.rb +0 -8
  276. data/circle.yml +0 -20
  277. data/test/test_data.c +0 -2581
  278. data/test/test_data.py +0 -514
  279. data/test/test_data_generated +0 -2582
  280. data/vendor/custom_lexers/github.py +0 -565
  281. data/vendor/pygments-main/CHANGES +0 -1186
  282. data/vendor/pygments-main/MANIFEST.in +0 -6
  283. data/vendor/pygments-main/Makefile +0 -65
  284. data/vendor/pygments-main/README.rst +0 -39
  285. data/vendor/pygments-main/REVISION +0 -1
  286. data/vendor/pygments-main/TODO +0 -12
  287. data/vendor/pygments-main/doc/Makefile +0 -153
  288. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  289. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  290. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  291. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  292. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  293. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  294. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  295. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  296. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  297. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  298. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  299. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  300. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  301. data/vendor/pygments-main/doc/conf.py +0 -241
  302. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  303. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  304. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  305. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  306. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  307. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  308. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  309. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  310. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  311. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  312. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  313. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  314. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  315. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  316. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  317. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  318. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  319. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  320. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  321. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  322. data/vendor/pygments-main/doc/download.rst +0 -41
  323. data/vendor/pygments-main/doc/faq.rst +0 -139
  324. data/vendor/pygments-main/doc/index.rst +0 -54
  325. data/vendor/pygments-main/doc/languages.rst +0 -154
  326. data/vendor/pygments-main/doc/make.bat +0 -190
  327. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  328. data/vendor/pygments-main/external/autopygmentize +0 -101
  329. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  330. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  331. data/vendor/pygments-main/external/moin-parser.py +0 -112
  332. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  333. data/vendor/pygments-main/external/rst-directive.py +0 -82
  334. data/vendor/pygments-main/pygmentize +0 -8
  335. data/vendor/pygments-main/requirements.txt +0 -5
  336. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  337. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  338. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  339. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  340. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  341. data/vendor/pygments-main/scripts/pylintrc +0 -301
  342. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  343. data/vendor/pygments-main/setup.cfg +0 -10
  344. data/vendor/pygments-main/setup.py +0 -77
  345. data/vendor/pygments-main/tox.ini +0 -7
  346. data/vendor/simplejson/.gitignore +0 -10
  347. data/vendor/simplejson/.travis.yml +0 -5
  348. data/vendor/simplejson/CHANGES.txt +0 -291
  349. data/vendor/simplejson/LICENSE.txt +0 -19
  350. data/vendor/simplejson/MANIFEST.in +0 -5
  351. data/vendor/simplejson/README.rst +0 -19
  352. data/vendor/simplejson/conf.py +0 -179
  353. data/vendor/simplejson/index.rst +0 -628
  354. data/vendor/simplejson/scripts/make_docs.py +0 -18
  355. data/vendor/simplejson/setup.py +0 -104
  356. data/vendor/simplejson/simplejson/__init__.py +0 -510
  357. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  358. data/vendor/simplejson/simplejson/decoder.py +0 -425
  359. data/vendor/simplejson/simplejson/encoder.py +0 -567
  360. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  361. data/vendor/simplejson/simplejson/scanner.py +0 -77
  362. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  363. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  364. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  365. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  366. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  367. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  368. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  369. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  370. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  371. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  372. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  373. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  374. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  375. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  376. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  377. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  378. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  379. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  380. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  381. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  382. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  383. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  384. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  385. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  386. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -0,0 +1,466 @@
1
+ """
2
+ pygments.lexers.csound
3
+ ~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for Csound languages.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ import re
12
+
13
+ from pygments.lexer import RegexLexer, bygroups, default, include, using, words
14
+ from pygments.token import Comment, Error, Keyword, Name, Number, Operator, Punctuation, \
15
+ String, Text, Whitespace
16
+ from pygments.lexers._csound_builtins import OPCODES, DEPRECATED_OPCODES
17
+ from pygments.lexers.html import HtmlLexer
18
+ from pygments.lexers.python import PythonLexer
19
+ from pygments.lexers.scripting import LuaLexer
20
+
21
+ __all__ = ['CsoundScoreLexer', 'CsoundOrchestraLexer', 'CsoundDocumentLexer']
22
+
23
+ newline = (r'((?:(?:;|//).*)*)(\n)', bygroups(Comment.Single, Text))
24
+
25
+
26
+ class CsoundLexer(RegexLexer):
27
+ tokens = {
28
+ 'whitespace': [
29
+ (r'[ \t]+', Text),
30
+ (r'/[*](?:.|\n)*?[*]/', Comment.Multiline),
31
+ (r'(?:;|//).*$', Comment.Single),
32
+ (r'(\\)(\n)', bygroups(Whitespace, Text))
33
+ ],
34
+
35
+ 'preprocessor directives': [
36
+ (r'#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+', Comment.Preproc),
37
+ (r'#includestr', Comment.Preproc, 'includestr directive'),
38
+ (r'#include', Comment.Preproc, 'include directive'),
39
+ (r'#[ \t]*define', Comment.Preproc, 'define directive'),
40
+ (r'#(?:ifn?def|undef)\b', Comment.Preproc, 'macro directive')
41
+ ],
42
+
43
+ 'include directive': [
44
+ include('whitespace'),
45
+ (r'([^ \t]).*?\1', String, '#pop')
46
+ ],
47
+ 'includestr directive': [
48
+ include('whitespace'),
49
+ (r'"', String, ('#pop', 'quoted string'))
50
+ ],
51
+
52
+ 'define directive': [
53
+ (r'\n', Text),
54
+ include('whitespace'),
55
+ (r'([A-Z_a-z]\w*)(\()', bygroups(Comment.Preproc, Punctuation),
56
+ ('#pop', 'macro parameter name list')),
57
+ (r'[A-Z_a-z]\w*', Comment.Preproc, ('#pop', 'before macro body'))
58
+ ],
59
+ 'macro parameter name list': [
60
+ include('whitespace'),
61
+ (r'[A-Z_a-z]\w*', Comment.Preproc),
62
+ (r"['#]", Punctuation),
63
+ (r'\)', Punctuation, ('#pop', 'before macro body'))
64
+ ],
65
+ 'before macro body': [
66
+ (r'\n', Text),
67
+ include('whitespace'),
68
+ (r'#', Punctuation, ('#pop', 'macro body'))
69
+ ],
70
+ 'macro body': [
71
+ (r'(?:\\(?!#)|[^#\\]|\n)+', Comment.Preproc),
72
+ (r'\\#', Comment.Preproc),
73
+ (r'(?<!\\)#', Punctuation, '#pop')
74
+ ],
75
+
76
+ 'macro directive': [
77
+ include('whitespace'),
78
+ (r'[A-Z_a-z]\w*', Comment.Preproc, '#pop')
79
+ ],
80
+
81
+ 'macro uses': [
82
+ (r'(\$[A-Z_a-z]\w*\.?)(\()', bygroups(Comment.Preproc, Punctuation),
83
+ 'macro parameter value list'),
84
+ (r'\$[A-Z_a-z]\w*(?:\.|\b)', Comment.Preproc)
85
+ ],
86
+ 'macro parameter value list': [
87
+ (r'(?:[^\'#"{()]|\{(?!\{))+', Comment.Preproc),
88
+ (r"['#]", Punctuation),
89
+ (r'"', String, 'macro parameter value quoted string'),
90
+ (r'\{\{', String, 'macro parameter value braced string'),
91
+ (r'\(', Comment.Preproc, 'macro parameter value parenthetical'),
92
+ (r'\)', Punctuation, '#pop')
93
+ ],
94
+ 'macro parameter value quoted string': [
95
+ (r"\\[#'()]", Comment.Preproc),
96
+ (r"[#'()]", Error),
97
+ include('quoted string')
98
+ ],
99
+ 'macro parameter value braced string': [
100
+ (r"\\[#'()]", Comment.Preproc),
101
+ (r"[#'()]", Error),
102
+ include('braced string')
103
+ ],
104
+ 'macro parameter value parenthetical': [
105
+ (r'(?:[^\\()]|\\\))+', Comment.Preproc),
106
+ (r'\(', Comment.Preproc, '#push'),
107
+ (r'\)', Comment.Preproc, '#pop')
108
+ ],
109
+
110
+ 'whitespace and macro uses': [
111
+ include('whitespace'),
112
+ include('macro uses')
113
+ ],
114
+
115
+ 'numbers': [
116
+ (r'\d+[Ee][+-]?\d+|(\d+\.\d*|\d*\.\d+)([Ee][+-]?\d+)?', Number.Float),
117
+ (r'(0[Xx])([0-9A-Fa-f]+)', bygroups(Keyword.Type, Number.Hex)),
118
+ (r'\d+', Number.Integer)
119
+ ],
120
+
121
+ 'quoted string': [
122
+ (r'"', String, '#pop'),
123
+ (r'[^"$]+', String),
124
+ include('macro uses'),
125
+ (r'[$]', String)
126
+ ],
127
+
128
+ 'braced string': [
129
+ # Do nothing. This must be defined in subclasses.
130
+ ]
131
+ }
132
+
133
+
134
+ class CsoundScoreLexer(CsoundLexer):
135
+ """
136
+ For `Csound <https://csound.com>`_ scores.
137
+
138
+ .. versionadded:: 2.1
139
+ """
140
+
141
+ name = 'Csound Score'
142
+ aliases = ['csound-score', 'csound-sco']
143
+ filenames = ['*.sco']
144
+
145
+ tokens = {
146
+ 'root': [
147
+ (r'\n', Text),
148
+ include('whitespace and macro uses'),
149
+ include('preprocessor directives'),
150
+
151
+ (r'[aBbCdefiqstvxy]', Keyword),
152
+ # There is also a w statement that is generated internally and should not be
153
+ # used; see https://github.com/csound/csound/issues/750.
154
+
155
+ (r'z', Keyword.Constant),
156
+ # z is a constant equal to 800,000,000,000. 800 billion seconds is about
157
+ # 25,367.8 years. See also
158
+ # https://csound.com/docs/manual/ScoreTop.html and
159
+ # https://github.com/csound/csound/search?q=stof+path%3AEngine+filename%3Asread.c.
160
+
161
+ (r'([nNpP][pP])(\d+)', bygroups(Keyword, Number.Integer)),
162
+
163
+ (r'[mn]', Keyword, 'mark statement'),
164
+
165
+ include('numbers'),
166
+ (r'[!+\-*/^%&|<>#~.]', Operator),
167
+ (r'[()\[\]]', Punctuation),
168
+ (r'"', String, 'quoted string'),
169
+ (r'\{', Comment.Preproc, 'loop after left brace'),
170
+ ],
171
+
172
+ 'mark statement': [
173
+ include('whitespace and macro uses'),
174
+ (r'[A-Z_a-z]\w*', Name.Label),
175
+ (r'\n', Text, '#pop')
176
+ ],
177
+
178
+ 'loop after left brace': [
179
+ include('whitespace and macro uses'),
180
+ (r'\d+', Number.Integer, ('#pop', 'loop after repeat count')),
181
+ ],
182
+ 'loop after repeat count': [
183
+ include('whitespace and macro uses'),
184
+ (r'[A-Z_a-z]\w*', Comment.Preproc, ('#pop', 'loop'))
185
+ ],
186
+ 'loop': [
187
+ (r'\}', Comment.Preproc, '#pop'),
188
+ include('root')
189
+ ],
190
+
191
+ # Braced strings are not allowed in Csound scores, but this is needed because the
192
+ # superclass includes it.
193
+ 'braced string': [
194
+ (r'\}\}', String, '#pop'),
195
+ (r'[^}]|\}(?!\})', String)
196
+ ]
197
+ }
198
+
199
+
200
+ class CsoundOrchestraLexer(CsoundLexer):
201
+ """
202
+ For `Csound <https://csound.com>`_ orchestras.
203
+
204
+ .. versionadded:: 2.1
205
+ """
206
+
207
+ name = 'Csound Orchestra'
208
+ aliases = ['csound', 'csound-orc']
209
+ filenames = ['*.orc', '*.udo']
210
+
211
+ user_defined_opcodes = set()
212
+
213
+ def opcode_name_callback(lexer, match):
214
+ opcode = match.group(0)
215
+ lexer.user_defined_opcodes.add(opcode)
216
+ yield match.start(), Name.Function, opcode
217
+
218
+ def name_callback(lexer, match):
219
+ type_annotation_token = Keyword.Type
220
+
221
+ name = match.group(1)
222
+ if name in OPCODES or name in DEPRECATED_OPCODES:
223
+ yield match.start(), Name.Builtin, name
224
+ elif name in lexer.user_defined_opcodes:
225
+ yield match.start(), Name.Function, name
226
+ else:
227
+ type_annotation_token = Name
228
+ name_match = re.search(r'^(g?[afikSw])(\w+)', name)
229
+ if name_match:
230
+ yield name_match.start(1), Keyword.Type, name_match.group(1)
231
+ yield name_match.start(2), Name, name_match.group(2)
232
+ else:
233
+ yield match.start(), Name, name
234
+
235
+ if match.group(2):
236
+ yield match.start(2), Punctuation, match.group(2)
237
+ yield match.start(3), type_annotation_token, match.group(3)
238
+
239
+ tokens = {
240
+ 'root': [
241
+ (r'\n', Text),
242
+
243
+ (r'^([ \t]*)(\w+)(:)([ \t]+|$)', bygroups(Text, Name.Label, Punctuation, Text)),
244
+
245
+ include('whitespace and macro uses'),
246
+ include('preprocessor directives'),
247
+
248
+ (r'\binstr\b', Keyword.Declaration, 'instrument numbers and identifiers'),
249
+ (r'\bopcode\b', Keyword.Declaration, 'after opcode keyword'),
250
+ (r'\b(?:end(?:in|op))\b', Keyword.Declaration),
251
+
252
+ include('partial statements')
253
+ ],
254
+
255
+ 'partial statements': [
256
+ (r'\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\b', Name.Variable.Global),
257
+
258
+ include('numbers'),
259
+
260
+ (r'\+=|-=|\*=|/=|<<|>>|<=|>=|==|!=|&&|\|\||[~¬]|[=!+\-*/^%&|<>#?:]', Operator),
261
+ (r'[(),\[\]]', Punctuation),
262
+
263
+ (r'"', String, 'quoted string'),
264
+ (r'\{\{', String, 'braced string'),
265
+
266
+ (words((
267
+ 'do', 'else', 'elseif', 'endif', 'enduntil', 'fi', 'if', 'ithen', 'kthen',
268
+ 'od', 'then', 'until', 'while',
269
+ ), prefix=r'\b', suffix=r'\b'), Keyword),
270
+ (words(('return', 'rireturn'), prefix=r'\b', suffix=r'\b'), Keyword.Pseudo),
271
+
272
+ (r'\b[ik]?goto\b', Keyword, 'goto label'),
273
+ (r'\b(r(?:einit|igoto)|tigoto)(\(|\b)', bygroups(Keyword.Pseudo, Punctuation),
274
+ 'goto label'),
275
+ (r'\b(c(?:g|in?|k|nk?)goto)(\(|\b)', bygroups(Keyword.Pseudo, Punctuation),
276
+ ('goto label', 'goto argument')),
277
+ (r'\b(timout)(\(|\b)', bygroups(Keyword.Pseudo, Punctuation),
278
+ ('goto label', 'goto argument', 'goto argument')),
279
+ (r'\b(loop_[gl][et])(\(|\b)', bygroups(Keyword.Pseudo, Punctuation),
280
+ ('goto label', 'goto argument', 'goto argument', 'goto argument')),
281
+
282
+ (r'\bprintk?s\b', Name.Builtin, 'prints opcode'),
283
+ (r'\b(?:readscore|scoreline(?:_i)?)\b', Name.Builtin, 'Csound score opcode'),
284
+ (r'\bpyl?run[it]?\b', Name.Builtin, 'Python opcode'),
285
+ (r'\blua_(?:exec|opdef)\b', Name.Builtin, 'Lua opcode'),
286
+ (r'\bp\d+\b', Name.Variable.Instance),
287
+ (r'\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\b', name_callback)
288
+ ],
289
+
290
+ 'instrument numbers and identifiers': [
291
+ include('whitespace and macro uses'),
292
+ (r'\d+|[A-Z_a-z]\w*', Name.Function),
293
+ (r'[+,]', Punctuation),
294
+ (r'\n', Text, '#pop')
295
+ ],
296
+
297
+ 'after opcode keyword': [
298
+ include('whitespace and macro uses'),
299
+ (r'[A-Z_a-z]\w*', opcode_name_callback, ('#pop', 'opcode type signatures')),
300
+ (r'\n', Text, '#pop')
301
+ ],
302
+ 'opcode type signatures': [
303
+ include('whitespace and macro uses'),
304
+
305
+ # https://github.com/csound/csound/search?q=XIDENT+path%3AEngine+filename%3Acsound_orc.lex
306
+ (r'0|[afijkKoOpPStV\[\]]+', Keyword.Type),
307
+
308
+ (r',', Punctuation),
309
+ (r'\n', Text, '#pop')
310
+ ],
311
+
312
+ 'quoted string': [
313
+ (r'"', String, '#pop'),
314
+ (r'[^\\"$%)]+', String),
315
+ include('macro uses'),
316
+ include('escape sequences'),
317
+ include('format specifiers'),
318
+ (r'[\\$%)]', String)
319
+ ],
320
+ 'braced string': [
321
+ (r'\}\}', String, '#pop'),
322
+ (r'(?:[^\\%)}]|\}(?!\}))+', String),
323
+ include('escape sequences'),
324
+ include('format specifiers'),
325
+ (r'[\\%)]', String)
326
+ ],
327
+ 'escape sequences': [
328
+ # https://github.com/csound/csound/search?q=unquote_string+path%3AEngine+filename%3Acsound_orc_compile.c
329
+ (r'\\(?:[\\abnrt"]|[0-7]{1,3})', String.Escape)
330
+ ],
331
+ # Format specifiers are highlighted in all strings, even though only
332
+ # fprintks https://csound.com/docs/manual/fprintks.html
333
+ # fprints https://csound.com/docs/manual/fprints.html
334
+ # printf/printf_i https://csound.com/docs/manual/printf.html
335
+ # printks https://csound.com/docs/manual/printks.html
336
+ # prints https://csound.com/docs/manual/prints.html
337
+ # sprintf https://csound.com/docs/manual/sprintf.html
338
+ # sprintfk https://csound.com/docs/manual/sprintfk.html
339
+ # work with strings that contain format specifiers. In addition, these opcodes’
340
+ # handling of format specifiers is inconsistent:
341
+ # - fprintks and fprints accept %a and %A specifiers, and accept %s specifiers
342
+ # starting in Csound 6.15.0.
343
+ # - printks and prints accept %a and %A specifiers, but don’t accept %s
344
+ # specifiers.
345
+ # - printf, printf_i, sprintf, and sprintfk don’t accept %a and %A specifiers,
346
+ # but accept %s specifiers.
347
+ # See https://github.com/csound/csound/issues/747 for more information.
348
+ 'format specifiers': [
349
+ (r'%[#0\- +]*\d*(?:\.\d+)?[AE-GXac-giosux]', String.Interpol),
350
+ (r'%%', String.Escape)
351
+ ],
352
+
353
+ 'goto argument': [
354
+ include('whitespace and macro uses'),
355
+ (r',', Punctuation, '#pop'),
356
+ include('partial statements')
357
+ ],
358
+ 'goto label': [
359
+ include('whitespace and macro uses'),
360
+ (r'\w+', Name.Label, '#pop'),
361
+ default('#pop')
362
+ ],
363
+
364
+ 'prints opcode': [
365
+ include('whitespace and macro uses'),
366
+ (r'"', String, 'prints quoted string'),
367
+ default('#pop')
368
+ ],
369
+ 'prints quoted string': [
370
+ (r'\\\\[aAbBnNrRtT]', String.Escape),
371
+ (r'%[!nNrRtT]|[~^]{1,2}', String.Escape),
372
+ include('quoted string')
373
+ ],
374
+
375
+ 'Csound score opcode': [
376
+ include('whitespace and macro uses'),
377
+ (r'"', String, 'quoted string'),
378
+ (r'\{\{', String, 'Csound score'),
379
+ (r'\n', Text, '#pop')
380
+ ],
381
+ 'Csound score': [
382
+ (r'\}\}', String, '#pop'),
383
+ (r'([^}]+)|\}(?!\})', using(CsoundScoreLexer))
384
+ ],
385
+
386
+ 'Python opcode': [
387
+ include('whitespace and macro uses'),
388
+ (r'"', String, 'quoted string'),
389
+ (r'\{\{', String, 'Python'),
390
+ (r'\n', Text, '#pop')
391
+ ],
392
+ 'Python': [
393
+ (r'\}\}', String, '#pop'),
394
+ (r'([^}]+)|\}(?!\})', using(PythonLexer))
395
+ ],
396
+
397
+ 'Lua opcode': [
398
+ include('whitespace and macro uses'),
399
+ (r'"', String, 'quoted string'),
400
+ (r'\{\{', String, 'Lua'),
401
+ (r'\n', Text, '#pop')
402
+ ],
403
+ 'Lua': [
404
+ (r'\}\}', String, '#pop'),
405
+ (r'([^}]+)|\}(?!\})', using(LuaLexer))
406
+ ]
407
+ }
408
+
409
+
410
+ class CsoundDocumentLexer(RegexLexer):
411
+ """
412
+ For `Csound <https://csound.com>`_ documents.
413
+
414
+ .. versionadded:: 2.1
415
+ """
416
+
417
+ name = 'Csound Document'
418
+ aliases = ['csound-document', 'csound-csd']
419
+ filenames = ['*.csd']
420
+
421
+ # These tokens are based on those in XmlLexer in pygments/lexers/html.py. Making
422
+ # CsoundDocumentLexer a subclass of XmlLexer rather than RegexLexer may seem like a
423
+ # better idea, since Csound Document files look like XML files. However, Csound
424
+ # Documents can contain Csound comments (preceded by //, for example) before and
425
+ # after the root element, unescaped bitwise AND & and less than < operators, etc. In
426
+ # other words, while Csound Document files look like XML files, they may not actually
427
+ # be XML files.
428
+ tokens = {
429
+ 'root': [
430
+ (r'/[*](.|\n)*?[*]/', Comment.Multiline),
431
+ (r'(?:;|//).*$', Comment.Single),
432
+ (r'[^/;<]+|/(?!/)', Text),
433
+
434
+ (r'<\s*CsInstruments', Name.Tag, ('orchestra', 'tag')),
435
+ (r'<\s*CsScore', Name.Tag, ('score', 'tag')),
436
+ (r'<\s*[Hh][Tt][Mm][Ll]', Name.Tag, ('HTML', 'tag')),
437
+
438
+ (r'<\s*[\w:.-]+', Name.Tag, 'tag'),
439
+ (r'<\s*/\s*[\w:.-]+\s*>', Name.Tag)
440
+ ],
441
+
442
+ 'orchestra': [
443
+ (r'<\s*/\s*CsInstruments\s*>', Name.Tag, '#pop'),
444
+ (r'(.|\n)+?(?=<\s*/\s*CsInstruments\s*>)', using(CsoundOrchestraLexer))
445
+ ],
446
+ 'score': [
447
+ (r'<\s*/\s*CsScore\s*>', Name.Tag, '#pop'),
448
+ (r'(.|\n)+?(?=<\s*/\s*CsScore\s*>)', using(CsoundScoreLexer))
449
+ ],
450
+ 'HTML': [
451
+ (r'<\s*/\s*[Hh][Tt][Mm][Ll]\s*>', Name.Tag, '#pop'),
452
+ (r'(.|\n)+?(?=<\s*/\s*[Hh][Tt][Mm][Ll]\s*>)', using(HtmlLexer))
453
+ ],
454
+
455
+ 'tag': [
456
+ (r'\s+', Text),
457
+ (r'[\w.:-]+\s*=', Name.Attribute, 'attr'),
458
+ (r'/?\s*>', Name.Tag, '#pop')
459
+ ],
460
+ 'attr': [
461
+ (r'\s+', Text),
462
+ (r'".*?"', String, '#pop'),
463
+ (r"'.*?'", String, '#pop'),
464
+ (r'[^\s>]+', String, '#pop')
465
+ ]
466
+ }