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