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,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)