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,15 +1,15 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.stata
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for Stata
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 RegexLexer, include, words
11
+ import re
12
+ from pygments.lexer import RegexLexer, default, include, words
13
13
  from pygments.token import Comment, Keyword, Name, Number, \
14
14
  String, Text, Operator
15
15
 
@@ -26,63 +26,125 @@ class StataLexer(RegexLexer):
26
26
  """
27
27
  # Syntax based on
28
28
  # - http://fmwww.bc.edu/RePEc/bocode/s/synlightlist.ado
29
- # - http://github.com/isagalaev/highlight.js/blob/master/src/languages/stata.js
30
- # - http://github.com/jpitblado/vim-stata/blob/master/syntax/stata.vim
29
+ # - https://github.com/isagalaev/highlight.js/blob/master/src/languages/stata.js
30
+ # - https://github.com/jpitblado/vim-stata/blob/master/syntax/stata.vim
31
31
 
32
32
  name = 'Stata'
33
33
  aliases = ['stata', 'do']
34
34
  filenames = ['*.do', '*.ado']
35
35
  mimetypes = ['text/x-stata', 'text/stata', 'application/x-stata']
36
+ flags = re.MULTILINE | re.DOTALL
36
37
 
37
38
  tokens = {
38
39
  'root': [
39
40
  include('comments'),
40
- include('vars-strings'),
41
+ include('strings'),
42
+ include('macros'),
41
43
  include('numbers'),
42
44
  include('keywords'),
45
+ include('operators'),
46
+ include('format'),
43
47
  (r'.', Text),
44
48
  ],
45
- # Global and local macros; regular and special strings
46
- 'vars-strings': [
47
- (r'\$[\w{]', Name.Variable.Global, 'var_validglobal'),
48
- (r'`\w{0,31}\'', Name.Variable),
49
- (r'"', String, 'string_dquote'),
50
- (r'`"', String, 'string_mquote'),
51
- ],
52
- # For either string type, highlight macros as macros
53
- 'string_dquote': [
54
- (r'"', String, '#pop'),
55
- (r'\\\\|\\"|\\\n', String.Escape),
56
- (r'\$', Name.Variable.Global, 'var_validglobal'),
57
- (r'`', Name.Variable, 'var_validlocal'),
58
- (r'[^$`"\\]+', String),
59
- (r'[$"\\]', String),
60
- ],
61
- 'string_mquote': [
49
+ # Comments are a complicated beast in Stata because they can be
50
+ # nested and there are a few corner cases with that. See:
51
+ # - github.com/kylebarron/language-stata/issues/90
52
+ # - statalist.org/forums/forum/general-stata-discussion/general/1448244
53
+ 'comments': [
54
+ (r'(^//|(?<=\s)//)(?!/)', Comment.Single, 'comments-double-slash'),
55
+ (r'^\s*\*', Comment.Single, 'comments-star'),
56
+ (r'/\*', Comment.Multiline, 'comments-block'),
57
+ (r'(^///|(?<=\s)///)', Comment.Special, 'comments-triple-slash')
58
+ ],
59
+ 'comments-block': [
60
+ (r'/\*', Comment.Multiline, '#push'),
61
+ # this ends and restarts a comment block. but need to catch this so
62
+ # that it doesn\'t start _another_ level of comment blocks
63
+ (r'\*/\*', Comment.Multiline),
64
+ (r'(\*/\s+\*(?!/)[^\n]*)|(\*/)', Comment.Multiline, '#pop'),
65
+ # Match anything else as a character inside the comment
66
+ (r'.', Comment.Multiline),
67
+ ],
68
+ 'comments-star': [
69
+ (r'///.*?\n', Comment.Single,
70
+ ('#pop', 'comments-triple-slash')),
71
+ (r'(^//|(?<=\s)//)(?!/)', Comment.Single,
72
+ ('#pop', 'comments-double-slash')),
73
+ (r'/\*', Comment.Multiline, 'comments-block'),
74
+ (r'.(?=\n)', Comment.Single, '#pop'),
75
+ (r'.', Comment.Single),
76
+ ],
77
+ 'comments-triple-slash': [
78
+ (r'\n', Comment.Special, '#pop'),
79
+ # A // breaks out of a comment for the rest of the line
80
+ (r'//.*?(?=\n)', Comment.Single, '#pop'),
81
+ (r'.', Comment.Special),
82
+ ],
83
+ 'comments-double-slash': [
84
+ (r'\n', Text, '#pop'),
85
+ (r'.', Comment.Single),
86
+ ],
87
+ # `"compound string"' and regular "string"; note the former are
88
+ # nested.
89
+ 'strings': [
90
+ (r'`"', String, 'string-compound'),
91
+ (r'(?<!`)"', String, 'string-regular'),
92
+ ],
93
+ 'string-compound': [
94
+ (r'`"', String, '#push'),
62
95
  (r'"\'', String, '#pop'),
63
- (r'\\\\|\\"|\\\n', String.Escape),
64
- (r'\$', Name.Variable.Global, 'var_validglobal'),
65
- (r'`', Name.Variable, 'var_validlocal'),
66
- (r'[^$`"\\]+', String),
67
- (r'[$"\\]', String),
68
- ],
69
- 'var_validglobal': [
70
- (r'\{\w{0,32}\}', Name.Variable.Global, '#pop'),
71
- (r'\w{1,32}', Name.Variable.Global, '#pop'),
96
+ (r'\\\\|\\"|\\\$|\\`|\\\n', String.Escape),
97
+ include('macros'),
98
+ (r'.', String)
72
99
  ],
73
- 'var_validlocal': [
74
- (r'\w{0,31}\'', Name.Variable, '#pop'),
100
+ 'string-regular': [
101
+ (r'(")(?!\')|(?=\n)', String, '#pop'),
102
+ (r'\\\\|\\"|\\\$|\\`|\\\n', String.Escape),
103
+ include('macros'),
104
+ (r'.', String)
75
105
  ],
76
- # * only OK at line start, // OK anywhere
77
- 'comments': [
78
- (r'^\s*\*.*$', Comment),
79
- (r'//.*', Comment.Single),
80
- (r'/\*.*?\*/', Comment.Multiline),
81
- (r'/[*](.|\n)*?[*]/', Comment.Multiline),
106
+ # A local is usually
107
+ # `\w{0,31}'
108
+ # `:extended macro'
109
+ # `=expression'
110
+ # `[rsen](results)'
111
+ # `(++--)scalar(++--)'
112
+ #
113
+ # However, there are all sorts of weird rules wrt edge
114
+ # cases. Instead of writing 27 exceptions, anything inside
115
+ # `' is a local.
116
+ #
117
+ # A global is more restricted, so we do follow rules. Note only
118
+ # locals explicitly enclosed ${} can be nested.
119
+ 'macros': [
120
+ (r'\$(\{|(?=[$`]))', Name.Variable.Global, 'macro-global-nested'),
121
+ (r'\$', Name.Variable.Global, 'macro-global-name'),
122
+ (r'`', Name.Variable, 'macro-local'),
123
+ ],
124
+ 'macro-local': [
125
+ (r'`', Name.Variable, '#push'),
126
+ (r"'", Name.Variable, '#pop'),
127
+ (r'\$(\{|(?=[$`]))', Name.Variable.Global, 'macro-global-nested'),
128
+ (r'\$', Name.Variable.Global, 'macro-global-name'),
129
+ (r'.', Name.Variable), # fallback
130
+ ],
131
+ 'macro-global-nested': [
132
+ (r'\$(\{|(?=[$`]))', Name.Variable.Global, '#push'),
133
+ (r'\}', Name.Variable.Global, '#pop'),
134
+ (r'\$', Name.Variable.Global, 'macro-global-name'),
135
+ (r'`', Name.Variable, 'macro-local'),
136
+ (r'\w', Name.Variable.Global), # fallback
137
+ default('#pop'),
138
+ ],
139
+ 'macro-global-name': [
140
+ (r'\$(\{|(?=[$`]))', Name.Variable.Global, 'macro-global-nested', '#pop'),
141
+ (r'\$', Name.Variable.Global, 'macro-global-name', '#pop'),
142
+ (r'`', Name.Variable, 'macro-local', '#pop'),
143
+ (r'\w{1,32}', Name.Variable.Global, '#pop'),
82
144
  ],
83
145
  # Built in functions and statements
84
146
  'keywords': [
85
- (words(builtins_functions, prefix = r'\b', suffix = r'\('),
147
+ (words(builtins_functions, prefix = r'\b', suffix = r'(?=\()'),
86
148
  Name.Function),
87
149
  (words(builtins_base, prefix = r'(^\s*|\s)', suffix = r'\b'),
88
150
  Keyword),
@@ -100,9 +162,9 @@ class StataLexer(RegexLexer):
100
162
  ],
101
163
  # Stata formats
102
164
  'format': [
103
- (r'%-?\d{1,2}(\.\d{1,2})?[gfe]c?', Name.Variable),
104
- (r'%(21x|16H|16L|8H|8L)', Name.Variable),
105
- (r'%-?(tc|tC|td|tw|tm|tq|th|ty|tg).{0,32}', Name.Variable),
106
- (r'%[-~]?\d{1,4}s', Name.Variable),
165
+ (r'%-?\d{1,2}(\.\d{1,2})?[gfe]c?', Name.Other),
166
+ (r'%(21x|16H|16L|8H|8L)', Name.Other),
167
+ (r'%-?(tc|tC|td|tw|tm|tq|th|ty|tg)\S{0,32}', Name.Other),
168
+ (r'%[-~]?\d{1,4}s', Name.Other),
107
169
  ]
108
170
  }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.supercollider
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for SuperCollider
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
 
@@ -84,7 +83,12 @@ class SuperColliderLexer(RegexLexer):
84
83
  (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
85
84
  (r'0x[0-9a-fA-F]+', Number.Hex),
86
85
  (r'[0-9]+', Number.Integer),
87
- (r'"(\\\\|\\"|[^"])*"', String.Double),
88
- (r"'(\\\\|\\'|[^'])*'", String.Single),
86
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
87
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
89
88
  ]
90
89
  }
90
+
91
+ def analyse_text(text):
92
+ """We're searching for a common function and a unique keyword here."""
93
+ if 'SinOsc' in text or 'thisFunctionDef' in text:
94
+ return 0.1
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.tcl
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Tcl and 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,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.templates
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for various template engines' markup.
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
 
@@ -179,21 +178,21 @@ class SmartyLexer(RegexLexer):
179
178
  (r'(true|false|null)\b', Keyword.Constant),
180
179
  (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
181
180
  r"0[xX][0-9a-fA-F]+[Ll]?", Number),
182
- (r'"(\\\\|\\"|[^"])*"', String.Double),
183
- (r"'(\\\\|\\'|[^'])*'", String.Single),
181
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
182
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
184
183
  (r'[a-zA-Z_]\w*', Name.Attribute)
185
184
  ]
186
185
  }
187
186
 
188
187
  def analyse_text(text):
189
188
  rv = 0.0
190
- if re.search('\{if\s+.*?\}.*?\{/if\}', text):
189
+ if re.search(r'\{if\s+.*?\}.*?\{/if\}', text):
191
190
  rv += 0.15
192
- if re.search('\{include\s+file=.*?\}', text):
191
+ if re.search(r'\{include\s+file=.*?\}', text):
193
192
  rv += 0.15
194
- if re.search('\{foreach\s+.*?\}.*?\{/foreach\}', text):
193
+ if re.search(r'\{foreach\s+.*?\}.*?\{/foreach\}', text):
195
194
  rv += 0.15
196
- if re.search('\{\$.*?\}', text):
195
+ if re.search(r'\{\$.*?\}', text):
197
196
  rv += 0.01
198
197
  return rv
199
198
 
@@ -226,7 +225,7 @@ class VelocityLexer(RegexLexer):
226
225
  'directiveparams'),
227
226
  (r'(#\{?)(' + identifier + r')(\}|\b)',
228
227
  bygroups(Comment.Preproc, Name.Function, Comment.Preproc)),
229
- (r'\$\{?', Punctuation, 'variable')
228
+ (r'\$!?\{?', Punctuation, 'variable')
230
229
  ],
231
230
  'variable': [
232
231
  (identifier, Name.Variable),
@@ -249,11 +248,11 @@ class VelocityLexer(RegexLexer):
249
248
  (r'\]', Operator, '#pop')
250
249
  ],
251
250
  'funcparams': [
252
- (r'\$\{?', Punctuation, 'variable'),
251
+ (r'\$!?\{?', Punctuation, 'variable'),
253
252
  (r'\s+', Text),
254
253
  (r'[,:]', Punctuation),
255
- (r'"(\\\\|\\"|[^"])*"', String.Double),
256
- (r"'(\\\\|\\'|[^'])*'", String.Single),
254
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
255
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
257
256
  (r"0[xX][0-9a-fA-F]+[Ll]?", Number),
258
257
  (r"\b[0-9]+\b", Number),
259
258
  (r'(true|false|null)\b', Keyword.Constant),
@@ -274,7 +273,7 @@ class VelocityLexer(RegexLexer):
274
273
  rv += 0.15
275
274
  if re.search(r'#\{?foreach\}?\(.+?\).*?#\{?end\}?', text):
276
275
  rv += 0.15
277
- if re.search(r'\$\{?[a-zA-Z_]\w*(\([^)]*\))?'
276
+ if re.search(r'\$!?\{?[a-zA-Z_]\w*(\([^)]*\))?'
278
277
  r'(\.\w+(\([^)]*\))?)*\}?', text):
279
278
  rv += 0.01
280
279
  return rv
@@ -293,8 +292,7 @@ class VelocityHtmlLexer(DelegatingLexer):
293
292
  mimetypes = ['text/html+velocity']
294
293
 
295
294
  def __init__(self, **options):
296
- super(VelocityHtmlLexer, self).__init__(HtmlLexer, VelocityLexer,
297
- **options)
295
+ super().__init__(HtmlLexer, VelocityLexer, **options)
298
296
 
299
297
 
300
298
  class VelocityXmlLexer(DelegatingLexer):
@@ -310,8 +308,7 @@ class VelocityXmlLexer(DelegatingLexer):
310
308
  mimetypes = ['application/xml+velocity']
311
309
 
312
310
  def __init__(self, **options):
313
- super(VelocityXmlLexer, self).__init__(XmlLexer, VelocityLexer,
314
- **options)
311
+ super().__init__(XmlLexer, VelocityLexer, **options)
315
312
 
316
313
  def analyse_text(text):
317
314
  rv = VelocityLexer.analyse_text(text) - 0.01
@@ -323,7 +320,7 @@ class VelocityXmlLexer(DelegatingLexer):
323
320
  class DjangoLexer(RegexLexer):
324
321
  """
325
322
  Generic `django <http://www.djangoproject.com/documentation/templates/>`_
326
- and `jinja <http://wsgiarea.pocoo.org/jinja/>`_ template lexer.
323
+ and `jinja <https://jinja.pocoo.org/jinja/>`_ template lexer.
327
324
 
328
325
  It just highlights django/jinja code between the preprocessor directives,
329
326
  other data is left untouched by the lexer.
@@ -340,7 +337,7 @@ class DjangoLexer(RegexLexer):
340
337
  (r'[^{]+', Other),
341
338
  (r'\{\{', Comment.Preproc, 'var'),
342
339
  # jinja/django comments
343
- (r'\{[*#].*?[*#]\}', Comment),
340
+ (r'\{#.*?#\}', Comment),
344
341
  # django comments
345
342
  (r'(\{%)(-?\s*)(comment)(\s*-?)(%\})(.*?)'
346
343
  r'(\{%)(-?\s*)(endcomment)(\s*-?)(%\})',
@@ -373,9 +370,9 @@ class DjangoLexer(RegexLexer):
373
370
  (r'(loop|block|super|forloop)\b', Name.Builtin),
374
371
  (r'[a-zA-Z_][\w-]*', Name.Variable),
375
372
  (r'\.\w+', Name.Variable),
376
- (r':?"(\\\\|\\"|[^"])*"', String.Double),
377
- (r":?'(\\\\|\\'|[^'])*'", String.Single),
378
- (r'([{}()\[\]+\-*/,:~]|[><=]=?)', Operator),
373
+ (r':?"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
374
+ (r":?'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
375
+ (r'([{}()\[\]+\-*/%,:~]|[><=]=?|!=)', Operator),
379
376
  (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
380
377
  r"0[xX][0-9a-fA-F]+[Ll]?", Number),
381
378
  ],
@@ -421,18 +418,18 @@ class MyghtyLexer(RegexLexer):
421
418
  tokens = {
422
419
  'root': [
423
420
  (r'\s+', Text),
424
- (r'(<%(?:def|method))(\s*)(.*?)(>)(.*?)(</%\2\s*>)(?s)',
421
+ (r'(?s)(<%(?:def|method))(\s*)(.*?)(>)(.*?)(</%\2\s*>)',
425
422
  bygroups(Name.Tag, Text, Name.Function, Name.Tag,
426
423
  using(this), Name.Tag)),
427
- (r'(<%\w+)(.*?)(>)(.*?)(</%\2\s*>)(?s)',
424
+ (r'(?s)(<%\w+)(.*?)(>)(.*?)(</%\2\s*>)',
428
425
  bygroups(Name.Tag, Name.Function, Name.Tag,
429
426
  using(PythonLexer), Name.Tag)),
430
427
  (r'(<&[^|])(.*?)(,.*?)?(&>)',
431
428
  bygroups(Name.Tag, Name.Function, using(PythonLexer), Name.Tag)),
432
- (r'(<&\|)(.*?)(,.*?)?(&>)(?s)',
429
+ (r'(?s)(<&\|)(.*?)(,.*?)?(&>)',
433
430
  bygroups(Name.Tag, Name.Function, using(PythonLexer), Name.Tag)),
434
431
  (r'</&>', Name.Tag),
435
- (r'(<%!?)(.*?)(%>)(?s)',
432
+ (r'(?s)(<%!?)(.*?)(%>)',
436
433
  bygroups(Name.Tag, using(PythonLexer), Name.Tag)),
437
434
  (r'(?<=^)#[^\n]*(\n|\Z)', Comment),
438
435
  (r'(?<=^)(%)([^\n]*)(\n|\Z)',
@@ -464,8 +461,7 @@ class MyghtyHtmlLexer(DelegatingLexer):
464
461
  mimetypes = ['text/html+myghty']
465
462
 
466
463
  def __init__(self, **options):
467
- super(MyghtyHtmlLexer, self).__init__(HtmlLexer, MyghtyLexer,
468
- **options)
464
+ super().__init__(HtmlLexer, MyghtyLexer, **options)
469
465
 
470
466
 
471
467
  class MyghtyXmlLexer(DelegatingLexer):
@@ -481,8 +477,7 @@ class MyghtyXmlLexer(DelegatingLexer):
481
477
  mimetypes = ['application/xml+myghty']
482
478
 
483
479
  def __init__(self, **options):
484
- super(MyghtyXmlLexer, self).__init__(XmlLexer, MyghtyLexer,
485
- **options)
480
+ super().__init__(XmlLexer, MyghtyLexer, **options)
486
481
 
487
482
 
488
483
  class MyghtyJavascriptLexer(DelegatingLexer):
@@ -500,8 +495,7 @@ class MyghtyJavascriptLexer(DelegatingLexer):
500
495
  'text/javascript+mygthy']
501
496
 
502
497
  def __init__(self, **options):
503
- super(MyghtyJavascriptLexer, self).__init__(JavascriptLexer,
504
- MyghtyLexer, **options)
498
+ super().__init__(JavascriptLexer, MyghtyLexer, **options)
505
499
 
506
500
 
507
501
  class MyghtyCssLexer(DelegatingLexer):
@@ -517,8 +511,7 @@ class MyghtyCssLexer(DelegatingLexer):
517
511
  mimetypes = ['text/css+myghty']
518
512
 
519
513
  def __init__(self, **options):
520
- super(MyghtyCssLexer, self).__init__(CssLexer, MyghtyLexer,
521
- **options)
514
+ super().__init__(CssLexer, MyghtyLexer, **options)
522
515
 
523
516
 
524
517
  class MasonLexer(RegexLexer):
@@ -538,20 +531,19 @@ class MasonLexer(RegexLexer):
538
531
  tokens = {
539
532
  'root': [
540
533
  (r'\s+', Text),
541
- (r'(<%doc>)(.*?)(</%doc>)(?s)',
534
+ (r'(?s)(<%doc>)(.*?)(</%doc>)',
542
535
  bygroups(Name.Tag, Comment.Multiline, Name.Tag)),
543
- (r'(<%(?:def|method))(\s*)(.*?)(>)(.*?)(</%\2\s*>)(?s)',
536
+ (r'(?s)(<%(?:def|method))(\s*)(.*?)(>)(.*?)(</%\2\s*>)',
544
537
  bygroups(Name.Tag, Text, Name.Function, Name.Tag,
545
538
  using(this), Name.Tag)),
546
- (r'(<%\w+)(.*?)(>)(.*?)(</%\2\s*>)(?s)',
547
- bygroups(Name.Tag, Name.Function, Name.Tag,
548
- using(PerlLexer), Name.Tag)),
549
- (r'(<&[^|])(.*?)(,.*?)?(&>)(?s)',
539
+ (r'(?s)(<%(\w+)(.*?)(>))(.*?)(</%\2\s*>)',
540
+ bygroups(Name.Tag, None, None, None, using(PerlLexer), Name.Tag)),
541
+ (r'(?s)(<&[^|])(.*?)(,.*?)?(&>)',
550
542
  bygroups(Name.Tag, Name.Function, using(PerlLexer), Name.Tag)),
551
- (r'(<&\|)(.*?)(,.*?)?(&>)(?s)',
543
+ (r'(?s)(<&\|)(.*?)(,.*?)?(&>)',
552
544
  bygroups(Name.Tag, Name.Function, using(PerlLexer), Name.Tag)),
553
545
  (r'</&>', Name.Tag),
554
- (r'(<%!?)(.*?)(%>)(?s)',
546
+ (r'(?s)(<%!?)(.*?)(%>)',
555
547
  bygroups(Name.Tag, using(PerlLexer), Name.Tag)),
556
548
  (r'(?<=^)#[^\n]*(\n|\Z)', Comment),
557
549
  (r'(?<=^)(%)([^\n]*)(\n|\Z)',
@@ -571,7 +563,7 @@ class MasonLexer(RegexLexer):
571
563
 
572
564
  def analyse_text(text):
573
565
  result = 0.0
574
- if re.search(r'</%(class|doc|init)%>', text) is not None:
566
+ if re.search(r'</%(class|doc|init)>', text) is not None:
575
567
  result = 1.0
576
568
  elif re.search(r'<&.+&>', text, re.DOTALL) is not None:
577
569
  result = 0.11
@@ -607,7 +599,7 @@ class MakoLexer(RegexLexer):
607
599
  (r'(</%)([\w.:]+)(>)',
608
600
  bygroups(Comment.Preproc, Name.Builtin, Comment.Preproc)),
609
601
  (r'<%(?=([\w.:]+))', Comment.Preproc, 'ondeftags'),
610
- (r'(<%(?:!?))(.*?)(%>)(?s)',
602
+ (r'(?s)(<%(?:!?))(.*?)(%>)',
611
603
  bygroups(Comment.Preproc, using(PythonLexer), Comment.Preproc)),
612
604
  (r'(\$\{)(.*?)(\})',
613
605
  bygroups(Comment.Preproc, using(PythonLexer), Comment.Preproc)),
@@ -659,8 +651,7 @@ class MakoHtmlLexer(DelegatingLexer):
659
651
  mimetypes = ['text/html+mako']
660
652
 
661
653
  def __init__(self, **options):
662
- super(MakoHtmlLexer, self).__init__(HtmlLexer, MakoLexer,
663
- **options)
654
+ super().__init__(HtmlLexer, MakoLexer, **options)
664
655
 
665
656
 
666
657
  class MakoXmlLexer(DelegatingLexer):
@@ -676,8 +667,7 @@ class MakoXmlLexer(DelegatingLexer):
676
667
  mimetypes = ['application/xml+mako']
677
668
 
678
669
  def __init__(self, **options):
679
- super(MakoXmlLexer, self).__init__(XmlLexer, MakoLexer,
680
- **options)
670
+ super().__init__(XmlLexer, MakoLexer, **options)
681
671
 
682
672
 
683
673
  class MakoJavascriptLexer(DelegatingLexer):
@@ -695,8 +685,7 @@ class MakoJavascriptLexer(DelegatingLexer):
695
685
  'text/javascript+mako']
696
686
 
697
687
  def __init__(self, **options):
698
- super(MakoJavascriptLexer, self).__init__(JavascriptLexer,
699
- MakoLexer, **options)
688
+ super().__init__(JavascriptLexer, MakoLexer, **options)
700
689
 
701
690
 
702
691
  class MakoCssLexer(DelegatingLexer):
@@ -712,8 +701,7 @@ class MakoCssLexer(DelegatingLexer):
712
701
  mimetypes = ['text/css+mako']
713
702
 
714
703
  def __init__(self, **options):
715
- super(MakoCssLexer, self).__init__(CssLexer, MakoLexer,
716
- **options)
704
+ super().__init__(CssLexer, MakoLexer, **options)
717
705
 
718
706
 
719
707
  # Genshi and Cheetah lexers courtesy of Matt Good.
@@ -759,7 +747,7 @@ class CheetahLexer(RegexLexer):
759
747
  # TODO support other Python syntax like $foo['bar']
760
748
  (r'(\$)([a-zA-Z_][\w.]*\w)',
761
749
  bygroups(Comment.Preproc, using(CheetahPythonLexer))),
762
- (r'(\$\{!?)(.*?)(\})(?s)',
750
+ (r'(?s)(\$\{!?)(.*?)(\})',
763
751
  bygroups(Comment.Preproc, using(CheetahPythonLexer),
764
752
  Comment.Preproc)),
765
753
  (r'''(?sx)
@@ -786,8 +774,7 @@ class CheetahHtmlLexer(DelegatingLexer):
786
774
  mimetypes = ['text/html+cheetah', 'text/html+spitfire']
787
775
 
788
776
  def __init__(self, **options):
789
- super(CheetahHtmlLexer, self).__init__(HtmlLexer, CheetahLexer,
790
- **options)
777
+ super().__init__(HtmlLexer, CheetahLexer, **options)
791
778
 
792
779
 
793
780
  class CheetahXmlLexer(DelegatingLexer):
@@ -801,8 +788,7 @@ class CheetahXmlLexer(DelegatingLexer):
801
788
  mimetypes = ['application/xml+cheetah', 'application/xml+spitfire']
802
789
 
803
790
  def __init__(self, **options):
804
- super(CheetahXmlLexer, self).__init__(XmlLexer, CheetahLexer,
805
- **options)
791
+ super().__init__(XmlLexer, CheetahLexer, **options)
806
792
 
807
793
 
808
794
  class CheetahJavascriptLexer(DelegatingLexer):
@@ -822,8 +808,7 @@ class CheetahJavascriptLexer(DelegatingLexer):
822
808
  'text/javascript+spitfire']
823
809
 
824
810
  def __init__(self, **options):
825
- super(CheetahJavascriptLexer, self).__init__(JavascriptLexer,
826
- CheetahLexer, **options)
811
+ super().__init__(JavascriptLexer, CheetahLexer, **options)
827
812
 
828
813
 
829
814
  class GenshiTextLexer(RegexLexer):
@@ -937,14 +922,13 @@ class HtmlGenshiLexer(DelegatingLexer):
937
922
  mimetypes = ['text/html+genshi']
938
923
 
939
924
  def __init__(self, **options):
940
- super(HtmlGenshiLexer, self).__init__(HtmlLexer, GenshiMarkupLexer,
941
- **options)
925
+ super().__init__(HtmlLexer, GenshiMarkupLexer, **options)
942
926
 
943
927
  def analyse_text(text):
944
928
  rv = 0.0
945
- if re.search('\$\{.*?\}', text) is not None:
929
+ if re.search(r'\$\{.*?\}', text) is not None:
946
930
  rv += 0.2
947
- if re.search('py:(.*?)=["\']', text) is not None:
931
+ if re.search(r'py:(.*?)=["\']', text) is not None:
948
932
  rv += 0.2
949
933
  return rv + HtmlLexer.analyse_text(text) - 0.01
950
934
 
@@ -962,14 +946,13 @@ class GenshiLexer(DelegatingLexer):
962
946
  mimetypes = ['application/x-genshi', 'application/x-kid']
963
947
 
964
948
  def __init__(self, **options):
965
- super(GenshiLexer, self).__init__(XmlLexer, GenshiMarkupLexer,
966
- **options)
949
+ super().__init__(XmlLexer, GenshiMarkupLexer, **options)
967
950
 
968
951
  def analyse_text(text):
969
952
  rv = 0.0
970
- if re.search('\$\{.*?\}', text) is not None:
953
+ if re.search(r'\$\{.*?\}', text) is not None:
971
954
  rv += 0.2
972
- if re.search('py:(.*?)=["\']', text) is not None:
955
+ if re.search(r'py:(.*?)=["\']', text) is not None:
973
956
  rv += 0.2
974
957
  return rv + XmlLexer.analyse_text(text) - 0.01
975
958
 
@@ -988,9 +971,7 @@ class JavascriptGenshiLexer(DelegatingLexer):
988
971
  'text/javascript+genshi']
989
972
 
990
973
  def __init__(self, **options):
991
- super(JavascriptGenshiLexer, self).__init__(JavascriptLexer,
992
- GenshiTextLexer,
993
- **options)
974
+ super().__init__(JavascriptLexer, GenshiTextLexer, **options)
994
975
 
995
976
  def analyse_text(text):
996
977
  return GenshiLexer.analyse_text(text) - 0.05
@@ -1007,8 +988,7 @@ class CssGenshiLexer(DelegatingLexer):
1007
988
  mimetypes = ['text/css+genshi']
1008
989
 
1009
990
  def __init__(self, **options):
1010
- super(CssGenshiLexer, self).__init__(CssLexer, GenshiTextLexer,
1011
- **options)
991
+ super().__init__(CssLexer, GenshiTextLexer, **options)
1012
992
 
1013
993
  def analyse_text(text):
1014
994
  return GenshiLexer.analyse_text(text) - 0.05
@@ -1029,7 +1009,7 @@ class RhtmlLexer(DelegatingLexer):
1029
1009
  mimetypes = ['text/html+ruby']
1030
1010
 
1031
1011
  def __init__(self, **options):
1032
- super(RhtmlLexer, self).__init__(HtmlLexer, ErbLexer, **options)
1012
+ super().__init__(HtmlLexer, ErbLexer, **options)
1033
1013
 
1034
1014
  def analyse_text(text):
1035
1015
  rv = ErbLexer.analyse_text(text) - 0.01
@@ -1051,7 +1031,7 @@ class XmlErbLexer(DelegatingLexer):
1051
1031
  mimetypes = ['application/xml+ruby']
1052
1032
 
1053
1033
  def __init__(self, **options):
1054
- super(XmlErbLexer, self).__init__(XmlLexer, ErbLexer, **options)
1034
+ super().__init__(XmlLexer, ErbLexer, **options)
1055
1035
 
1056
1036
  def analyse_text(text):
1057
1037
  rv = ErbLexer.analyse_text(text) - 0.01
@@ -1071,7 +1051,7 @@ class CssErbLexer(DelegatingLexer):
1071
1051
  mimetypes = ['text/css+ruby']
1072
1052
 
1073
1053
  def __init__(self, **options):
1074
- super(CssErbLexer, self).__init__(CssLexer, ErbLexer, **options)
1054
+ super().__init__(CssLexer, ErbLexer, **options)
1075
1055
 
1076
1056
  def analyse_text(text):
1077
1057
  return ErbLexer.analyse_text(text) - 0.05
@@ -1091,8 +1071,7 @@ class JavascriptErbLexer(DelegatingLexer):
1091
1071
  'text/javascript+ruby']
1092
1072
 
1093
1073
  def __init__(self, **options):
1094
- super(JavascriptErbLexer, self).__init__(JavascriptLexer, ErbLexer,
1095
- **options)
1074
+ super().__init__(JavascriptLexer, ErbLexer, **options)
1096
1075
 
1097
1076
  def analyse_text(text):
1098
1077
  return ErbLexer.analyse_text(text) - 0.05
@@ -1115,7 +1094,7 @@ class HtmlPhpLexer(DelegatingLexer):
1115
1094
  'application/x-httpd-php4', 'application/x-httpd-php5']
1116
1095
 
1117
1096
  def __init__(self, **options):
1118
- super(HtmlPhpLexer, self).__init__(HtmlLexer, PhpLexer, **options)
1097
+ super().__init__(HtmlLexer, PhpLexer, **options)
1119
1098
 
1120
1099
  def analyse_text(text):
1121
1100
  rv = PhpLexer.analyse_text(text) - 0.01
@@ -1135,7 +1114,7 @@ class XmlPhpLexer(DelegatingLexer):
1135
1114
  mimetypes = ['application/xml+php']
1136
1115
 
1137
1116
  def __init__(self, **options):
1138
- super(XmlPhpLexer, self).__init__(XmlLexer, PhpLexer, **options)
1117
+ super().__init__(XmlLexer, PhpLexer, **options)
1139
1118
 
1140
1119
  def analyse_text(text):
1141
1120
  rv = PhpLexer.analyse_text(text) - 0.01
@@ -1155,7 +1134,7 @@ class CssPhpLexer(DelegatingLexer):
1155
1134
  mimetypes = ['text/css+php']
1156
1135
 
1157
1136
  def __init__(self, **options):
1158
- super(CssPhpLexer, self).__init__(CssLexer, PhpLexer, **options)
1137
+ super().__init__(CssLexer, PhpLexer, **options)
1159
1138
 
1160
1139
  def analyse_text(text):
1161
1140
  return PhpLexer.analyse_text(text) - 0.05
@@ -1175,8 +1154,7 @@ class JavascriptPhpLexer(DelegatingLexer):
1175
1154
  'text/javascript+php']
1176
1155
 
1177
1156
  def __init__(self, **options):
1178
- super(JavascriptPhpLexer, self).__init__(JavascriptLexer, PhpLexer,
1179
- **options)
1157
+ super().__init__(JavascriptLexer, PhpLexer, **options)
1180
1158
 
1181
1159
  def analyse_text(text):
1182
1160
  return PhpLexer.analyse_text(text)
@@ -1196,7 +1174,7 @@ class HtmlSmartyLexer(DelegatingLexer):
1196
1174
  mimetypes = ['text/html+smarty']
1197
1175
 
1198
1176
  def __init__(self, **options):
1199
- super(HtmlSmartyLexer, self).__init__(HtmlLexer, SmartyLexer, **options)
1177
+ super().__init__(HtmlLexer, SmartyLexer, **options)
1200
1178
 
1201
1179
  def analyse_text(text):
1202
1180
  rv = SmartyLexer.analyse_text(text) - 0.01
@@ -1217,7 +1195,7 @@ class XmlSmartyLexer(DelegatingLexer):
1217
1195
  mimetypes = ['application/xml+smarty']
1218
1196
 
1219
1197
  def __init__(self, **options):
1220
- super(XmlSmartyLexer, self).__init__(XmlLexer, SmartyLexer, **options)
1198
+ super().__init__(XmlLexer, SmartyLexer, **options)
1221
1199
 
1222
1200
  def analyse_text(text):
1223
1201
  rv = SmartyLexer.analyse_text(text) - 0.01
@@ -1238,7 +1216,7 @@ class CssSmartyLexer(DelegatingLexer):
1238
1216
  mimetypes = ['text/css+smarty']
1239
1217
 
1240
1218
  def __init__(self, **options):
1241
- super(CssSmartyLexer, self).__init__(CssLexer, SmartyLexer, **options)
1219
+ super().__init__(CssLexer, SmartyLexer, **options)
1242
1220
 
1243
1221
  def analyse_text(text):
1244
1222
  return SmartyLexer.analyse_text(text) - 0.05
@@ -1258,8 +1236,7 @@ class JavascriptSmartyLexer(DelegatingLexer):
1258
1236
  'text/javascript+smarty']
1259
1237
 
1260
1238
  def __init__(self, **options):
1261
- super(JavascriptSmartyLexer, self).__init__(JavascriptLexer, SmartyLexer,
1262
- **options)
1239
+ super().__init__(JavascriptLexer, SmartyLexer, **options)
1263
1240
 
1264
1241
  def analyse_text(text):
1265
1242
  return SmartyLexer.analyse_text(text) - 0.05
@@ -1279,7 +1256,7 @@ class HtmlDjangoLexer(DelegatingLexer):
1279
1256
  mimetypes = ['text/html+django', 'text/html+jinja']
1280
1257
 
1281
1258
  def __init__(self, **options):
1282
- super(HtmlDjangoLexer, self).__init__(HtmlLexer, DjangoLexer, **options)
1259
+ super().__init__(HtmlLexer, DjangoLexer, **options)
1283
1260
 
1284
1261
  def analyse_text(text):
1285
1262
  rv = DjangoLexer.analyse_text(text) - 0.01
@@ -1300,7 +1277,7 @@ class XmlDjangoLexer(DelegatingLexer):
1300
1277
  mimetypes = ['application/xml+django', 'application/xml+jinja']
1301
1278
 
1302
1279
  def __init__(self, **options):
1303
- super(XmlDjangoLexer, self).__init__(XmlLexer, DjangoLexer, **options)
1280
+ super().__init__(XmlLexer, DjangoLexer, **options)
1304
1281
 
1305
1282
  def analyse_text(text):
1306
1283
  rv = DjangoLexer.analyse_text(text) - 0.01
@@ -1321,7 +1298,7 @@ class CssDjangoLexer(DelegatingLexer):
1321
1298
  mimetypes = ['text/css+django', 'text/css+jinja']
1322
1299
 
1323
1300
  def __init__(self, **options):
1324
- super(CssDjangoLexer, self).__init__(CssLexer, DjangoLexer, **options)
1301
+ super().__init__(CssLexer, DjangoLexer, **options)
1325
1302
 
1326
1303
  def analyse_text(text):
1327
1304
  return DjangoLexer.analyse_text(text) - 0.05
@@ -1345,8 +1322,7 @@ class JavascriptDjangoLexer(DelegatingLexer):
1345
1322
  'text/javascript+jinja']
1346
1323
 
1347
1324
  def __init__(self, **options):
1348
- super(JavascriptDjangoLexer, self).__init__(JavascriptLexer, DjangoLexer,
1349
- **options)
1325
+ super().__init__(JavascriptLexer, DjangoLexer, **options)
1350
1326
 
1351
1327
  def analyse_text(text):
1352
1328
  return DjangoLexer.analyse_text(text) - 0.05
@@ -1389,7 +1365,7 @@ class JspLexer(DelegatingLexer):
1389
1365
  mimetypes = ['application/x-jsp']
1390
1366
 
1391
1367
  def __init__(self, **options):
1392
- super(JspLexer, self).__init__(XmlLexer, JspRootLexer, **options)
1368
+ super().__init__(XmlLexer, JspRootLexer, **options)
1393
1369
 
1394
1370
  def analyse_text(text):
1395
1371
  rv = JavaLexer.analyse_text(text) - 0.01
@@ -1428,7 +1404,7 @@ class EvoqueLexer(RegexLexer):
1428
1404
  # see doc for handling first name arg: /directives/evoque/
1429
1405
  # + minor inconsistency: the "name" in e.g. $overlay{name=site_base}
1430
1406
  # should be using(PythonLexer), not passed out as String
1431
- (r'(\$)(evoque|overlay)(\{(%)?)(\s*[#\w\-"\'.]+[^=,%}]+?)?'
1407
+ (r'(\$)(evoque|overlay)(\{(%)?)(\s*[#\w\-"\'.]+)?'
1432
1408
  r'(.*?)((?(4)%)\})',
1433
1409
  bygroups(Punctuation, Name.Builtin, Punctuation, None,
1434
1410
  String, using(PythonLexer), Punctuation)),
@@ -1452,6 +1428,10 @@ class EvoqueLexer(RegexLexer):
1452
1428
  ],
1453
1429
  }
1454
1430
 
1431
+ def analyse_text(text):
1432
+ """Evoque templates use $evoque, which is unique."""
1433
+ if '$evoque' in text:
1434
+ return 1
1455
1435
 
1456
1436
  class EvoqueHtmlLexer(DelegatingLexer):
1457
1437
  """
@@ -1466,8 +1446,10 @@ class EvoqueHtmlLexer(DelegatingLexer):
1466
1446
  mimetypes = ['text/html+evoque']
1467
1447
 
1468
1448
  def __init__(self, **options):
1469
- super(EvoqueHtmlLexer, self).__init__(HtmlLexer, EvoqueLexer,
1470
- **options)
1449
+ super().__init__(HtmlLexer, EvoqueLexer, **options)
1450
+
1451
+ def analyse_text(text):
1452
+ return EvoqueLexer.analyse_text(text)
1471
1453
 
1472
1454
 
1473
1455
  class EvoqueXmlLexer(DelegatingLexer):
@@ -1483,8 +1465,10 @@ class EvoqueXmlLexer(DelegatingLexer):
1483
1465
  mimetypes = ['application/xml+evoque']
1484
1466
 
1485
1467
  def __init__(self, **options):
1486
- super(EvoqueXmlLexer, self).__init__(XmlLexer, EvoqueLexer,
1487
- **options)
1468
+ super().__init__(XmlLexer, EvoqueLexer, **options)
1469
+
1470
+ def analyse_text(text):
1471
+ return EvoqueLexer.analyse_text(text)
1488
1472
 
1489
1473
 
1490
1474
  class ColdfusionLexer(RegexLexer):
@@ -1591,8 +1575,7 @@ class ColdfusionHtmlLexer(DelegatingLexer):
1591
1575
  mimetypes = ['application/x-coldfusion']
1592
1576
 
1593
1577
  def __init__(self, **options):
1594
- super(ColdfusionHtmlLexer, self).__init__(HtmlLexer, ColdfusionMarkupLexer,
1595
- **options)
1578
+ super().__init__(HtmlLexer, ColdfusionMarkupLexer, **options)
1596
1579
 
1597
1580
 
1598
1581
  class ColdfusionCFCLexer(DelegatingLexer):
@@ -1607,8 +1590,7 @@ class ColdfusionCFCLexer(DelegatingLexer):
1607
1590
  mimetypes = []
1608
1591
 
1609
1592
  def __init__(self, **options):
1610
- super(ColdfusionCFCLexer, self).__init__(ColdfusionHtmlLexer, ColdfusionLexer,
1611
- **options)
1593
+ super().__init__(ColdfusionHtmlLexer, ColdfusionLexer, **options)
1612
1594
 
1613
1595
 
1614
1596
  class SspLexer(DelegatingLexer):
@@ -1623,11 +1605,11 @@ class SspLexer(DelegatingLexer):
1623
1605
  mimetypes = ['application/x-ssp']
1624
1606
 
1625
1607
  def __init__(self, **options):
1626
- super(SspLexer, self).__init__(XmlLexer, JspRootLexer, **options)
1608
+ super().__init__(XmlLexer, JspRootLexer, **options)
1627
1609
 
1628
1610
  def analyse_text(text):
1629
1611
  rv = 0.0
1630
- if re.search('val \w+\s*:', text):
1612
+ if re.search(r'val \w+\s*:', text):
1631
1613
  rv += 0.6
1632
1614
  if looks_like_xml(text):
1633
1615
  rv += 0.2
@@ -1670,8 +1652,7 @@ class TeaTemplateLexer(DelegatingLexer):
1670
1652
  mimetypes = ['text/x-tea']
1671
1653
 
1672
1654
  def __init__(self, **options):
1673
- super(TeaTemplateLexer, self).__init__(XmlLexer,
1674
- TeaTemplateRootLexer, **options)
1655
+ super().__init__(XmlLexer, TeaTemplateRootLexer, **options)
1675
1656
 
1676
1657
  def analyse_text(text):
1677
1658
  rv = TeaLangLexer.analyse_text(text) - 0.01
@@ -1701,7 +1682,7 @@ class LassoHtmlLexer(DelegatingLexer):
1701
1682
  'application/x-httpd-lasso[89]']
1702
1683
 
1703
1684
  def __init__(self, **options):
1704
- super(LassoHtmlLexer, self).__init__(HtmlLexer, LassoLexer, **options)
1685
+ super().__init__(HtmlLexer, LassoLexer, **options)
1705
1686
 
1706
1687
  def analyse_text(text):
1707
1688
  rv = LassoLexer.analyse_text(text) - 0.01
@@ -1725,7 +1706,7 @@ class LassoXmlLexer(DelegatingLexer):
1725
1706
  mimetypes = ['application/xml+lasso']
1726
1707
 
1727
1708
  def __init__(self, **options):
1728
- super(LassoXmlLexer, self).__init__(XmlLexer, LassoLexer, **options)
1709
+ super().__init__(XmlLexer, LassoLexer, **options)
1729
1710
 
1730
1711
  def analyse_text(text):
1731
1712
  rv = LassoLexer.analyse_text(text) - 0.01
@@ -1749,11 +1730,11 @@ class LassoCssLexer(DelegatingLexer):
1749
1730
 
1750
1731
  def __init__(self, **options):
1751
1732
  options['requiredelimiters'] = True
1752
- super(LassoCssLexer, self).__init__(CssLexer, LassoLexer, **options)
1733
+ super().__init__(CssLexer, LassoLexer, **options)
1753
1734
 
1754
1735
  def analyse_text(text):
1755
1736
  rv = LassoLexer.analyse_text(text) - 0.05
1756
- if re.search(r'\w+:.+?;', text):
1737
+ if re.search(r'\w+:[^;]+;', text):
1757
1738
  rv += 0.1
1758
1739
  if 'padding:' in text:
1759
1740
  rv += 0.1
@@ -1777,8 +1758,7 @@ class LassoJavascriptLexer(DelegatingLexer):
1777
1758
 
1778
1759
  def __init__(self, **options):
1779
1760
  options['requiredelimiters'] = True
1780
- super(LassoJavascriptLexer, self).__init__(JavascriptLexer, LassoLexer,
1781
- **options)
1761
+ super().__init__(JavascriptLexer, LassoLexer, **options)
1782
1762
 
1783
1763
  def analyse_text(text):
1784
1764
  rv = LassoLexer.analyse_text(text) - 0.05
@@ -1802,27 +1782,27 @@ class HandlebarsLexer(RegexLexer):
1802
1782
  'root': [
1803
1783
  (r'[^{]+', Other),
1804
1784
 
1785
+ # Comment start {{! }} or {{!--
1805
1786
  (r'\{\{!.*\}\}', Comment),
1806
1787
 
1788
+ # HTML Escaping open {{{expression
1807
1789
  (r'(\{\{\{)(\s*)', bygroups(Comment.Special, Text), 'tag'),
1790
+
1791
+ # {{blockOpen {{#blockOpen {{/blockClose with optional tilde ~
1792
+ (r'(\{\{)([#~/]+)([^\s}]*)',
1793
+ bygroups(Comment.Preproc, Number.Attribute, Number.Attribute), 'tag'),
1808
1794
  (r'(\{\{)(\s*)', bygroups(Comment.Preproc, Text), 'tag'),
1809
1795
  ],
1810
1796
 
1811
1797
  'tag': [
1812
1798
  (r'\s+', Text),
1799
+ # HTML Escaping close }}}
1813
1800
  (r'\}\}\}', Comment.Special, '#pop'),
1814
- (r'\}\}', Comment.Preproc, '#pop'),
1815
-
1816
- # Handlebars
1817
- (r'([#/]*)(each|if|unless|else|with|log|in(line)?)', bygroups(Keyword,
1818
- Keyword)),
1819
- (r'#\*inline', Keyword),
1820
-
1821
- # General {{#block}}
1822
- (r'([#/])([\w-]+)', bygroups(Name.Function, Name.Function)),
1801
+ # blockClose}}, includes optional tilde ~
1802
+ (r'(~?)(\}\})', bygroups(Number, Comment.Preproc), '#pop'),
1823
1803
 
1824
1804
  # {{opt=something}}
1825
- (r'([\w-]+)(=)', bygroups(Name.Attribute, Operator)),
1805
+ (r'([^\s}]+)(=)', bygroups(Name.Attribute, Operator)),
1826
1806
 
1827
1807
  # Partials {{> ...}}
1828
1808
  (r'(>)(\s*)(@partial-block)', bygroups(Keyword, Text, Keyword)),
@@ -1845,7 +1825,7 @@ class HandlebarsLexer(RegexLexer):
1845
1825
  include('generic'),
1846
1826
  ],
1847
1827
  'variable': [
1848
- (r'[a-zA-Z][\w-]*', Name.Variable),
1828
+ (r'[()/@a-zA-Z][\w-]*', Name.Variable),
1849
1829
  (r'\.[\w-]+', Name.Variable),
1850
1830
  (r'(this\/|\.\/|(\.\.\/)+)[\w-]+', Name.Variable),
1851
1831
  ],
@@ -1853,8 +1833,8 @@ class HandlebarsLexer(RegexLexer):
1853
1833
  include('variable'),
1854
1834
 
1855
1835
  # borrowed from DjangoLexer
1856
- (r':?"(\\\\|\\"|[^"])*"', String.Double),
1857
- (r":?'(\\\\|\\'|[^'])*'", String.Single),
1836
+ (r':?"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
1837
+ (r":?'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
1858
1838
  (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
1859
1839
  r"0[xX][0-9a-fA-F]+[Ll]?", Number),
1860
1840
  ]
@@ -1875,7 +1855,7 @@ class HandlebarsHtmlLexer(DelegatingLexer):
1875
1855
  mimetypes = ['text/html+handlebars', 'text/x-handlebars-template']
1876
1856
 
1877
1857
  def __init__(self, **options):
1878
- super(HandlebarsHtmlLexer, self).__init__(HtmlLexer, HandlebarsLexer, **options)
1858
+ super().__init__(HtmlLexer, HandlebarsLexer, **options)
1879
1859
 
1880
1860
 
1881
1861
  class YamlJinjaLexer(DelegatingLexer):
@@ -1894,7 +1874,7 @@ class YamlJinjaLexer(DelegatingLexer):
1894
1874
  mimetypes = ['text/x-yaml+jinja', 'text/x-sls']
1895
1875
 
1896
1876
  def __init__(self, **options):
1897
- super(YamlJinjaLexer, self).__init__(YamlLexer, DjangoLexer, **options)
1877
+ super().__init__(YamlLexer, DjangoLexer, **options)
1898
1878
 
1899
1879
 
1900
1880
  class LiquidLexer(RegexLexer):
@@ -1955,7 +1935,7 @@ class LiquidLexer(RegexLexer):
1955
1935
 
1956
1936
  'output': [
1957
1937
  include('whitespace'),
1958
- ('\}\}', Punctuation, '#pop'), # end of output
1938
+ (r'\}\}', Punctuation, '#pop'), # end of output
1959
1939
 
1960
1940
  (r'\|', Punctuation, 'filters')
1961
1941
  ],
@@ -2166,8 +2146,8 @@ class TwigLexer(RegexLexer):
2166
2146
  (_ident_inner, Name.Variable),
2167
2147
  (r'\.' + _ident_inner, Name.Variable),
2168
2148
  (r'\.[0-9]+', Number),
2169
- (r':?"(\\\\|\\"|[^"])*"', String.Double),
2170
- (r":?'(\\\\|\\'|[^'])*'", String.Single),
2149
+ (r':?"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
2150
+ (r":?'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
2171
2151
  (r'([{}()\[\]+\-*/,:~%]|\.\.|\?|:|\*\*|\/\/|!=|[><=]=?)', Operator),
2172
2152
  (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
2173
2153
  r"0[xX][0-9a-fA-F]+[Ll]?", Number),
@@ -2200,7 +2180,7 @@ class TwigHtmlLexer(DelegatingLexer):
2200
2180
  mimetypes = ['text/html+twig']
2201
2181
 
2202
2182
  def __init__(self, **options):
2203
- super(TwigHtmlLexer, self).__init__(HtmlLexer, TwigLexer, **options)
2183
+ super().__init__(HtmlLexer, TwigLexer, **options)
2204
2184
 
2205
2185
 
2206
2186
  class Angular2Lexer(RegexLexer):
@@ -2235,9 +2215,9 @@ class Angular2Lexer(RegexLexer):
2235
2215
 
2236
2216
  # *ngIf="..."; #f="ngForm"
2237
2217
  (r'([*#])([\w:.-]+)(\s*)(=)(\s*)',
2238
- bygroups(Punctuation, Name.Attribute, Punctuation, Operator), 'attr'),
2218
+ bygroups(Punctuation, Name.Attribute, Text, Operator, Text), 'attr'),
2239
2219
  (r'([*#])([\w:.-]+)(\s*)',
2240
- bygroups(Punctuation, Name.Attribute, Punctuation)),
2220
+ bygroups(Punctuation, Name.Attribute, Text)),
2241
2221
  ],
2242
2222
 
2243
2223
  'ngExpression': [
@@ -2246,8 +2226,8 @@ class Angular2Lexer(RegexLexer):
2246
2226
 
2247
2227
  # Literals
2248
2228
  (r':?(true|false)', String.Boolean),
2249
- (r':?"(\\\\|\\"|[^"])*"', String.Double),
2250
- (r":?'(\\\\|\\'|[^'])*'", String.Single),
2229
+ (r':?"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
2230
+ (r":?'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
2251
2231
  (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
2252
2232
  r"0[xX][0-9a-fA-F]+[Ll]?", Number),
2253
2233
 
@@ -2280,4 +2260,4 @@ class Angular2HtmlLexer(DelegatingLexer):
2280
2260
  filenames = ['*.ng2']
2281
2261
 
2282
2262
  def __init__(self, **options):
2283
- super(Angular2HtmlLexer, self).__init__(HtmlLexer, Angular2Lexer, **options)
2263
+ super().__init__(HtmlLexer, Angular2Lexer, **options)