pygments.rb 1.2.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (388) 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 +5 -5
  6. data/.rubocop.yml +18 -0
  7. data/CHANGELOG.adoc +132 -0
  8. data/Gemfile +3 -1
  9. data/LICENSE +1 -1
  10. data/README.adoc +160 -0
  11. data/Rakefile +12 -21
  12. data/bench.rb +14 -8
  13. data/{cache-lexers.rb → cache_lexers.rb} +3 -2
  14. data/lexers +0 -0
  15. data/lib/pygments.rb +10 -11
  16. data/lib/pygments/lexer.rb +6 -6
  17. data/lib/pygments/mentos.py +23 -110
  18. data/lib/pygments/popen.rb +196 -275
  19. data/lib/pygments/version.rb +2 -2
  20. data/pygments.rb.gemspec +12 -10
  21. data/test/test_pygments.rb +50 -110
  22. data/vendor/pygments-main/{AUTHORS → Pygments-2.8.0.dist-info/AUTHORS} +26 -3
  23. data/vendor/pygments-main/Pygments-2.8.0.dist-info/INSTALLER +1 -0
  24. data/vendor/pygments-main/{LICENSE → Pygments-2.8.0.dist-info/LICENSE} +1 -1
  25. data/vendor/pygments-main/Pygments-2.8.0.dist-info/METADATA +48 -0
  26. data/vendor/pygments-main/Pygments-2.8.0.dist-info/RECORD +494 -0
  27. data/vendor/pygments-main/Pygments-2.8.0.dist-info/REQUESTED +0 -0
  28. data/vendor/pygments-main/Pygments-2.8.0.dist-info/WHEEL +5 -0
  29. data/vendor/pygments-main/Pygments-2.8.0.dist-info/entry_points.txt +3 -0
  30. data/vendor/pygments-main/Pygments-2.8.0.dist-info/top_level.txt +1 -0
  31. data/vendor/pygments-main/bin/pygmentize +8 -0
  32. data/vendor/pygments-main/pygments/__init__.py +6 -12
  33. data/vendor/pygments-main/pygments/__main__.py +17 -0
  34. data/vendor/pygments-main/pygments/cmdline.py +213 -184
  35. data/vendor/pygments-main/pygments/console.py +6 -10
  36. data/vendor/pygments-main/pygments/filter.py +4 -7
  37. data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
  38. data/vendor/pygments-main/pygments/formatter.py +4 -5
  39. data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
  40. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
  41. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  42. data/vendor/pygments-main/pygments/formatters/html.py +242 -139
  43. data/vendor/pygments-main/pygments/formatters/img.py +91 -50
  44. data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
  45. data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
  46. data/vendor/pygments-main/pygments/formatters/other.py +18 -17
  47. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
  48. data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
  49. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
  50. data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
  51. data/vendor/pygments-main/pygments/lexer.py +47 -44
  52. data/vendor/pygments-main/pygments/lexers/__init__.py +29 -17
  53. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -6
  54. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -16
  55. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +21 -18
  56. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1339
  57. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -2
  58. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -5
  59. data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -31
  60. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -3
  61. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
  62. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +439 -386
  63. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -21
  64. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -17
  65. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -3
  66. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -4
  67. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -126
  68. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +96 -58
  69. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -2
  70. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
  71. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
  72. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -2
  73. data/vendor/pygments-main/pygments/lexers/actionscript.py +14 -10
  74. data/vendor/pygments-main/pygments/lexers/agile.py +1 -2
  75. data/vendor/pygments-main/pygments/lexers/algebra.py +20 -2
  76. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  77. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  78. data/vendor/pygments-main/pygments/lexers/ampl.py +3 -4
  79. data/vendor/pygments-main/pygments/lexers/apl.py +15 -16
  80. data/vendor/pygments-main/pygments/lexers/archetype.py +4 -5
  81. data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
  82. data/vendor/pygments-main/pygments/lexers/asm.py +440 -77
  83. data/vendor/pygments-main/pygments/lexers/automation.py +7 -2
  84. data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
  85. data/vendor/pygments-main/pygments/lexers/basic.py +168 -7
  86. data/vendor/pygments-main/pygments/lexers/bibtex.py +5 -6
  87. data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
  88. data/vendor/pygments-main/pygments/lexers/business.py +19 -5
  89. data/vendor/pygments-main/pygments/lexers/c_cpp.py +138 -48
  90. data/vendor/pygments-main/pygments/lexers/c_like.py +67 -43
  91. data/vendor/pygments-main/pygments/lexers/capnproto.py +7 -8
  92. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  93. data/vendor/pygments-main/pygments/lexers/chapel.py +25 -16
  94. data/vendor/pygments-main/pygments/lexers/clean.py +135 -245
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -2
  96. data/vendor/pygments-main/pygments/lexers/configs.py +190 -38
  97. data/vendor/pygments-main/pygments/lexers/console.py +1 -2
  98. data/vendor/pygments-main/pygments/lexers/crystal.py +54 -81
  99. data/vendor/pygments-main/pygments/lexers/csound.py +288 -188
  100. data/vendor/pygments-main/pygments/lexers/css.py +28 -23
  101. data/vendor/pygments-main/pygments/lexers/d.py +12 -8
  102. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -2
  103. data/vendor/pygments-main/pygments/lexers/data.py +240 -98
  104. data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
  105. data/vendor/pygments-main/pygments/lexers/diff.py +4 -5
  106. data/vendor/pygments-main/pygments/lexers/dotnet.py +46 -31
  107. data/vendor/pygments-main/pygments/lexers/dsls.py +146 -65
  108. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -19
  109. data/vendor/pygments-main/pygments/lexers/ecl.py +17 -5
  110. data/vendor/pygments-main/pygments/lexers/eiffel.py +2 -3
  111. data/vendor/pygments-main/pygments/lexers/elm.py +5 -6
  112. data/vendor/pygments-main/pygments/lexers/email.py +150 -0
  113. data/vendor/pygments-main/pygments/lexers/erlang.py +29 -33
  114. data/vendor/pygments-main/pygments/lexers/esoteric.py +46 -20
  115. data/vendor/pygments-main/pygments/lexers/ezhil.py +21 -14
  116. data/vendor/pygments-main/pygments/lexers/factor.py +3 -4
  117. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -2
  118. data/vendor/pygments-main/pygments/lexers/felix.py +1 -2
  119. data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
  120. data/vendor/pygments-main/pygments/lexers/forth.py +41 -41
  121. data/vendor/pygments-main/pygments/lexers/fortran.py +13 -10
  122. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -3
  123. data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
  124. data/vendor/pygments-main/pygments/lexers/functional.py +1 -2
  125. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  126. data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
  127. data/vendor/pygments-main/pygments/lexers/go.py +2 -3
  128. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +62 -6
  129. data/vendor/pygments-main/pygments/lexers/graph.py +14 -10
  130. data/vendor/pygments-main/pygments/lexers/graphics.py +274 -28
  131. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  132. data/vendor/pygments-main/pygments/lexers/haskell.py +48 -22
  133. data/vendor/pygments-main/pygments/lexers/haxe.py +8 -9
  134. data/vendor/pygments-main/pygments/lexers/hdl.py +176 -90
  135. data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -2
  136. data/vendor/pygments-main/pygments/lexers/html.py +37 -26
  137. data/vendor/pygments-main/pygments/lexers/idl.py +19 -9
  138. data/vendor/pygments-main/pygments/lexers/igor.py +244 -113
  139. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -3
  140. data/vendor/pygments-main/pygments/lexers/installers.py +1 -2
  141. data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -16
  142. data/vendor/pygments-main/pygments/lexers/iolang.py +3 -4
  143. data/vendor/pygments-main/pygments/lexers/j.py +4 -5
  144. data/vendor/pygments-main/pygments/lexers/javascript.py +115 -104
  145. data/vendor/pygments-main/pygments/lexers/julia.py +44 -47
  146. data/vendor/pygments-main/pygments/lexers/jvm.py +368 -202
  147. data/vendor/pygments-main/pygments/lexers/lisp.py +887 -810
  148. data/vendor/pygments-main/pygments/lexers/make.py +12 -9
  149. data/vendor/pygments-main/pygments/lexers/markup.py +212 -45
  150. data/vendor/pygments-main/pygments/lexers/math.py +1 -2
  151. data/vendor/pygments-main/pygments/lexers/matlab.py +2705 -88
  152. data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
  153. data/vendor/pygments-main/pygments/lexers/ml.py +203 -15
  154. data/vendor/pygments-main/pygments/lexers/modeling.py +26 -19
  155. data/vendor/pygments-main/pygments/lexers/modula2.py +27 -9
  156. data/vendor/pygments-main/pygments/lexers/monte.py +1 -2
  157. data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
  158. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -2
  159. data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -5
  160. data/vendor/pygments-main/pygments/lexers/nit.py +1 -2
  161. data/vendor/pygments-main/pygments/lexers/nix.py +1 -2
  162. data/vendor/pygments-main/pygments/lexers/oberon.py +17 -2
  163. data/vendor/pygments-main/pygments/lexers/objective.py +18 -19
  164. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -2
  165. data/vendor/pygments-main/pygments/lexers/other.py +1 -2
  166. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -2
  167. data/vendor/pygments-main/pygments/lexers/parsers.py +47 -83
  168. data/vendor/pygments-main/pygments/lexers/pascal.py +22 -23
  169. data/vendor/pygments-main/pygments/lexers/pawn.py +31 -28
  170. data/vendor/pygments-main/pygments/lexers/perl.py +260 -149
  171. data/vendor/pygments-main/pygments/lexers/php.py +66 -13
  172. data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
  173. data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
  174. data/vendor/pygments-main/pygments/lexers/praat.py +38 -31
  175. data/vendor/pygments-main/pygments/lexers/prolog.py +38 -39
  176. data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
  177. data/vendor/pygments-main/pygments/lexers/python.py +450 -231
  178. data/vendor/pygments-main/pygments/lexers/qvt.py +6 -7
  179. data/vendor/pygments-main/pygments/lexers/r.py +13 -276
  180. data/vendor/pygments-main/pygments/lexers/rdf.py +232 -40
  181. data/vendor/pygments-main/pygments/lexers/rebol.py +8 -9
  182. data/vendor/pygments-main/pygments/lexers/resource.py +2 -3
  183. data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
  184. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -2
  185. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -2
  186. data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -32
  187. data/vendor/pygments-main/pygments/lexers/ruby.py +50 -46
  188. data/vendor/pygments-main/pygments/lexers/rust.py +76 -73
  189. data/vendor/pygments-main/pygments/lexers/sas.py +1 -2
  190. data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
  191. data/vendor/pygments-main/pygments/lexers/scripting.py +79 -18
  192. data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
  193. data/vendor/pygments-main/pygments/lexers/shell.py +164 -49
  194. data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
  195. data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
  196. data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -3
  197. data/vendor/pygments-main/pygments/lexers/smv.py +3 -4
  198. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -2
  199. data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
  200. data/vendor/pygments-main/pygments/lexers/special.py +31 -28
  201. data/vendor/pygments-main/pygments/lexers/sql.py +330 -179
  202. data/vendor/pygments-main/pygments/lexers/stata.py +107 -45
  203. data/vendor/pygments-main/pygments/lexers/supercollider.py +8 -4
  204. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -2
  205. data/vendor/pygments-main/pygments/lexers/templates.py +116 -136
  206. data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
  207. data/vendor/pygments-main/pygments/lexers/testing.py +6 -7
  208. data/vendor/pygments-main/pygments/lexers/text.py +2 -2
  209. data/vendor/pygments-main/pygments/lexers/textedit.py +6 -7
  210. data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -14
  211. data/vendor/pygments-main/pygments/lexers/theorem.py +74 -56
  212. data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
  213. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -2
  214. data/vendor/pygments-main/pygments/lexers/typoscript.py +4 -12
  215. data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
  216. data/vendor/pygments-main/pygments/lexers/urbi.py +16 -4
  217. data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
  218. data/vendor/pygments-main/pygments/lexers/varnish.py +4 -5
  219. data/vendor/pygments-main/pygments/lexers/verification.py +13 -11
  220. data/vendor/pygments-main/pygments/lexers/web.py +1 -2
  221. data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
  222. data/vendor/pygments-main/pygments/lexers/webmisc.py +35 -32
  223. data/vendor/pygments-main/pygments/lexers/whiley.py +5 -6
  224. data/vendor/pygments-main/pygments/lexers/x10.py +2 -3
  225. data/vendor/pygments-main/pygments/lexers/xorg.py +5 -5
  226. data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
  227. data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
  228. data/vendor/pygments-main/pygments/modeline.py +1 -2
  229. data/vendor/pygments-main/pygments/plugin.py +4 -3
  230. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  231. data/vendor/pygments-main/pygments/scanner.py +2 -3
  232. data/vendor/pygments-main/pygments/sphinxext.py +2 -5
  233. data/vendor/pygments-main/pygments/style.py +61 -25
  234. data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
  235. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  237. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  239. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  242. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  247. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
  249. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  250. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  251. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  252. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  253. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  261. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  262. data/vendor/pygments-main/pygments/styles/solarized.py +136 -0
  263. data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
  264. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
  265. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  266. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  267. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  268. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  269. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  270. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  271. data/vendor/pygments-main/pygments/token.py +1 -2
  272. data/vendor/pygments-main/pygments/unistring.py +47 -109
  273. data/vendor/pygments-main/pygments/util.py +16 -96
  274. metadata +76 -137
  275. data/CHANGELOG.md +0 -105
  276. data/README.md +0 -121
  277. data/circle.yml +0 -20
  278. data/test/test_data.c +0 -2581
  279. data/test/test_data.py +0 -514
  280. data/test/test_data_generated +0 -2582
  281. data/vendor/custom_lexers/github.py +0 -565
  282. data/vendor/pygments-main/CHANGES +0 -1186
  283. data/vendor/pygments-main/MANIFEST.in +0 -6
  284. data/vendor/pygments-main/Makefile +0 -65
  285. data/vendor/pygments-main/README.rst +0 -39
  286. data/vendor/pygments-main/REVISION +0 -1
  287. data/vendor/pygments-main/TODO +0 -12
  288. data/vendor/pygments-main/doc/Makefile +0 -153
  289. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  290. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  291. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  292. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  293. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  294. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  295. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  296. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  297. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  298. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  299. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  300. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  301. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  302. data/vendor/pygments-main/doc/conf.py +0 -241
  303. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  304. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  305. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  306. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  307. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  308. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  309. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  310. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  311. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  312. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  313. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  314. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  315. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  316. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  317. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  318. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  319. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  320. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  321. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  322. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  323. data/vendor/pygments-main/doc/download.rst +0 -41
  324. data/vendor/pygments-main/doc/faq.rst +0 -139
  325. data/vendor/pygments-main/doc/index.rst +0 -54
  326. data/vendor/pygments-main/doc/languages.rst +0 -154
  327. data/vendor/pygments-main/doc/make.bat +0 -190
  328. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  329. data/vendor/pygments-main/external/autopygmentize +0 -101
  330. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  331. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  332. data/vendor/pygments-main/external/moin-parser.py +0 -112
  333. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  334. data/vendor/pygments-main/external/rst-directive.py +0 -82
  335. data/vendor/pygments-main/pygmentize +0 -8
  336. data/vendor/pygments-main/pygments/lexers/github.py +0 -565
  337. data/vendor/pygments-main/requirements.txt +0 -5
  338. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  339. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  340. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  341. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  342. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  343. data/vendor/pygments-main/scripts/pylintrc +0 -301
  344. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  345. data/vendor/pygments-main/setup.cfg +0 -10
  346. data/vendor/pygments-main/setup.py +0 -77
  347. data/vendor/pygments-main/tox.ini +0 -7
  348. data/vendor/simplejson/.gitignore +0 -10
  349. data/vendor/simplejson/.travis.yml +0 -5
  350. data/vendor/simplejson/CHANGES.txt +0 -291
  351. data/vendor/simplejson/LICENSE.txt +0 -19
  352. data/vendor/simplejson/MANIFEST.in +0 -5
  353. data/vendor/simplejson/README.rst +0 -19
  354. data/vendor/simplejson/conf.py +0 -179
  355. data/vendor/simplejson/index.rst +0 -628
  356. data/vendor/simplejson/scripts/make_docs.py +0 -18
  357. data/vendor/simplejson/setup.py +0 -104
  358. data/vendor/simplejson/simplejson/__init__.py +0 -510
  359. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  360. data/vendor/simplejson/simplejson/decoder.py +0 -425
  361. data/vendor/simplejson/simplejson/encoder.py +0 -567
  362. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  363. data/vendor/simplejson/simplejson/scanner.py +0 -77
  364. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  365. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  366. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  367. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  368. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  369. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  370. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  371. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  372. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  373. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  374. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  375. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  376. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  377. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  378. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  379. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  380. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  381. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  382. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  383. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  384. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  385. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  386. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  387. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  388. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.capnproto
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the Cap'n Proto schema language.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -44,34 +43,34 @@ class CapnProtoLexer(RegexLexer):
44
43
  ],
45
44
  'type': [
46
45
  (r'[^][=;,(){}$]+', Name.Class),
47
- (r'[[(]', Name.Class, 'parentype'),
46
+ (r'[\[(]', Name.Class, 'parentype'),
48
47
  default('#pop'),
49
48
  ],
50
49
  'parentype': [
51
50
  (r'[^][;()]+', Name.Class),
52
- (r'[[(]', Name.Class, '#push'),
51
+ (r'[\[(]', Name.Class, '#push'),
53
52
  (r'[])]', Name.Class, '#pop'),
54
53
  default('#pop'),
55
54
  ],
56
55
  'expression': [
57
56
  (r'[^][;,(){}$]+', Literal),
58
- (r'[[(]', Literal, 'parenexp'),
57
+ (r'[\[(]', Literal, 'parenexp'),
59
58
  default('#pop'),
60
59
  ],
61
60
  'parenexp': [
62
61
  (r'[^][;()]+', Literal),
63
- (r'[[(]', Literal, '#push'),
62
+ (r'[\[(]', Literal, '#push'),
64
63
  (r'[])]', Literal, '#pop'),
65
64
  default('#pop'),
66
65
  ],
67
66
  'annotation': [
68
67
  (r'[^][;,(){}=:]+', Name.Attribute),
69
- (r'[[(]', Name.Attribute, 'annexp'),
68
+ (r'[\[(]', Name.Attribute, 'annexp'),
70
69
  default('#pop'),
71
70
  ],
72
71
  'annexp': [
73
72
  (r'[^][;()]+', Name.Attribute),
74
- (r'[[(]', Name.Attribute, '#push'),
73
+ (r'[\[(]', Name.Attribute, '#push'),
75
74
  (r'[])]', Name.Attribute, '#pop'),
76
75
  default('#pop'),
77
76
  ],
@@ -0,0 +1,190 @@
1
+ """
2
+ pygments.lexers.cddl
3
+ ~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for the Concise data definition language (CDDL), a notational
6
+ convention to express CBOR and JSON data structures.
7
+
8
+ More information:
9
+ https://datatracker.ietf.org/doc/rfc8610/
10
+
11
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
12
+ :license: BSD, see LICENSE for details.
13
+ """
14
+
15
+ import re
16
+
17
+ __all__ = ['CddlLexer']
18
+
19
+ from pygments.lexer import RegexLexer, bygroups, include, words
20
+ from pygments.token import (
21
+ Comment,
22
+ Error,
23
+ Keyword,
24
+ Name,
25
+ Number,
26
+ Operator,
27
+ Punctuation,
28
+ String,
29
+ Text,
30
+ )
31
+
32
+
33
+ class CddlLexer(RegexLexer):
34
+ """
35
+ Lexer for CDDL definitions.
36
+
37
+ .. versionadded:: 2.8
38
+ """
39
+ name = "CDDL"
40
+ aliases = ["cddl"]
41
+ filenames = ["*.cddl"]
42
+ mimetypes = ["text/x-cddl"]
43
+
44
+ _prelude_types = [
45
+ "any",
46
+ "b64legacy",
47
+ "b64url",
48
+ "bigfloat",
49
+ "bigint",
50
+ "bignint",
51
+ "biguint",
52
+ "bool",
53
+ "bstr",
54
+ "bytes",
55
+ "cbor-any",
56
+ "decfrac",
57
+ "eb16",
58
+ "eb64legacy",
59
+ "eb64url",
60
+ "encoded-cbor",
61
+ "false",
62
+ "float",
63
+ "float16",
64
+ "float16-32",
65
+ "float32",
66
+ "float32-64",
67
+ "float64",
68
+ "int",
69
+ "integer",
70
+ "mime-message",
71
+ "nil",
72
+ "nint",
73
+ "null",
74
+ "number",
75
+ "regexp",
76
+ "tdate",
77
+ "text",
78
+ "time",
79
+ "true",
80
+ "tstr",
81
+ "uint",
82
+ "undefined",
83
+ "unsigned",
84
+ "uri",
85
+ ]
86
+
87
+ _controls = [
88
+ ".and",
89
+ ".bits",
90
+ ".cbor",
91
+ ".cborseq",
92
+ ".default",
93
+ ".eq",
94
+ ".ge",
95
+ ".gt",
96
+ ".le",
97
+ ".lt",
98
+ ".ne",
99
+ ".regexp",
100
+ ".size",
101
+ ".within",
102
+ ]
103
+
104
+ _re_id = (
105
+ r"[$@A-Z_a-z]"
106
+ r"(?:[\-\.]*[$@0-9A-Z_a-z]|[$@0-9A-Z_a-z])*"
107
+ )
108
+
109
+ # While the spec reads more like "an int must not start with 0" we use a
110
+ # lookahead here that says "after a 0 there must be no digit". This makes the
111
+ # '0' the invalid character in '01', which looks nicer when highlighted.
112
+ _re_uint = r"(?:0b[01]+|0x[0-9a-fA-F]+|[1-9]\d*|0(?!\d))"
113
+ _re_int = r"-?" + _re_uint
114
+
115
+ flags = re.UNICODE | re.MULTILINE
116
+
117
+ tokens = {
118
+ "commentsandwhitespace": [(r"\s+", Text), (r";.+$", Comment.Single)],
119
+ "root": [
120
+ include("commentsandwhitespace"),
121
+ # tag types
122
+ (r"#(\d\.{uint})?".format(uint=_re_uint), Keyword.Type), # type or any
123
+ # occurence
124
+ (
125
+ r"({uint})?(\*)({uint})?".format(uint=_re_uint),
126
+ bygroups(Number, Operator, Number),
127
+ ),
128
+ (r"\?|\+", Operator), # occurrence
129
+ (r"\^", Operator), # cuts
130
+ (r"(\.\.\.|\.\.)", Operator), # rangeop
131
+ (words(_controls, suffix=r"\b"), Operator.Word), # ctlops
132
+ # into choice op
133
+ (r"&(?=\s*({groupname}|\())".format(groupname=_re_id), Operator),
134
+ (r"~(?=\s*{})".format(_re_id), Operator), # unwrap op
135
+ (r"//|/(?!/)", Operator), # double und single slash
136
+ (r"=>|/==|/=|=", Operator),
137
+ (r"[\[\]{}\(\),<>:]", Punctuation),
138
+ # Bytestrings
139
+ (r"(b64)(')", bygroups(String.Affix, String.Single), "bstrb64url"),
140
+ (r"(h)(')", bygroups(String.Affix, String.Single), "bstrh"),
141
+ (r"'", String.Single, "bstr"),
142
+ # Barewords as member keys (must be matched before values, types, typenames,
143
+ # groupnames).
144
+ # Token type is String as barewords are always interpreted as such.
145
+ (
146
+ r"({bareword})(\s*)(:)".format(bareword=_re_id),
147
+ bygroups(String, Text, Punctuation),
148
+ ),
149
+ # predefined types
150
+ (
151
+ words(_prelude_types, prefix=r"(?![\-_$@])\b", suffix=r"\b(?![\-_$@])"),
152
+ Name.Builtin,
153
+ ),
154
+ # user-defined groupnames, typenames
155
+ (_re_id, Name.Class),
156
+ # values
157
+ (r"0b[01]+", Number.Bin),
158
+ (r"0o[0-7]+", Number.Oct),
159
+ (r"0x[0-9a-fA-F]+(\.[0-9a-fA-F]+)?p[+-]?\d+", Number.Hex), # hexfloat
160
+ (r"0x[0-9a-fA-F]+", Number.Hex), # hex
161
+ # Float
162
+ (
163
+ r"{int}(?=(\.\d|e[+-]?\d))(?:\.\d+)?(?:e[+-]?\d+)?".format(int=_re_int),
164
+ Number.Float,
165
+ ),
166
+ # Int
167
+ (_re_int, Number.Int),
168
+ (r'"(\\\\|\\"|[^"])*"', String.Double),
169
+ ],
170
+ "bstrb64url": [
171
+ (r"'", String.Single, "#pop"),
172
+ include("commentsandwhitespace"),
173
+ (r"\\.", String.Escape),
174
+ (r"[0-9a-zA-Z\-_=]+", String.Single),
175
+ (r".", Error),
176
+ # (r";.+$", Token.Other),
177
+ ],
178
+ "bstrh": [
179
+ (r"'", String.Single, "#pop"),
180
+ include("commentsandwhitespace"),
181
+ (r"\\.", String.Escape),
182
+ (r"[0-9a-fA-F]+", String.Single),
183
+ (r".", Error),
184
+ ],
185
+ "bstr": [
186
+ (r"'", String.Single, "#pop"),
187
+ (r"\\.", String.Escape),
188
+ (r"[^']", String.Single),
189
+ ],
190
+ }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.chapel
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for the Chapel language.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -18,7 +17,7 @@ __all__ = ['ChapelLexer']
18
17
 
19
18
  class ChapelLexer(RegexLexer):
20
19
  """
21
- For `Chapel <http://chapel.cray.com/>`_ source.
20
+ For `Chapel <https://chapel-lang.org/>`_ source.
22
21
 
23
22
  .. versionadded:: 2.0
24
23
  """
@@ -38,20 +37,30 @@ class ChapelLexer(RegexLexer):
38
37
 
39
38
  (r'(config|const|in|inout|out|param|ref|type|var)\b',
40
39
  Keyword.Declaration),
41
- (r'(false|nil|true)\b', Keyword.Constant),
42
- (r'(bool|complex|imag|int|opaque|range|real|string|uint)\b',
40
+ (r'(false|nil|none|true)\b', Keyword.Constant),
41
+ (r'(bool|bytes|complex|imag|int|nothing|opaque|range|real|string|uint|void)\b',
43
42
  Keyword.Type),
44
43
  (words((
45
- 'align', 'as', 'atomic', 'begin', 'break', 'by', 'cobegin',
46
- 'coforall', 'continue', 'delete', 'dmapped', 'do', 'domain',
47
- 'else', 'enum', 'except', 'export', 'extern', 'for', 'forall',
48
- 'if', 'index', 'inline', 'iter', 'label', 'lambda', 'let',
49
- 'local', 'new', 'noinit', 'on', 'only', 'otherwise', 'pragma',
50
- 'private', 'public', 'reduce', 'require', 'return', 'scan',
51
- 'select', 'serial', 'single', 'sparse', 'subdomain', 'sync',
52
- 'then', 'use', 'when', 'where', 'while', 'with', 'yield',
44
+ 'align', 'as', 'atomic',
45
+ 'begin', 'borrowed', 'break', 'by',
46
+ 'catch', 'cobegin', 'coforall', 'continue',
47
+ 'defer', 'delete', 'dmapped', 'do', 'domain',
48
+ 'else', 'enum', 'except', 'export', 'extern',
49
+ 'for', 'forall', 'forwarding',
50
+ 'if', 'import', 'index', 'init', 'inline',
51
+ 'label', 'lambda', 'let', 'lifetime', 'local', 'locale'
52
+ 'new', 'noinit',
53
+ 'on', 'only', 'otherwise', 'override', 'owned',
54
+ 'pragma', 'private', 'prototype', 'public',
55
+ 'reduce', 'require', 'return',
56
+ 'scan', 'select', 'serial', 'shared', 'single', 'sparse', 'subdomain', 'sync',
57
+ 'then', 'this', 'throw', 'throws', 'try',
58
+ 'unmanaged', 'use',
59
+ 'when', 'where', 'while', 'with',
60
+ 'yield',
53
61
  'zip'), suffix=r'\b'),
54
62
  Keyword),
63
+ (r'(iter)((?:\s)+)', bygroups(Keyword, Text), 'procname'),
55
64
  (r'(proc)((?:\s)+)', bygroups(Keyword, Text), 'procname'),
56
65
  (r'(class|module|record|union)(\s+)', bygroups(Keyword, Text),
57
66
  'classname'),
@@ -78,8 +87,8 @@ class ChapelLexer(RegexLexer):
78
87
  (r'[0-9]+', Number.Integer),
79
88
 
80
89
  # strings
81
- (r'"(\\\\|\\"|[^"])*"', String),
82
- (r"'(\\\\|\\'|[^'])*'", String),
90
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
91
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
83
92
 
84
93
  # tokens
85
94
  (r'(=|\+=|-=|\*=|/=|\*\*=|%=|&=|\|=|\^=|&&=|\|\|=|<<=|>>=|'
@@ -96,7 +105,7 @@ class ChapelLexer(RegexLexer):
96
105
  (r'[a-zA-Z_][\w$]*', Name.Class, '#pop'),
97
106
  ],
98
107
  'procname': [
99
- (r'([a-zA-Z_][\w$]+|\~[a-zA-Z_][\w$]+|[+*/!~%<>=&^|\-]{1,2})',
108
+ (r'([a-zA-Z_][.\w$]*|\~[a-zA-Z_][.\w$]*|[+*/!~%<>=&^|\-]{1,2})',
100
109
  Name.Function, '#pop'),
101
110
  ],
102
111
  }
@@ -1,18 +1,16 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.clean
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for the Clean language.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
12
- from pygments.lexer import ExtendedRegexLexer, LexerContext, \
13
- bygroups, words, include, default
14
- from pygments.token import Comment, Keyword, Literal, Name, Number, Operator, \
15
- Punctuation, String, Text, Whitespace
11
+ from pygments.lexer import ExtendedRegexLexer, words, default, include, bygroups
12
+ from pygments.token import Comment, Error, Keyword, Literal, Name, Number, \
13
+ Operator, Punctuation, String, Whitespace
16
14
 
17
15
  __all__ = ['CleanLexer']
18
16
 
@@ -28,261 +26,153 @@ class CleanLexer(ExtendedRegexLexer):
28
26
  aliases = ['clean']
29
27
  filenames = ['*.icl', '*.dcl']
30
28
 
31
- def get_tokens_unprocessed(self, text=None, context=None):
32
- ctx = LexerContext(text, 0)
33
- ctx.indent = 0
34
- return ExtendedRegexLexer.get_tokens_unprocessed(self, text, context=ctx)
29
+ keywords = (
30
+ 'case', 'ccall', 'class', 'code', 'code inline', 'derive', 'export',
31
+ 'foreign', 'generic', 'if', 'in', 'infix', 'infixl', 'infixr',
32
+ 'instance', 'let', 'of', 'otherwise', 'special', 'stdcall', 'where',
33
+ 'with')
35
34
 
36
- def check_class_not_import(lexer, match, ctx):
37
- if match.group(0) == 'import':
38
- yield match.start(), Keyword.Namespace, match.group(0)
39
- ctx.stack = ctx.stack[:-1] + ['fromimportfunc']
40
- else:
41
- yield match.start(), Name.Class, match.group(0)
42
- ctx.pos = match.end()
35
+ modulewords = ('implementation', 'definition', 'system')
43
36
 
44
- def check_instance_class(lexer, match, ctx):
45
- if match.group(0) == 'instance' or match.group(0) == 'class':
46
- yield match.start(), Keyword, match.group(0)
47
- else:
48
- yield match.start(), Name.Function, match.group(0)
49
- ctx.stack = ctx.stack + ['fromimportfunctype']
50
- ctx.pos = match.end()
51
-
52
- @staticmethod
53
- def indent_len(text):
54
- # Tabs are four spaces:
55
- # https://svn.cs.ru.nl/repos/clean-platform/trunk/doc/STANDARDS.txt
56
- text = text.replace('\n', '')
57
- return len(text.replace('\t', ' ')), len(text)
58
-
59
- def store_indent(lexer, match, ctx):
60
- ctx.indent, _ = CleanLexer.indent_len(match.group(0))
61
- ctx.pos = match.end()
62
- yield match.start(), Text, match.group(0)
63
-
64
- def check_indent1(lexer, match, ctx):
65
- indent, reallen = CleanLexer.indent_len(match.group(0))
66
- if indent > ctx.indent:
67
- yield match.start(), Whitespace, match.group(0)
68
- ctx.pos = match.start() + reallen + 1
69
- else:
70
- ctx.indent = 0
71
- ctx.pos = match.start()
72
- ctx.stack = ctx.stack[:-1]
73
- yield match.start(), Whitespace, match.group(0)[1:]
74
-
75
- def check_indent2(lexer, match, ctx):
76
- indent, reallen = CleanLexer.indent_len(match.group(0))
77
- if indent > ctx.indent:
78
- yield match.start(), Whitespace, match.group(0)
79
- ctx.pos = match.start() + reallen + 1
80
- else:
81
- ctx.indent = 0
82
- ctx.pos = match.start()
83
- ctx.stack = ctx.stack[:-2]
84
-
85
- def check_indent3(lexer, match, ctx):
86
- indent, reallen = CleanLexer.indent_len(match.group(0))
87
- if indent > ctx.indent:
88
- yield match.start(), Whitespace, match.group(0)
89
- ctx.pos = match.start() + reallen + 1
90
- else:
91
- ctx.indent = 0
92
- ctx.pos = match.start()
93
- ctx.stack = ctx.stack[:-3]
94
- yield match.start(), Whitespace, match.group(0)[1:]
95
- if match.group(0) == '\n\n':
96
- ctx.pos = ctx.pos + 1
97
-
98
- def skip(lexer, match, ctx):
99
- ctx.stack = ctx.stack[:-1]
100
- ctx.pos = match.end()
101
- yield match.start(), Comment, match.group(0)
102
-
103
- keywords = ('class', 'instance', 'where', 'with', 'let', 'let!',
104
- 'in', 'case', 'of', 'infix', 'infixr', 'infixl', 'generic',
105
- 'derive', 'otherwise', 'code', 'inline')
37
+ lowerId = r'[a-z`][\w`]*'
38
+ upperId = r'[A-Z`][\w`]*'
39
+ funnyId = r'[~@#$%\^?!+\-*<>\\/|&=:]+'
40
+ scoreUpperId = r'_' + upperId
41
+ scoreLowerId = r'_' + lowerId
42
+ moduleId = r'[a-zA-Z_][a-zA-Z0-9_.`]+'
43
+ classId = '|'.join([lowerId, upperId, funnyId])
106
44
 
107
45
  tokens = {
108
- 'common': [
109
- (r';', Punctuation, '#pop'),
110
- (r'//', Comment, 'singlecomment'),
111
- ],
112
46
  'root': [
113
- # Comments
47
+ include('comments'),
48
+ include('keywords'),
49
+ include('module'),
50
+ include('import'),
51
+ include('whitespace'),
52
+ include('literals'),
53
+ include('operators'),
54
+ include('delimiters'),
55
+ include('names'),
56
+ ],
57
+ 'whitespace': [
58
+ (r'\s+', Whitespace),
59
+ ],
60
+ 'comments': [
114
61
  (r'//.*\n', Comment.Single),
115
- (r'(?s)/\*\*.*?\*/', Comment.Special),
116
- (r'(?s)/\*.*?\*/', Comment.Multi),
117
-
118
- # Modules, imports, etc.
119
- (r'\b((?:implementation|definition|system)\s+)?(module)(\s+)([\w`.]+)',
120
- bygroups(Keyword.Namespace, Keyword.Namespace, Text, Name.Class)),
121
- (r'(?<=\n)import(?=\s)', Keyword.Namespace, 'import'),
122
- (r'(?<=\n)from(?=\s)', Keyword.Namespace, 'fromimport'),
123
-
124
- # Keywords
125
- # We cannot use (?s)^|(?<=\s) as prefix, so need to repeat this
126
- (words(keywords, prefix=r'(?<=\s)', suffix=r'(?=\s)'), Keyword),
127
- (words(keywords, prefix=r'^', suffix=r'(?=\s)'), Keyword),
128
-
129
- # Function definitions
130
- (r'(?=\{\|)', Whitespace, 'genericfunction'),
131
- (r'(?<=\n)([ \t]*)([\w`$()=\-<>~*\^|+&%]+)((?:\s+\w)*)(\s*)(::)',
132
- bygroups(store_indent, Name.Function, Keyword.Type, Whitespace,
133
- Punctuation),
134
- 'functiondefargs'),
135
-
136
- # Type definitions
137
- (r'(?<=\n)([ \t]*)(::)', bygroups(store_indent, Punctuation), 'typedef'),
138
- (r'^([ \t]*)(::)', bygroups(store_indent, Punctuation), 'typedef'),
139
-
140
- # Literals
141
- (r'\'\\?.(?<!\\)\'', String.Char),
142
- (r'\'\\\d+\'', String.Char),
143
- (r'\'\\\\\'', String.Char), # (special case for '\\')
144
- (r'[+\-~]?\s*\d+\.\d+(E[+\-~]?\d+)?\b', Number.Float),
145
- (r'[+\-~]?\s*0[0-7]\b', Number.Oct),
146
- (r'[+\-~]?\s*0x[0-9a-fA-F]\b', Number.Hex),
147
- (r'[+\-~]?\s*\d+\b', Number.Integer),
148
- (r'"', String.Double, 'doubleqstring'),
149
- (words(('True', 'False'), prefix=r'(?<=\s)', suffix=r'(?=\s)'),
150
- Literal),
151
-
152
- # Qualified names
153
- (r'(\')([\w.]+)(\'\.)',
154
- bygroups(Punctuation, Name.Namespace, Punctuation)),
155
-
156
- # Everything else is some name
157
- (r'([\w`$%/?@]+\.?)*[\w`$%/?@]+', Name),
158
-
159
- # Punctuation
160
- (r'[{}()\[\],:;.#]', Punctuation),
161
- (r'[+\-=!<>|&~*\^/]', Operator),
162
- (r'\\\\', Operator),
163
-
164
- # Lambda expressions
165
- (r'\\.*?(->|\.|=)', Name.Function),
166
-
167
- # Whitespace
168
- (r'\s', Whitespace),
169
-
170
- include('common'),
62
+ (r'/\*', Comment.Multi, 'comments.in'),
63
+ (r'/\*\*', Comment.Special, 'comments.in'),
171
64
  ],
172
- 'fromimport': [
173
- include('common'),
174
- (r'([\w`.]+)', check_class_not_import),
175
- (r'\n', Whitespace, '#pop'),
176
- (r'\s', Whitespace),
65
+ 'comments.in': [
66
+ (r'\*\/', Comment.Multi, '#pop'),
67
+ (r'/\*', Comment.Multi, '#push'),
68
+ (r'[^*/]+', Comment.Multi),
69
+ (r'\*(?!/)', Comment.Multi),
70
+ (r'/', Comment.Multi),
177
71
  ],
178
- 'fromimportfunc': [
179
- include('common'),
180
- (r'(::)(\s+)([^,\s]+)', bygroups(Punctuation, Text, Keyword.Type)),
181
- (r'([\w`$()=\-<>~*\^|+&%/]+)', check_instance_class),
182
- (r',', Punctuation),
183
- (r'\n', Whitespace, '#pop'),
184
- (r'\s', Whitespace),
72
+ 'keywords': [
73
+ (words(keywords, prefix=r'\b', suffix=r'\b'), Keyword),
185
74
  ],
186
- 'fromimportfunctype': [
187
- include('common'),
188
- (r'[{(\[]', Punctuation, 'combtype'),
189
- (r',', Punctuation, '#pop'),
190
- (r'[:;.#]', Punctuation),
191
- (r'\n', Whitespace, '#pop:2'),
192
- (r'[^\S\n]+', Whitespace),
193
- (r'\S+', Keyword.Type),
75
+ 'module': [
76
+ (words(modulewords, prefix=r'\b', suffix=r'\b'), Keyword.Namespace),
77
+ (r'\bmodule\b', Keyword.Namespace, 'module.name'),
194
78
  ],
195
- 'combtype': [
196
- include('common'),
197
- (r'[})\]]', Punctuation, '#pop'),
198
- (r'[{(\[]', Punctuation, '#pop'),
199
- (r'[,:;.#]', Punctuation),
200
- (r'\s+', Whitespace),
201
- (r'\S+', Keyword.Type),
79
+ 'module.name': [
80
+ include('whitespace'),
81
+ (moduleId, Name.Class, '#pop'),
202
82
  ],
203
83
  'import': [
204
- include('common'),
205
- (words(('from', 'import', 'as', 'qualified'),
206
- prefix='(?<=\s)', suffix='(?=\s)'), Keyword.Namespace),
207
- (r'[\w`.]+', Name.Class),
208
- (r'\n', Whitespace, '#pop'),
209
- (r',', Punctuation),
210
- (r'[^\S\n]+', Whitespace),
211
- ],
212
- 'singlecomment': [
213
- (r'(.)(?=\n)', skip),
214
- (r'.+(?!\n)', Comment),
215
- ],
216
- 'doubleqstring': [
217
- (r'[^\\"]+', String.Double),
218
- (r'"', String.Double, '#pop'),
219
- (r'\\.', String.Double),
84
+ (r'\b(import)\b(\s*)', bygroups(Keyword, Whitespace), 'import.module'),
85
+ (r'\b(from)\b(\s*)\b(' + moduleId + r')\b(\s*)\b(import)\b',
86
+ bygroups(Keyword, Whitespace, Name.Class, Whitespace, Keyword),
87
+ 'import.what'),
88
+ ],
89
+ 'import.module': [
90
+ (r'\b(qualified)\b(\s*)', bygroups(Keyword, Whitespace)),
91
+ (r'(\s*)\b(as)\b', bygroups(Whitespace, Keyword), ('#pop', 'import.module.as')),
92
+ (moduleId, Name.Class),
93
+ (r'(\s*)(,)(\s*)', bygroups(Whitespace, Punctuation, Whitespace)),
94
+ (r'\s+', Whitespace),
95
+ default('#pop'),
220
96
  ],
221
- 'typedef': [
222
- include('common'),
223
- (r'[\w`]+', Keyword.Type),
224
- (r'[:=|(),\[\]{}!*]', Punctuation),
225
- (r'->', Punctuation),
226
- (r'\n(?=[^\s|])', Whitespace, '#pop'),
227
- (r'\s', Whitespace),
228
- (r'.', Keyword.Type),
97
+ 'import.module.as': [
98
+ include('whitespace'),
99
+ (lowerId, Name.Class, '#pop'),
100
+ (upperId, Name.Class, '#pop'),
101
+ ],
102
+ 'import.what': [
103
+ (r'\b(class)\b(\s+)(' + classId + r')',
104
+ bygroups(Keyword, Whitespace, Name.Class), 'import.what.class'),
105
+ (r'\b(instance)(\s+)(' + classId + r')(\s+)',
106
+ bygroups(Keyword, Whitespace, Name.Class, Whitespace), 'import.what.instance'),
107
+ (r'(::)(\s*)\b(' + upperId + r')\b',
108
+ bygroups(Punctuation, Whitespace, Name.Class), 'import.what.type'),
109
+ (r'\b(generic)\b(\s+)\b(' + lowerId + '|' + upperId + r')\b',
110
+ bygroups(Keyword, Whitespace, Name)),
111
+ include('names'),
112
+ (r'(,)(\s+)', bygroups(Punctuation, Whitespace)),
113
+ (r'$', Whitespace, '#pop'),
114
+ include('whitespace'),
115
+ ],
116
+ 'import.what.class': [
117
+ (r',', Punctuation, '#pop'),
118
+ (r'\(', Punctuation, 'import.what.class.members'),
119
+ (r'$', Whitespace, '#pop:2'),
120
+ include('whitespace'),
229
121
  ],
230
- 'genericfunction': [
231
- include('common'),
232
- (r'\{\|', Punctuation),
233
- (r'\|\}', Punctuation, '#pop'),
122
+ 'import.what.class.members': [
234
123
  (r',', Punctuation),
235
- (r'->', Punctuation),
236
- (r'(\s+of\s+)(\{)', bygroups(Keyword, Punctuation), 'genericftypes'),
237
- (r'\s', Whitespace),
238
- (r'[\w`\[\]{}!]+', Keyword.Type),
239
- (r'[*()]', Punctuation),
124
+ (r'\.\.', Punctuation),
125
+ (r'\)', Punctuation, '#pop'),
126
+ include('names'),
127
+ ],
128
+ 'import.what.instance': [
129
+ (r'[,)]', Punctuation, '#pop'),
130
+ (r'\(', Punctuation, 'import.what.instance'),
131
+ (r'$', Whitespace, '#pop:2'),
132
+ include('whitespace'),
133
+ include('names'),
134
+ ],
135
+ 'import.what.type': [
136
+ (r',', Punctuation, '#pop'),
137
+ (r'[({]', Punctuation, 'import.what.type.consesandfields'),
138
+ (r'$', Whitespace, '#pop:2'),
139
+ include('whitespace'),
240
140
  ],
241
- 'genericftypes': [
242
- include('common'),
243
- (r'[\w`]+', Keyword.Type),
141
+ 'import.what.type.consesandfields': [
244
142
  (r',', Punctuation),
245
- (r'\s', Whitespace),
246
- (r'\}', Punctuation, '#pop'),
247
- ],
248
- 'functiondefargs': [
249
- include('common'),
250
- (r'\n(\s*)', check_indent1),
251
- (r'[!{}()\[\],:;.#]', Punctuation),
252
- (r'->', Punctuation, 'functiondefres'),
253
- (r'^(?=\S)', Whitespace, '#pop'),
254
- (r'\S', Keyword.Type),
255
- (r'\s', Whitespace),
256
- ],
257
- 'functiondefres': [
258
- include('common'),
259
- (r'\n(\s*)', check_indent2),
260
- (r'^(?=\S)', Whitespace, '#pop:2'),
261
- (r'[!{}()\[\],:;.#]', Punctuation),
262
- (r'\|', Punctuation, 'functiondefclasses'),
263
- (r'\S', Keyword.Type),
264
- (r'\s', Whitespace),
265
- ],
266
- 'functiondefclasses': [
267
- include('common'),
268
- (r'\n(\s*)', check_indent3),
269
- (r'^(?=\S)', Whitespace, '#pop:3'),
270
- (r'[,&]', Punctuation),
271
- (r'\[', Punctuation, 'functiondefuniquneq'),
272
- (r'[\w`$()=\-<>~*\^|+&%/{}\[\]@]', Name.Function, 'functionname'),
273
- (r'\s+', Whitespace),
274
- ],
275
- 'functiondefuniquneq': [
276
- include('common'),
277
- (r'[a-z]+', Keyword.Type),
278
- (r'\s+', Whitespace),
279
- (r'<=|,', Punctuation),
280
- (r'\]', Punctuation, '#pop')
281
- ],
282
- 'functionname': [
283
- include('common'),
284
- (r'[\w`$()=\-<>~*\^|+&%/]+', Name.Function),
285
- (r'(?=\{\|)', Punctuation, 'genericfunction'),
286
- default('#pop'),
143
+ (r'\.\.', Punctuation),
144
+ (r'[)}]', Punctuation, '#pop'),
145
+ include('names'),
146
+ ],
147
+ 'literals': [
148
+ (r'\'([^\'\\]|\\(x[\da-fA-F]+|\d+|.))\'', Literal.Char),
149
+ (r'[+~-]?0[0-7]+\b', Number.Oct),
150
+ (r'[+~-]?\d+\.\d+(E[+-]?\d+)?', Number.Float),
151
+ (r'[+~-]?\d+\b', Number.Integer),
152
+ (r'[+~-]?0x[\da-fA-F]+\b', Number.Hex),
153
+ (r'True|False', Literal),
154
+ (r'"', String.Double, 'literals.stringd'),
155
+ ],
156
+ 'literals.stringd': [
157
+ (r'[^\\"\n]+', String.Double),
158
+ (r'"', String.Double, '#pop'),
159
+ (r'\\.', String.Double),
160
+ (r'[$\n]', Error, '#pop'),
161
+ ],
162
+ 'operators': [
163
+ (r'[-~@#$%\^?!+*<>\\/|&=:.]+', Operator),
164
+ (r'\b_+\b', Operator),
165
+ ],
166
+ 'delimiters': [
167
+ (r'[,;(){}\[\]]', Punctuation),
168
+ (r'(\')([\w`.]+)(\')',
169
+ bygroups(Punctuation, Name.Class, Punctuation)),
170
+ ],
171
+ 'names': [
172
+ (lowerId, Name),
173
+ (scoreLowerId, Name),
174
+ (funnyId, Name.Function),
175
+ (upperId, Name.Class),
176
+ (scoreUpperId, Name.Class),
287
177
  ]
288
178
  }