pygments.rb 1.2.0 → 2.1.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 (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.css
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for CSS and related stylesheet formats.
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
 
@@ -16,7 +15,6 @@ from pygments.lexer import ExtendedRegexLexer, RegexLexer, include, bygroups, \
16
15
  default, words, inherit
17
16
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
18
17
  Number, Punctuation
19
- from pygments.util import iteritems
20
18
 
21
19
  __all__ = ['CssLexer', 'SassLexer', 'ScssLexer', 'LessCssLexer']
22
20
 
@@ -125,7 +123,7 @@ _css_properties = (
125
123
  'wrap-flow', 'wrap-inside', 'wrap-through', 'writing-mode', 'z-index',
126
124
  )
127
125
 
128
- # List of keyword values obtained from:
126
+ # List of keyword values obtained from:
129
127
  # http://cssvalues.com/
130
128
  _keyword_values = (
131
129
  'absolute', 'alias', 'all', 'all-petite-caps', 'all-scroll',
@@ -263,7 +261,7 @@ _time_units = (
263
261
  's', 'ms',
264
262
  )
265
263
  _all_units = _angle_units + _frequency_units + _length_units + \
266
- _resolution_units + _time_units
264
+ _resolution_units + _time_units
267
265
 
268
266
 
269
267
  class CssLexer(RegexLexer):
@@ -290,8 +288,8 @@ class CssLexer(RegexLexer):
290
288
  (r'(@)([\w-]+)', bygroups(Punctuation, Keyword), 'atrule'),
291
289
  (r'[\w-]+', Name.Tag),
292
290
  (r'[~^*!%&$\[\]()<>|+=@:;,./?-]', Operator),
293
- (r'"(\\\\|\\"|[^"])*"', String.Double),
294
- (r"'(\\\\|\\'|[^'])*'", String.Single)
291
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
292
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
295
293
  ],
296
294
  'atrule': [
297
295
  (r'\{', Punctuation, 'atcontent'),
@@ -311,6 +309,8 @@ class CssLexer(RegexLexer):
311
309
  (words(_vendor_prefixes,), Keyword.Pseudo),
312
310
  (r'('+r'|'.join(_css_properties)+r')(\s*)(\:)',
313
311
  bygroups(Keyword, Text, Punctuation), 'value-start'),
312
+ (r'([-]+[a-zA-Z_][\w-]*)(\s*)(\:)', bygroups(Name.Variable, Text, Punctuation),
313
+ 'value-start'),
314
314
  (r'([a-zA-Z_][\w-]*)(\s*)(\:)', bygroups(Name, Text, Punctuation),
315
315
  'value-start'),
316
316
 
@@ -322,26 +322,29 @@ class CssLexer(RegexLexer):
322
322
  include('urls'),
323
323
  (r'('+r'|'.join(_functional_notation_keyword_values)+r')(\()',
324
324
  bygroups(Name.Builtin, Punctuation), 'function-start'),
325
- (r'([a-zA-Z_][\w-]+)(\()', bygroups(Name.Function, Punctuation), 'function-start'),
325
+ (r'([a-zA-Z_][\w-]+)(\()',
326
+ bygroups(Name.Function, Punctuation), 'function-start'),
326
327
  (words(_keyword_values, suffix=r'\b'), Keyword.Constant),
327
328
  (words(_other_keyword_values, suffix=r'\b'), Keyword.Constant),
328
329
  (words(_color_keywords, suffix=r'\b'), Keyword.Constant),
329
- (words(_css_properties, suffix=r'\b'), Keyword), # for transition-property etc.
330
+ # for transition-property etc.
331
+ (words(_css_properties, suffix=r'\b'), Keyword),
330
332
  (r'\!important', Comment.Preproc),
331
333
  (r'/\*(?:.|\n)*?\*/', Comment),
332
334
 
333
335
  include('numeric-values'),
334
-
336
+
335
337
  (r'[~^*!%&<>|+=@:./?-]+', Operator),
336
338
  (r'[\[\](),]+', Punctuation),
337
- (r'"(\\\\|\\"|[^"])*"', String.Double),
338
- (r"'(\\\\|\\'|[^'])*'", String.Single),
339
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
340
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
339
341
  (r'[a-zA-Z_][\w-]*', Name),
340
342
  (r';', Punctuation, '#pop'),
341
343
  (r'\}', Punctuation, '#pop:2'),
342
344
  ],
343
345
  'function-start': [
344
346
  (r'\s+', Text),
347
+ (r'[-]+([\w+]+[-]*)+', Name.Variable),
345
348
  include('urls'),
346
349
  (words(_vendor_prefixes,), Keyword.Pseudo),
347
350
  (words(_keyword_values, suffix=r'\b'), Keyword.Constant),
@@ -351,14 +354,15 @@ class CssLexer(RegexLexer):
351
354
  # function-start may be entered recursively
352
355
  (r'(' + r'|'.join(_functional_notation_keyword_values) + r')(\()',
353
356
  bygroups(Name.Builtin, Punctuation), 'function-start'),
354
- (r'([a-zA-Z_][\w-]+)(\()', bygroups(Name.Function, Punctuation), 'function-start'),
357
+ (r'([a-zA-Z_][\w-]+)(\()',
358
+ bygroups(Name.Function, Punctuation), 'function-start'),
355
359
 
356
360
  (r'/\*(?:.|\n)*?\*/', Comment),
357
361
  include('numeric-values'),
358
362
  (r'[*+/-]', Operator),
359
- (r'[,]', Punctuation),
360
- (r'"(\\\\|\\"|[^"])*"', String.Double),
361
- (r"'(\\\\|\\'|[^'])*'", String.Single),
363
+ (r',', Punctuation),
364
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
365
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
362
366
  (r'[a-zA-Z_-]\w*', Name),
363
367
  (r'\)', Punctuation, '#pop'),
364
368
  ],
@@ -373,8 +377,8 @@ class CssLexer(RegexLexer):
373
377
  'numeric-values': [
374
378
  (r'\#[a-zA-Z0-9]{1,6}', Number.Hex),
375
379
  (r'[+\-]?[0-9]*[.][0-9]+', Number.Float, 'numeric-end'),
376
- (r'[+\-]?[0-9]+', Number.Integer, 'numeric-end'),
377
- ],
380
+ (r'[+\-]?[0-9]+', Number.Integer, 'numeric-end'),
381
+ ],
378
382
  'numeric-end': [
379
383
  (words(_all_units, suffix=r'\b'), Keyword.Type),
380
384
  (r'%', Keyword.Type),
@@ -394,7 +398,7 @@ common_sass_tokens = {
394
398
  'behind', 'below', 'bidi-override', 'blink', 'block', 'bold', 'bolder', 'both',
395
399
  'capitalize', 'center-left', 'center-right', 'center', 'circle',
396
400
  'cjk-ideographic', 'close-quote', 'collapse', 'condensed', 'continuous',
397
- 'crop', 'crosshair', 'cross', 'cursive', 'dashed', 'decimal-leading-zero',
401
+ 'crosshair', 'cross', 'cursive', 'dashed', 'decimal-leading-zero',
398
402
  'decimal', 'default', 'digits', 'disc', 'dotted', 'double', 'e-resize', 'embed',
399
403
  'extra-condensed', 'extra-expanded', 'expanded', 'fantasy', 'far-left',
400
404
  'far-right', 'faster', 'fast', 'fixed', 'georgian', 'groove', 'hebrew', 'help',
@@ -466,9 +470,9 @@ common_sass_tokens = {
466
470
  ],
467
471
 
468
472
  'string-single': [
469
- (r"(\\.|#(?=[^\n{])|[^\n'#])+", String.Double),
473
+ (r"(\\.|#(?=[^\n{])|[^\n'#])+", String.Single),
470
474
  (r'#\{', String.Interpol, 'interpolation'),
471
- (r"'", String.Double, '#pop'),
475
+ (r"'", String.Single, '#pop'),
472
476
  ],
473
477
 
474
478
  'string-url': [
@@ -609,7 +613,7 @@ class SassLexer(ExtendedRegexLexer):
609
613
  (r"\*/", Comment, '#pop'),
610
614
  ],
611
615
  }
612
- for group, common in iteritems(common_sass_tokens):
616
+ for group, common in common_sass_tokens.items():
613
617
  tokens[group] = copy.copy(common)
614
618
  tokens['value'].append((r'\n', Text, 'root'))
615
619
  tokens['selector'].append((r'\n', Text, 'root'))
@@ -659,7 +663,7 @@ class ScssLexer(RegexLexer):
659
663
  (r"\*/", Comment, '#pop'),
660
664
  ],
661
665
  }
662
- for group, common in iteritems(common_sass_tokens):
666
+ for group, common in common_sass_tokens.items():
663
667
  tokens[group] = copy.copy(common)
664
668
  tokens['value'].extend([(r'\n', Text), (r'[;{}]', Punctuation, '#pop')])
665
669
  tokens['selector'].extend([(r'\n', Text), (r'[;{}]', Punctuation, '#pop')])
@@ -684,6 +688,7 @@ class LessCssLexer(CssLexer):
684
688
  ],
685
689
  'content': [
686
690
  (r'\{', Punctuation, '#push'),
691
+ (r'//.*\n', Comment.Single),
687
692
  inherit,
688
693
  ],
689
694
  }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.d
4
3
  ~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for D languages.
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
 
@@ -47,11 +46,16 @@ class DLexer(RegexLexer):
47
46
  'module', 'new', 'nothrow', 'out', 'override', 'package', 'pragma',
48
47
  'private', 'protected', 'public', 'pure', 'ref', 'return', 'scope',
49
48
  'shared', 'static', 'struct', 'super', 'switch', 'synchronized',
50
- 'template', 'this', 'throw', 'try', 'typedef', 'typeid', 'typeof',
49
+ 'template', 'this', 'throw', 'try', 'typeid', 'typeof',
51
50
  'union', 'unittest', 'version', 'volatile', 'while', 'with',
52
51
  '__gshared', '__traits', '__vector', '__parameters'),
53
52
  suffix=r'\b'),
54
53
  Keyword),
54
+ (words((
55
+ # Removed in 2.072
56
+ 'typedef', ),
57
+ suffix=r'\b'),
58
+ Keyword.Removed),
55
59
  (words((
56
60
  'bool', 'byte', 'cdouble', 'cent', 'cfloat', 'char', 'creal',
57
61
  'dchar', 'double', 'float', 'idouble', 'ifloat', 'int', 'ireal',
@@ -60,9 +64,9 @@ class DLexer(RegexLexer):
60
64
  Keyword.Type),
61
65
  (r'(false|true|null)\b', Keyword.Constant),
62
66
  (words((
63
- '__FILE__', '__MODULE__', '__LINE__', '__FUNCTION__', '__PRETTY_FUNCTION__'
64
- '', '__DATE__', '__EOF__', '__TIME__', '__TIMESTAMP__', '__VENDOR__',
65
- '__VERSION__'), suffix=r'\b'),
67
+ '__FILE__', '__FILE_FULL_PATH__', '__MODULE__', '__LINE__', '__FUNCTION__',
68
+ '__PRETTY_FUNCTION__', '__DATE__', '__EOF__', '__TIME__', '__TIMESTAMP__',
69
+ '__VENDOR__', '__VERSION__'), suffix=r'\b'),
66
70
  Keyword.Pseudo),
67
71
  (r'macro\b', Keyword.Reserved),
68
72
  (r'(string|wstring|dstring|size_t|ptrdiff_t)\b', Name.Builtin),
@@ -93,7 +97,7 @@ class DLexer(RegexLexer):
93
97
  # -- AlternateWysiwygString
94
98
  (r'`[^`]*`[cwd]?', String),
95
99
  # -- DoubleQuotedString
96
- (r'"(\\\\|\\"|[^"])*"[cwd]?', String),
100
+ (r'"(\\\\|\\[^\\]|[^"\\])*"[cwd]?', String),
97
101
  # -- EscapeSequence
98
102
  (r"\\(['\"?\\abfnrtv]|x[0-9a-fA-F]{2}|[0-7]{1,3}"
99
103
  r"|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|&\w+;)",
@@ -224,7 +228,7 @@ class CrocLexer(RegexLexer):
224
228
  (r'@`(``|[^`])*`', String),
225
229
  (r"@'(''|[^'])*'", String),
226
230
  # -- DoubleQuotedString
227
- (r'"(\\\\|\\"|[^"])*"', String),
231
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
228
232
  # Tokens
229
233
  (r'(~=|\^=|%=|\*=|==|!=|>>>=|>>>|>>=|>>|>=|<=>|\?=|-\>'
230
234
  r'|<<=|<<|<=|\+\+|\+=|--|-=|\|\||\|=|&&|&=|\.\.|/=)'
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.dalvik
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Pygments lexers for Dalvik VM-related languages.
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
 
@@ -1,17 +1,16 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.data
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for data file format.
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
11
  import re
13
12
 
14
- from pygments.lexer import RegexLexer, ExtendedRegexLexer, LexerContext, \
13
+ from pygments.lexer import Lexer, RegexLexer, ExtendedRegexLexer, LexerContext, \
15
14
  include, bygroups, inherit
16
15
  from pygments.token import Text, Comment, Keyword, Name, String, Number, \
17
16
  Punctuation, Literal, Error
@@ -23,7 +22,7 @@ class YamlLexerContext(LexerContext):
23
22
  """Indentation context for the YAML lexer."""
24
23
 
25
24
  def __init__(self, *args, **kwds):
26
- super(YamlLexerContext, self).__init__(*args, **kwds)
25
+ super().__init__(*args, **kwds)
27
26
  self.indent_stack = []
28
27
  self.indent = -1
29
28
  self.next_indent = 0
@@ -205,7 +204,7 @@ class YamlLexer(ExtendedRegexLexer):
205
204
  bygroups(Text, Number), 'ignored-line'),
206
205
  ],
207
206
 
208
- # the %YAG directive
207
+ # the %TAG directive
209
208
  'tag-directive': [
210
209
  # a tag handle and the corresponding prefix
211
210
  (r'([ ]+)(!|![\w-]*!)'
@@ -218,7 +217,7 @@ class YamlLexer(ExtendedRegexLexer):
218
217
  'indentation': [
219
218
  # trailing whitespaces are ignored
220
219
  (r'[ ]*$', something(Text), '#pop:2'),
221
- # whitespaces preceeding block collection indicators
220
+ # whitespaces preceding block collection indicators
222
221
  (r'[ ]+(?=[?:-](?:[ ]|$))', save_indent(Text)),
223
222
  # block collection indicators
224
223
  (r'[?:-](?=[ ]|$)', set_indent(Punctuation.Indicator)),
@@ -232,6 +231,9 @@ class YamlLexer(ExtendedRegexLexer):
232
231
  (r'[ ]*(?=#|$)', something(Text), '#pop'),
233
232
  # whitespaces separating tokens
234
233
  (r'[ ]+', Text),
234
+ # key with colon
235
+ (r'''([^#,:?\[\]{}"'\n]+)(:)(?=[ ]|$)''',
236
+ bygroups(Name.Tag, set_indent(Punctuation, implicit=True))),
235
237
  # tags, anchors and aliases,
236
238
  include('descriptors'),
237
239
  # block collections and scalars
@@ -250,7 +252,7 @@ class YamlLexer(ExtendedRegexLexer):
250
252
  (r'!<[\w#;/?:@&=+$,.!~*\'()\[\]%-]+>', Keyword.Type),
251
253
  # a tag in the form '!', '!suffix' or '!handle!suffix'
252
254
  (r'!(?:[\w-]+!)?'
253
- r'[\w#;/?:@&=+$,.!~*\'()\[\]%-]+', Keyword.Type),
255
+ r'[\w#;/?:@&=+$,.!~*\'()\[\]%-]*', Keyword.Type),
254
256
  # an anchor
255
257
  (r'&[\w-]+', Name.Label),
256
258
  # an alias
@@ -308,6 +310,9 @@ class YamlLexer(ExtendedRegexLexer):
308
310
 
309
311
  # a flow mapping indicated by '{' and '}'
310
312
  'flow-mapping': [
313
+ # key with colon
314
+ (r'''([^,:?\[\]{}"'\n]+)(:)(?=[ ]|$)''',
315
+ bygroups(Name.Tag, Punctuation)),
311
316
  # include flow collection rules
312
317
  include('flow-collection'),
313
318
  # the closing indicator
@@ -427,10 +432,10 @@ class YamlLexer(ExtendedRegexLexer):
427
432
  def get_tokens_unprocessed(self, text=None, context=None):
428
433
  if context is None:
429
434
  context = YamlLexerContext(text, 0)
430
- return super(YamlLexer, self).get_tokens_unprocessed(text, context)
435
+ return super().get_tokens_unprocessed(text, context)
431
436
 
432
437
 
433
- class JsonLexer(RegexLexer):
438
+ class JsonLexer(Lexer):
434
439
  """
435
440
  For JSON data structures.
436
441
 
@@ -438,75 +443,192 @@ class JsonLexer(RegexLexer):
438
443
  """
439
444
 
440
445
  name = 'JSON'
441
- aliases = ['json']
442
- filenames = ['*.json']
443
- mimetypes = ['application/json']
446
+ aliases = ['json', 'json-object']
447
+ filenames = ['*.json', 'Pipfile.lock']
448
+ mimetypes = ['application/json', 'application/json-object']
449
+
450
+ # No validation of integers, floats, or constants is done.
451
+ # As long as the characters are members of the following
452
+ # sets, the token will be considered valid. For example,
453
+ #
454
+ # "--1--" is parsed as an integer
455
+ # "1...eee" is parsed as a float
456
+ # "trustful" is parsed as a constant
457
+ #
458
+ integers = set('-0123456789')
459
+ floats = set('.eE+')
460
+ constants = set('truefalsenull') # true|false|null
461
+ hexadecimals = set('0123456789abcdefABCDEF')
462
+ punctuations = set('{}[],')
463
+ whitespaces = {'\u0020', '\u000a', '\u000d', '\u0009'}
464
+
465
+ def get_tokens_unprocessed(self, text):
466
+ """Parse JSON data."""
467
+
468
+ in_string = False
469
+ in_escape = False
470
+ in_unicode_escape = 0
471
+ in_whitespace = False
472
+ in_constant = False
473
+ in_number = False
474
+ in_float = False
475
+ in_punctuation = False
476
+
477
+ start = 0
478
+
479
+ # The queue is used to store data that may need to be tokenized
480
+ # differently based on what follows. In particular, JSON object
481
+ # keys are tokenized differently than string values, but cannot
482
+ # be distinguished until punctuation is encountered outside the
483
+ # string.
484
+ #
485
+ # A ":" character after the string indicates that the string is
486
+ # an object key; any other character indicates the string is a
487
+ # regular string value.
488
+ #
489
+ # The queue holds tuples that contain the following data:
490
+ #
491
+ # (start_index, token_type, text)
492
+ #
493
+ # By default the token type of text in double quotes is
494
+ # String.Double. The token type will be replaced if a colon
495
+ # is encountered after the string closes.
496
+ #
497
+ queue = []
498
+
499
+ for stop, character in enumerate(text):
500
+ if in_string:
501
+ if in_unicode_escape:
502
+ if character in self.hexadecimals:
503
+ in_unicode_escape -= 1
504
+ if not in_unicode_escape:
505
+ in_escape = False
506
+ else:
507
+ in_unicode_escape = 0
508
+ in_escape = False
509
+
510
+ elif in_escape:
511
+ if character == 'u':
512
+ in_unicode_escape = 4
513
+ else:
514
+ in_escape = False
515
+
516
+ elif character == '\\':
517
+ in_escape = True
518
+
519
+ elif character == '"':
520
+ queue.append((start, String.Double, text[start:stop + 1]))
521
+ in_string = False
522
+ in_escape = False
523
+ in_unicode_escape = 0
524
+
525
+ continue
526
+
527
+ elif in_whitespace:
528
+ if character in self.whitespaces:
529
+ continue
530
+
531
+ if queue:
532
+ queue.append((start, Text, text[start:stop]))
533
+ else:
534
+ yield start, Text, text[start:stop]
535
+ in_whitespace = False
536
+ # Fall through so the new character can be evaluated.
537
+
538
+ elif in_constant:
539
+ if character in self.constants:
540
+ continue
541
+
542
+ yield start, Keyword.Constant, text[start:stop]
543
+ in_constant = False
544
+ # Fall through so the new character can be evaluated.
545
+
546
+ elif in_number:
547
+ if character in self.integers:
548
+ continue
549
+ elif character in self.floats:
550
+ in_float = True
551
+ continue
552
+
553
+ if in_float:
554
+ yield start, Number.Float, text[start:stop]
555
+ else:
556
+ yield start, Number.Integer, text[start:stop]
557
+ in_number = False
558
+ in_float = False
559
+ # Fall through so the new character can be evaluated.
560
+
561
+ elif in_punctuation:
562
+ if character in self.punctuations:
563
+ continue
564
+
565
+ yield start, Punctuation, text[start:stop]
566
+ in_punctuation = False
567
+ # Fall through so the new character can be evaluated.
568
+
569
+ start = stop
570
+
571
+ if character == '"':
572
+ in_string = True
573
+
574
+ elif character in self.whitespaces:
575
+ in_whitespace = True
576
+
577
+ elif character in {'f', 'n', 't'}: # The first letters of true|false|null
578
+ # Exhaust the queue. Accept the existing token types.
579
+ yield from queue
580
+ queue.clear()
581
+
582
+ in_constant = True
583
+
584
+ elif character in self.integers:
585
+ # Exhaust the queue. Accept the existing token types.
586
+ yield from queue
587
+ queue.clear()
588
+
589
+ in_number = True
590
+
591
+ elif character == ':':
592
+ # Yield from the queue. Replace string token types.
593
+ for _start, _token, _text in queue:
594
+ if _token is Text:
595
+ yield _start, _token, _text
596
+ elif _token is String.Double:
597
+ yield _start, Name.Tag, _text
598
+ else:
599
+ yield _start, Error, _text
600
+ queue.clear()
601
+
602
+ in_punctuation = True
603
+
604
+ elif character in self.punctuations:
605
+ # Exhaust the queue. Accept the existing token types.
606
+ yield from queue
607
+ queue.clear()
608
+
609
+ in_punctuation = True
444
610
 
445
- flags = re.DOTALL
446
-
447
- # integer part of a number
448
- int_part = r'-?(0|[1-9]\d*)'
449
-
450
- # fractional part of a number
451
- frac_part = r'\.\d+'
452
-
453
- # exponential part of a number
454
- exp_part = r'[eE](\+|-)?\d+'
455
-
456
- tokens = {
457
- 'whitespace': [
458
- (r'\s+', Text),
459
- ],
460
-
461
- # represents a simple terminal value
462
- 'simplevalue': [
463
- (r'(true|false|null)\b', Keyword.Constant),
464
- (('%(int_part)s(%(frac_part)s%(exp_part)s|'
465
- '%(exp_part)s|%(frac_part)s)') % vars(),
466
- Number.Float),
467
- (int_part, Number.Integer),
468
- (r'"(\\\\|\\"|[^"])*"', String.Double),
469
- ],
470
-
471
-
472
- # the right hand side of an object, after the attribute name
473
- 'objectattribute': [
474
- include('value'),
475
- (r':', Punctuation),
476
- # comma terminates the attribute but expects more
477
- (r',', Punctuation, '#pop'),
478
- # a closing bracket terminates the entire object, so pop twice
479
- (r'\}', Punctuation, '#pop:2'),
480
- ],
481
-
482
- # a json object - { attr, attr, ... }
483
- 'objectvalue': [
484
- include('whitespace'),
485
- (r'"(\\\\|\\"|[^"])*"', Name.Tag, 'objectattribute'),
486
- (r'\}', Punctuation, '#pop'),
487
- ],
488
-
489
- # json array - [ value, value, ... }
490
- 'arrayvalue': [
491
- include('whitespace'),
492
- include('value'),
493
- (r',', Punctuation),
494
- (r'\]', Punctuation, '#pop'),
495
- ],
496
-
497
- # a json value - either a simple value or a complex value (object or array)
498
- 'value': [
499
- include('whitespace'),
500
- include('simplevalue'),
501
- (r'\{', Punctuation, 'objectvalue'),
502
- (r'\[', Punctuation, 'arrayvalue'),
503
- ],
504
-
505
- # the root of a json document whould be a value
506
- 'root': [
507
- include('value'),
508
- ],
509
- }
611
+ else:
612
+ # Exhaust the queue. Accept the existing token types.
613
+ yield from queue
614
+ queue.clear()
615
+
616
+ yield start, Error, character
617
+
618
+ # Yield any remaining text.
619
+ yield from queue
620
+ if in_string:
621
+ yield start, Error, text[start:]
622
+ elif in_float:
623
+ yield start, Number.Float, text[start:]
624
+ elif in_number:
625
+ yield start, Number.Integer, text[start:]
626
+ elif in_constant:
627
+ yield start, Keyword.Constant, text[start:]
628
+ elif in_whitespace:
629
+ yield start, Text, text[start:]
630
+ elif in_punctuation:
631
+ yield start, Punctuation, text[start:]
510
632
 
511
633
 
512
634
  class JsonBareObjectLexer(JsonLexer):
@@ -514,28 +636,21 @@ class JsonBareObjectLexer(JsonLexer):
514
636
  For JSON data structures (with missing object curly braces).
515
637
 
516
638
  .. versionadded:: 2.2
639
+
640
+ .. deprecated:: 2.8.0
641
+
642
+ Behaves the same as `JsonLexer` now.
517
643
  """
518
644
 
519
645
  name = 'JSONBareObject'
520
- aliases = ['json-object']
646
+ aliases = []
521
647
  filenames = []
522
- mimetypes = ['application/json-object']
523
-
524
- tokens = {
525
- 'root': [
526
- (r'\}', Error),
527
- include('objectvalue'),
528
- ],
529
- 'objectattribute': [
530
- (r'\}', Error),
531
- inherit,
532
- ],
533
- }
648
+ mimetypes = []
534
649
 
535
650
 
536
651
  class JsonLdLexer(JsonLexer):
537
652
  """
538
- For `JSON-LD <http://json-ld.org/>`_ linked data.
653
+ For `JSON-LD <https://json-ld.org/>`_ linked data.
539
654
 
540
655
  .. versionadded:: 2.0
541
656
  """
@@ -545,11 +660,38 @@ class JsonLdLexer(JsonLexer):
545
660
  filenames = ['*.jsonld']
546
661
  mimetypes = ['application/ld+json']
547
662
 
548
- tokens = {
549
- 'objectvalue': [
550
- (r'"@(context|id|value|language|type|container|list|set|'
551
- r'reverse|index|base|vocab|graph)"', Name.Decorator,
552
- 'objectattribute'),
553
- inherit,
554
- ],
663
+ json_ld_keywords = {
664
+ '"@%s"' % keyword
665
+ for keyword in (
666
+ 'base',
667
+ 'container',
668
+ 'context',
669
+ 'direction',
670
+ 'graph',
671
+ 'id',
672
+ 'import',
673
+ 'included',
674
+ 'index',
675
+ 'json',
676
+ 'language',
677
+ 'list',
678
+ 'nest',
679
+ 'none',
680
+ 'prefix',
681
+ 'propagate',
682
+ 'protected',
683
+ 'reverse',
684
+ 'set',
685
+ 'type',
686
+ 'value',
687
+ 'version',
688
+ 'vocab',
689
+ )
555
690
  }
691
+
692
+ def get_tokens_unprocessed(self, text):
693
+ for start, token, value in super().get_tokens_unprocessed(text):
694
+ if token is Name.Tag and value in self.json_ld_keywords:
695
+ yield start, Name.Decorator, value
696
+ else:
697
+ yield start, token, value