pygments.rb 1.2.1 → 2.2.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 (386) 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 +4 -6
  6. data/.rubocop.yml +16 -0
  7. data/CHANGELOG.adoc +137 -0
  8. data/Gemfile +3 -1
  9. data/LICENSE +1 -1
  10. data/README.adoc +159 -0
  11. data/Rakefile +8 -32
  12. data/bench.rb +14 -8
  13. data/lib/pygments.rb +16 -14
  14. data/lib/pygments/lexer.rb +87 -65
  15. data/lib/pygments/mentos.py +23 -110
  16. data/lib/pygments/popen.rb +188 -284
  17. data/lib/pygments/version.rb +2 -2
  18. data/pygments.rb.gemspec +20 -13
  19. data/test/test_pygments.rb +50 -110
  20. data/vendor/pygments-main/{AUTHORS → Pygments-2.8.1.dist-info/AUTHORS} +26 -3
  21. data/vendor/pygments-main/Pygments-2.8.1.dist-info/INSTALLER +1 -0
  22. data/vendor/pygments-main/{LICENSE → Pygments-2.8.1.dist-info/LICENSE} +1 -1
  23. data/vendor/pygments-main/Pygments-2.8.1.dist-info/METADATA +48 -0
  24. data/vendor/pygments-main/Pygments-2.8.1.dist-info/RECORD +494 -0
  25. data/vendor/pygments-main/Pygments-2.8.1.dist-info/REQUESTED +0 -0
  26. data/vendor/pygments-main/Pygments-2.8.1.dist-info/WHEEL +5 -0
  27. data/vendor/pygments-main/Pygments-2.8.1.dist-info/entry_points.txt +3 -0
  28. data/vendor/pygments-main/Pygments-2.8.1.dist-info/top_level.txt +1 -0
  29. data/vendor/pygments-main/bin/pygmentize +8 -0
  30. data/vendor/pygments-main/pygments/__init__.py +6 -12
  31. data/vendor/pygments-main/pygments/__main__.py +17 -0
  32. data/vendor/pygments-main/pygments/cmdline.py +213 -184
  33. data/vendor/pygments-main/pygments/console.py +6 -10
  34. data/vendor/pygments-main/pygments/filter.py +4 -7
  35. data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
  36. data/vendor/pygments-main/pygments/formatter.py +4 -5
  37. data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
  38. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
  39. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  40. data/vendor/pygments-main/pygments/formatters/html.py +242 -139
  41. data/vendor/pygments-main/pygments/formatters/img.py +91 -50
  42. data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
  43. data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
  44. data/vendor/pygments-main/pygments/formatters/other.py +18 -17
  45. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
  46. data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
  47. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
  48. data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
  49. data/vendor/pygments-main/pygments/lexer.py +47 -44
  50. data/vendor/pygments-main/pygments/lexers/__init__.py +341 -0
  51. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1644 -0
  52. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +231 -0
  53. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +75 -0
  54. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1724 -0
  55. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5326 -0
  56. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +292 -0
  57. data/vendor/pygments-main/pygments/lexers/_mapping.py +554 -0
  58. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1171 -0
  59. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
  60. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2600 -0
  61. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4752 -0
  62. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +677 -0
  63. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3093 -0
  64. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1160 -0
  65. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +557 -0
  66. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +457 -0
  67. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1003 -0
  68. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
  69. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
  70. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1938 -0
  71. data/vendor/pygments-main/pygments/lexers/actionscript.py +244 -0
  72. data/vendor/pygments-main/pygments/lexers/agile.py +23 -0
  73. data/vendor/pygments-main/pygments/lexers/algebra.py +239 -0
  74. data/vendor/pygments-main/pygments/lexers/ambient.py +75 -0
  75. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  76. data/vendor/pygments-main/pygments/lexers/ampl.py +86 -0
  77. data/vendor/pygments-main/pygments/lexers/apl.py +100 -0
  78. data/vendor/pygments-main/pygments/lexers/archetype.py +317 -0
  79. data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +1004 -0
  81. data/vendor/pygments-main/pygments/lexers/automation.py +379 -0
  82. data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
  83. data/vendor/pygments-main/pygments/lexers/basic.py +661 -0
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +159 -0
  85. data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +626 -0
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +342 -0
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +565 -0
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +77 -0
  90. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  91. data/vendor/pygments-main/pygments/lexers/chapel.py +111 -0
  92. data/vendor/pygments-main/pygments/lexers/clean.py +178 -0
  93. data/vendor/pygments-main/pygments/lexers/compiled.py +33 -0
  94. data/vendor/pygments-main/pygments/lexers/configs.py +985 -0
  95. data/vendor/pygments-main/pygments/lexers/console.py +113 -0
  96. data/vendor/pygments-main/pygments/lexers/crystal.py +366 -0
  97. data/vendor/pygments-main/pygments/lexers/csound.py +466 -0
  98. data/vendor/pygments-main/pygments/lexers/css.py +694 -0
  99. data/vendor/pygments-main/pygments/lexers/d.py +255 -0
  100. data/vendor/pygments-main/pygments/lexers/dalvik.py +124 -0
  101. data/vendor/pygments-main/pygments/lexers/data.py +697 -0
  102. data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
  103. data/vendor/pygments-main/pygments/lexers/diff.py +164 -0
  104. data/vendor/pygments-main/pygments/lexers/dotnet.py +706 -0
  105. data/vendor/pygments-main/pygments/lexers/dsls.py +959 -0
  106. data/vendor/pygments-main/pygments/lexers/dylan.py +286 -0
  107. data/vendor/pygments-main/pygments/lexers/ecl.py +137 -0
  108. data/vendor/pygments-main/pygments/lexers/eiffel.py +64 -0
  109. data/vendor/pygments-main/pygments/lexers/elm.py +120 -0
  110. data/vendor/pygments-main/pygments/lexers/email.py +150 -0
  111. data/vendor/pygments-main/pygments/lexers/erlang.py +529 -0
  112. data/vendor/pygments-main/pygments/lexers/esoteric.py +303 -0
  113. data/vendor/pygments-main/pygments/lexers/ezhil.py +76 -0
  114. data/vendor/pygments-main/pygments/lexers/factor.py +343 -0
  115. data/vendor/pygments-main/pygments/lexers/fantom.py +249 -0
  116. data/vendor/pygments-main/pygments/lexers/felix.py +272 -0
  117. data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
  118. data/vendor/pygments-main/pygments/lexers/forth.py +177 -0
  119. data/vendor/pygments-main/pygments/lexers/fortran.py +208 -0
  120. data/vendor/pygments-main/pygments/lexers/foxpro.py +427 -0
  121. data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
  122. data/vendor/pygments-main/pygments/lexers/functional.py +20 -0
  123. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  124. data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
  125. data/vendor/pygments-main/pygments/lexers/go.py +100 -0
  126. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +269 -0
  127. data/vendor/pygments-main/pygments/lexers/graph.py +84 -0
  128. data/vendor/pygments-main/pygments/lexers/graphics.py +799 -0
  129. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  130. data/vendor/pygments-main/pygments/lexers/haskell.py +869 -0
  131. data/vendor/pygments-main/pygments/lexers/haxe.py +935 -0
  132. data/vendor/pygments-main/pygments/lexers/hdl.py +468 -0
  133. data/vendor/pygments-main/pygments/lexers/hexdump.py +102 -0
  134. data/vendor/pygments-main/pygments/lexers/html.py +613 -0
  135. data/vendor/pygments-main/pygments/lexers/idl.py +280 -0
  136. data/vendor/pygments-main/pygments/lexers/igor.py +419 -0
  137. data/vendor/pygments-main/pygments/lexers/inferno.py +95 -0
  138. data/vendor/pygments-main/pygments/lexers/installers.py +321 -0
  139. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1367 -0
  140. data/vendor/pygments-main/pygments/lexers/iolang.py +62 -0
  141. data/vendor/pygments-main/pygments/lexers/j.py +145 -0
  142. data/vendor/pygments-main/pygments/lexers/javascript.py +1536 -0
  143. data/vendor/pygments-main/pygments/lexers/julia.py +330 -0
  144. data/vendor/pygments-main/pygments/lexers/jvm.py +1739 -0
  145. data/vendor/pygments-main/pygments/lexers/lisp.py +2698 -0
  146. data/vendor/pygments-main/pygments/lexers/make.py +205 -0
  147. data/vendor/pygments-main/pygments/lexers/markup.py +762 -0
  148. data/vendor/pygments-main/pygments/lexers/math.py +20 -0
  149. data/vendor/pygments-main/pygments/lexers/matlab.py +3280 -0
  150. data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
  151. data/vendor/pygments-main/pygments/lexers/ml.py +957 -0
  152. data/vendor/pygments-main/pygments/lexers/modeling.py +365 -0
  153. data/vendor/pygments-main/pygments/lexers/modula2.py +1579 -0
  154. data/vendor/pygments-main/pygments/lexers/monte.py +203 -0
  155. data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
  156. data/vendor/pygments-main/pygments/lexers/ncl.py +893 -0
  157. data/vendor/pygments-main/pygments/lexers/nimrod.py +158 -0
  158. data/vendor/pygments-main/pygments/lexers/nit.py +63 -0
  159. data/vendor/pygments-main/pygments/lexers/nix.py +135 -0
  160. data/vendor/pygments-main/pygments/lexers/oberon.py +120 -0
  161. data/vendor/pygments-main/pygments/lexers/objective.py +503 -0
  162. data/vendor/pygments-main/pygments/lexers/ooc.py +84 -0
  163. data/vendor/pygments-main/pygments/lexers/other.py +40 -0
  164. data/vendor/pygments-main/pygments/lexers/parasail.py +78 -0
  165. data/vendor/pygments-main/pygments/lexers/parsers.py +799 -0
  166. data/vendor/pygments-main/pygments/lexers/pascal.py +643 -0
  167. data/vendor/pygments-main/pygments/lexers/pawn.py +202 -0
  168. data/vendor/pygments-main/pygments/lexers/perl.py +731 -0
  169. data/vendor/pygments-main/pygments/lexers/php.py +320 -0
  170. data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
  171. data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
  172. data/vendor/pygments-main/pygments/lexers/praat.py +301 -0
  173. data/vendor/pygments-main/pygments/lexers/prolog.py +305 -0
  174. data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
  175. data/vendor/pygments-main/pygments/lexers/python.py +1158 -0
  176. data/vendor/pygments-main/pygments/lexers/qvt.py +151 -0
  177. data/vendor/pygments-main/pygments/lexers/r.py +190 -0
  178. data/vendor/pygments-main/pygments/lexers/rdf.py +462 -0
  179. data/vendor/pygments-main/pygments/lexers/rebol.py +430 -0
  180. data/vendor/pygments-main/pygments/lexers/resource.py +84 -0
  181. data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
  182. data/vendor/pygments-main/pygments/lexers/rnc.py +66 -0
  183. data/vendor/pygments-main/pygments/lexers/roboconf.py +81 -0
  184. data/vendor/pygments-main/pygments/lexers/robotframework.py +551 -0
  185. data/vendor/pygments-main/pygments/lexers/ruby.py +523 -0
  186. data/vendor/pygments-main/pygments/lexers/rust.py +223 -0
  187. data/vendor/pygments-main/pygments/lexers/sas.py +227 -0
  188. data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
  189. data/vendor/pygments-main/pygments/lexers/scripting.py +1283 -0
  190. data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
  191. data/vendor/pygments-main/pygments/lexers/shell.py +909 -0
  192. data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
  193. data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
  194. data/vendor/pygments-main/pygments/lexers/smalltalk.py +194 -0
  195. data/vendor/pygments-main/pygments/lexers/smv.py +78 -0
  196. data/vendor/pygments-main/pygments/lexers/snobol.py +82 -0
  197. data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
  198. data/vendor/pygments-main/pygments/lexers/special.py +106 -0
  199. data/vendor/pygments-main/pygments/lexers/sql.py +832 -0
  200. data/vendor/pygments-main/pygments/lexers/stata.py +170 -0
  201. data/vendor/pygments-main/pygments/lexers/supercollider.py +94 -0
  202. data/vendor/pygments-main/pygments/lexers/tcl.py +144 -0
  203. data/vendor/pygments-main/pygments/lexers/templates.py +2263 -0
  204. data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
  205. data/vendor/pygments-main/pygments/lexers/testing.py +206 -0
  206. data/vendor/pygments-main/pygments/lexers/text.py +25 -0
  207. data/vendor/pygments-main/pygments/lexers/textedit.py +168 -0
  208. data/vendor/pygments-main/pygments/lexers/textfmts.py +429 -0
  209. data/vendor/pygments-main/pygments/lexers/theorem.py +476 -0
  210. data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
  211. data/vendor/pygments-main/pygments/lexers/trafficscript.py +53 -0
  212. data/vendor/pygments-main/pygments/lexers/typoscript.py +218 -0
  213. data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
  214. data/vendor/pygments-main/pygments/lexers/urbi.py +145 -0
  215. data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
  216. data/vendor/pygments-main/pygments/lexers/varnish.py +189 -0
  217. data/vendor/pygments-main/pygments/lexers/verification.py +113 -0
  218. data/vendor/pygments-main/pygments/lexers/web.py +23 -0
  219. data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
  220. data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
  221. data/vendor/pygments-main/pygments/lexers/whiley.py +115 -0
  222. data/vendor/pygments-main/pygments/lexers/x10.py +68 -0
  223. data/vendor/pygments-main/pygments/lexers/xorg.py +36 -0
  224. data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
  225. data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
  226. data/vendor/pygments-main/pygments/modeline.py +1 -2
  227. data/vendor/pygments-main/pygments/plugin.py +4 -3
  228. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  229. data/vendor/pygments-main/pygments/scanner.py +2 -3
  230. data/vendor/pygments-main/pygments/sphinxext.py +2 -5
  231. data/vendor/pygments-main/pygments/style.py +61 -25
  232. data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
  233. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  234. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  235. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  237. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  239. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  242. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
  247. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  249. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  250. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  251. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  252. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  253. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/solarized.py +136 -0
  261. data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
  262. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
  263. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  264. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  265. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  266. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  267. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  268. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  269. data/vendor/pygments-main/pygments/token.py +1 -2
  270. data/vendor/pygments-main/pygments/unistring.py +47 -109
  271. data/vendor/pygments-main/pygments/util.py +16 -96
  272. metadata +81 -139
  273. data/CHANGELOG.md +0 -111
  274. data/README.md +0 -121
  275. data/cache-lexers.rb +0 -8
  276. data/circle.yml +0 -20
  277. data/test/test_data.c +0 -2581
  278. data/test/test_data.py +0 -514
  279. data/test/test_data_generated +0 -2582
  280. data/vendor/custom_lexers/github.py +0 -565
  281. data/vendor/pygments-main/CHANGES +0 -1186
  282. data/vendor/pygments-main/MANIFEST.in +0 -6
  283. data/vendor/pygments-main/Makefile +0 -65
  284. data/vendor/pygments-main/README.rst +0 -39
  285. data/vendor/pygments-main/REVISION +0 -1
  286. data/vendor/pygments-main/TODO +0 -12
  287. data/vendor/pygments-main/doc/Makefile +0 -153
  288. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  289. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  290. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  291. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  292. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  293. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  294. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  295. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  296. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  297. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  298. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  299. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  300. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  301. data/vendor/pygments-main/doc/conf.py +0 -241
  302. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  303. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  304. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  305. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  306. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  307. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  308. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  309. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  310. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  311. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  312. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  313. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  314. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  315. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  316. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  317. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  318. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  319. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  320. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  321. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  322. data/vendor/pygments-main/doc/download.rst +0 -41
  323. data/vendor/pygments-main/doc/faq.rst +0 -139
  324. data/vendor/pygments-main/doc/index.rst +0 -54
  325. data/vendor/pygments-main/doc/languages.rst +0 -154
  326. data/vendor/pygments-main/doc/make.bat +0 -190
  327. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  328. data/vendor/pygments-main/external/autopygmentize +0 -101
  329. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  330. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  331. data/vendor/pygments-main/external/moin-parser.py +0 -112
  332. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  333. data/vendor/pygments-main/external/rst-directive.py +0 -82
  334. data/vendor/pygments-main/pygmentize +0 -8
  335. data/vendor/pygments-main/requirements.txt +0 -5
  336. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  337. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  338. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  339. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  340. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  341. data/vendor/pygments-main/scripts/pylintrc +0 -301
  342. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  343. data/vendor/pygments-main/setup.cfg +0 -10
  344. data/vendor/pygments-main/setup.py +0 -77
  345. data/vendor/pygments-main/tox.ini +0 -7
  346. data/vendor/simplejson/.gitignore +0 -10
  347. data/vendor/simplejson/.travis.yml +0 -5
  348. data/vendor/simplejson/CHANGES.txt +0 -291
  349. data/vendor/simplejson/LICENSE.txt +0 -19
  350. data/vendor/simplejson/MANIFEST.in +0 -5
  351. data/vendor/simplejson/README.rst +0 -19
  352. data/vendor/simplejson/conf.py +0 -179
  353. data/vendor/simplejson/index.rst +0 -628
  354. data/vendor/simplejson/scripts/make_docs.py +0 -18
  355. data/vendor/simplejson/setup.py +0 -104
  356. data/vendor/simplejson/simplejson/__init__.py +0 -510
  357. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  358. data/vendor/simplejson/simplejson/decoder.py +0 -425
  359. data/vendor/simplejson/simplejson/encoder.py +0 -567
  360. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  361. data/vendor/simplejson/simplejson/scanner.py +0 -77
  362. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  363. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  364. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  365. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  366. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  367. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  368. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  369. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  370. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  371. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  372. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  373. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  374. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  375. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  376. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  377. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  378. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  379. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  380. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  381. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  382. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  383. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  384. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  385. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  386. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -0,0 +1,102 @@
1
+ """
2
+ pygments.lexers.hexdump
3
+ ~~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for hexadecimal dumps.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ from pygments.lexer import RegexLexer, bygroups, include
12
+ from pygments.token import Text, Name, Number, String, Punctuation
13
+
14
+ __all__ = ['HexdumpLexer']
15
+
16
+
17
+ class HexdumpLexer(RegexLexer):
18
+ """
19
+ For typical hex dump output formats by the UNIX and GNU/Linux tools ``hexdump``,
20
+ ``hd``, ``hexcat``, ``od`` and ``xxd``, and the DOS tool ``DEBUG``. For example:
21
+
22
+ .. sourcecode:: hexdump
23
+
24
+ 00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
25
+ 00000010 02 00 3e 00 01 00 00 00 c5 48 40 00 00 00 00 00 |..>......H@.....|
26
+
27
+ The specific supported formats are the outputs of:
28
+
29
+ * ``hexdump FILE``
30
+ * ``hexdump -C FILE`` -- the `canonical` format used in the example.
31
+ * ``hd FILE`` -- same as ``hexdump -C FILE``.
32
+ * ``hexcat FILE``
33
+ * ``od -t x1z FILE``
34
+ * ``xxd FILE``
35
+ * ``DEBUG.EXE FILE.COM`` and entering ``d`` to the prompt.
36
+
37
+ .. versionadded:: 2.1
38
+ """
39
+ name = 'Hexdump'
40
+ aliases = ['hexdump']
41
+
42
+ hd = r'[0-9A-Ha-h]'
43
+
44
+ tokens = {
45
+ 'root': [
46
+ (r'\n', Text),
47
+ include('offset'),
48
+ (r'('+hd+r'{2})(\-)('+hd+r'{2})',
49
+ bygroups(Number.Hex, Punctuation, Number.Hex)),
50
+ (hd+r'{2}', Number.Hex),
51
+ (r'(\s{2,3})(\>)(.{16})(\<)$',
52
+ bygroups(Text, Punctuation, String, Punctuation), 'bracket-strings'),
53
+ (r'(\s{2,3})(\|)(.{16})(\|)$',
54
+ bygroups(Text, Punctuation, String, Punctuation), 'piped-strings'),
55
+ (r'(\s{2,3})(\>)(.{1,15})(\<)$',
56
+ bygroups(Text, Punctuation, String, Punctuation)),
57
+ (r'(\s{2,3})(\|)(.{1,15})(\|)$',
58
+ bygroups(Text, Punctuation, String, Punctuation)),
59
+ (r'(\s{2,3})(.{1,15})$', bygroups(Text, String)),
60
+ (r'(\s{2,3})(.{16}|.{20})$', bygroups(Text, String), 'nonpiped-strings'),
61
+ (r'\s', Text),
62
+ (r'^\*', Punctuation),
63
+ ],
64
+ 'offset': [
65
+ (r'^('+hd+'+)(:)', bygroups(Name.Label, Punctuation), 'offset-mode'),
66
+ (r'^'+hd+'+', Name.Label),
67
+ ],
68
+ 'offset-mode': [
69
+ (r'\s', Text, '#pop'),
70
+ (hd+'+', Name.Label),
71
+ (r':', Punctuation)
72
+ ],
73
+ 'piped-strings': [
74
+ (r'\n', Text),
75
+ include('offset'),
76
+ (hd+r'{2}', Number.Hex),
77
+ (r'(\s{2,3})(\|)(.{1,16})(\|)$',
78
+ bygroups(Text, Punctuation, String, Punctuation)),
79
+ (r'\s', Text),
80
+ (r'^\*', Punctuation),
81
+ ],
82
+ 'bracket-strings': [
83
+ (r'\n', Text),
84
+ include('offset'),
85
+ (hd+r'{2}', Number.Hex),
86
+ (r'(\s{2,3})(\>)(.{1,16})(\<)$',
87
+ bygroups(Text, Punctuation, String, Punctuation)),
88
+ (r'\s', Text),
89
+ (r'^\*', Punctuation),
90
+ ],
91
+ 'nonpiped-strings': [
92
+ (r'\n', Text),
93
+ include('offset'),
94
+ (r'('+hd+r'{2})(\-)('+hd+r'{2})',
95
+ bygroups(Number.Hex, Punctuation, Number.Hex)),
96
+ (hd+r'{2}', Number.Hex),
97
+ (r'(\s{19,})(.{1,20}?)$', bygroups(Text, String)),
98
+ (r'(\s{2,3})(.{1,20})$', bygroups(Text, String)),
99
+ (r'\s', Text),
100
+ (r'^\*', Punctuation),
101
+ ],
102
+ }
@@ -0,0 +1,613 @@
1
+ """
2
+ pygments.lexers.html
3
+ ~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for HTML, XML and related markup.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ import re
12
+
13
+ from pygments.lexer import RegexLexer, ExtendedRegexLexer, include, bygroups, \
14
+ default, using
15
+ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
16
+ Punctuation
17
+ from pygments.util import looks_like_xml, html_doctype_matches
18
+
19
+ from pygments.lexers.javascript import JavascriptLexer
20
+ from pygments.lexers.jvm import ScalaLexer
21
+ from pygments.lexers.css import CssLexer, _indentation, _starts_block
22
+ from pygments.lexers.ruby import RubyLexer
23
+
24
+ __all__ = ['HtmlLexer', 'DtdLexer', 'XmlLexer', 'XsltLexer', 'HamlLexer',
25
+ 'ScamlLexer', 'PugLexer']
26
+
27
+
28
+ class HtmlLexer(RegexLexer):
29
+ """
30
+ For HTML 4 and XHTML 1 markup. Nested JavaScript and CSS is highlighted
31
+ by the appropriate lexer.
32
+ """
33
+
34
+ name = 'HTML'
35
+ aliases = ['html']
36
+ filenames = ['*.html', '*.htm', '*.xhtml', '*.xslt']
37
+ mimetypes = ['text/html', 'application/xhtml+xml']
38
+
39
+ flags = re.IGNORECASE | re.DOTALL
40
+ tokens = {
41
+ 'root': [
42
+ ('[^<&]+', Text),
43
+ (r'&\S*?;', Name.Entity),
44
+ (r'\<\!\[CDATA\[.*?\]\]\>', Comment.Preproc),
45
+ ('<!--', Comment, 'comment'),
46
+ (r'<\?.*?\?>', Comment.Preproc),
47
+ ('<![^>]*>', Comment.Preproc),
48
+ (r'(<)(\s*)(script)(\s*)',
49
+ bygroups(Punctuation, Text, Name.Tag, Text),
50
+ ('script-content', 'tag')),
51
+ (r'(<)(\s*)(style)(\s*)',
52
+ bygroups(Punctuation, Text, Name.Tag, Text),
53
+ ('style-content', 'tag')),
54
+ # note: this allows tag names not used in HTML like <x:with-dash>,
55
+ # this is to support yet-unknown template engines and the like
56
+ (r'(<)(\s*)([\w:.-]+)',
57
+ bygroups(Punctuation, Text, Name.Tag), 'tag'),
58
+ (r'(<)(\s*)(/)(\s*)([\w:.-]+)(\s*)(>)',
59
+ bygroups(Punctuation, Text, Punctuation, Text, Name.Tag, Text,
60
+ Punctuation)),
61
+ ],
62
+ 'comment': [
63
+ ('[^-]+', Comment),
64
+ ('-->', Comment, '#pop'),
65
+ ('-', Comment),
66
+ ],
67
+ 'tag': [
68
+ (r'\s+', Text),
69
+ (r'([\w:-]+\s*)(=)(\s*)', bygroups(Name.Attribute, Operator, Text),
70
+ 'attr'),
71
+ (r'[\w:-]+', Name.Attribute),
72
+ (r'(/?)(\s*)(>)', bygroups(Punctuation, Text, Punctuation), '#pop'),
73
+ ],
74
+ 'script-content': [
75
+ (r'(<)(\s*)(/)(\s*)(script)(\s*)(>)',
76
+ bygroups(Punctuation, Text, Punctuation, Text, Name.Tag, Text,
77
+ Punctuation), '#pop'),
78
+ (r'.+?(?=<\s*/\s*script\s*>)', using(JavascriptLexer)),
79
+ # fallback cases for when there is no closing script tag
80
+ # first look for newline and then go back into root state
81
+ # if that fails just read the rest of the file
82
+ # this is similar to the error handling logic in lexer.py
83
+ (r'.+?\n', using(JavascriptLexer), '#pop'),
84
+ (r'.+', using(JavascriptLexer), '#pop'),
85
+ ],
86
+ 'style-content': [
87
+ (r'(<)(\s*)(/)(\s*)(style)(\s*)(>)',
88
+ bygroups(Punctuation, Text, Punctuation, Text, Name.Tag, Text,
89
+ Punctuation),'#pop'),
90
+ (r'.+?(?=<\s*/\s*style\s*>)', using(CssLexer)),
91
+ # fallback cases for when there is no closing style tag
92
+ # first look for newline and then go back into root state
93
+ # if that fails just read the rest of the file
94
+ # this is similar to the error handling logic in lexer.py
95
+ (r'.+?\n', using(CssLexer), '#pop'),
96
+ (r'.+', using(CssLexer), '#pop'),
97
+ ],
98
+ 'attr': [
99
+ ('".*?"', String, '#pop'),
100
+ ("'.*?'", String, '#pop'),
101
+ (r'[^\s>]+', String, '#pop'),
102
+ ],
103
+ }
104
+
105
+ def analyse_text(text):
106
+ if html_doctype_matches(text):
107
+ return 0.5
108
+
109
+
110
+ class DtdLexer(RegexLexer):
111
+ """
112
+ A lexer for DTDs (Document Type Definitions).
113
+
114
+ .. versionadded:: 1.5
115
+ """
116
+
117
+ flags = re.MULTILINE | re.DOTALL
118
+
119
+ name = 'DTD'
120
+ aliases = ['dtd']
121
+ filenames = ['*.dtd']
122
+ mimetypes = ['application/xml-dtd']
123
+
124
+ tokens = {
125
+ 'root': [
126
+ include('common'),
127
+
128
+ (r'(<!ELEMENT)(\s+)(\S+)',
129
+ bygroups(Keyword, Text, Name.Tag), 'element'),
130
+ (r'(<!ATTLIST)(\s+)(\S+)',
131
+ bygroups(Keyword, Text, Name.Tag), 'attlist'),
132
+ (r'(<!ENTITY)(\s+)(\S+)',
133
+ bygroups(Keyword, Text, Name.Entity), 'entity'),
134
+ (r'(<!NOTATION)(\s+)(\S+)',
135
+ bygroups(Keyword, Text, Name.Tag), 'notation'),
136
+ (r'(<!\[)([^\[\s]+)(\s*)(\[)', # conditional sections
137
+ bygroups(Keyword, Name.Entity, Text, Keyword)),
138
+
139
+ (r'(<!DOCTYPE)(\s+)([^>\s]+)',
140
+ bygroups(Keyword, Text, Name.Tag)),
141
+ (r'PUBLIC|SYSTEM', Keyword.Constant),
142
+ (r'[\[\]>]', Keyword),
143
+ ],
144
+
145
+ 'common': [
146
+ (r'\s+', Text),
147
+ (r'(%|&)[^;]*;', Name.Entity),
148
+ ('<!--', Comment, 'comment'),
149
+ (r'[(|)*,?+]', Operator),
150
+ (r'"[^"]*"', String.Double),
151
+ (r'\'[^\']*\'', String.Single),
152
+ ],
153
+
154
+ 'comment': [
155
+ ('[^-]+', Comment),
156
+ ('-->', Comment, '#pop'),
157
+ ('-', Comment),
158
+ ],
159
+
160
+ 'element': [
161
+ include('common'),
162
+ (r'EMPTY|ANY|#PCDATA', Keyword.Constant),
163
+ (r'[^>\s|()?+*,]+', Name.Tag),
164
+ (r'>', Keyword, '#pop'),
165
+ ],
166
+
167
+ 'attlist': [
168
+ include('common'),
169
+ (r'CDATA|IDREFS|IDREF|ID|NMTOKENS|NMTOKEN|ENTITIES|ENTITY|NOTATION',
170
+ Keyword.Constant),
171
+ (r'#REQUIRED|#IMPLIED|#FIXED', Keyword.Constant),
172
+ (r'xml:space|xml:lang', Keyword.Reserved),
173
+ (r'[^>\s|()?+*,]+', Name.Attribute),
174
+ (r'>', Keyword, '#pop'),
175
+ ],
176
+
177
+ 'entity': [
178
+ include('common'),
179
+ (r'SYSTEM|PUBLIC|NDATA', Keyword.Constant),
180
+ (r'[^>\s|()?+*,]+', Name.Entity),
181
+ (r'>', Keyword, '#pop'),
182
+ ],
183
+
184
+ 'notation': [
185
+ include('common'),
186
+ (r'SYSTEM|PUBLIC', Keyword.Constant),
187
+ (r'[^>\s|()?+*,]+', Name.Attribute),
188
+ (r'>', Keyword, '#pop'),
189
+ ],
190
+ }
191
+
192
+ def analyse_text(text):
193
+ if not looks_like_xml(text) and \
194
+ ('<!ELEMENT' in text or '<!ATTLIST' in text or '<!ENTITY' in text):
195
+ return 0.8
196
+
197
+
198
+ class XmlLexer(RegexLexer):
199
+ """
200
+ Generic lexer for XML (eXtensible Markup Language).
201
+ """
202
+
203
+ flags = re.MULTILINE | re.DOTALL | re.UNICODE
204
+
205
+ name = 'XML'
206
+ aliases = ['xml']
207
+ filenames = ['*.xml', '*.xsl', '*.rss', '*.xslt', '*.xsd',
208
+ '*.wsdl', '*.wsf']
209
+ mimetypes = ['text/xml', 'application/xml', 'image/svg+xml',
210
+ 'application/rss+xml', 'application/atom+xml']
211
+
212
+ tokens = {
213
+ 'root': [
214
+ ('[^<&]+', Text),
215
+ (r'&\S*?;', Name.Entity),
216
+ (r'\<\!\[CDATA\[.*?\]\]\>', Comment.Preproc),
217
+ ('<!--', Comment, 'comment'),
218
+ (r'<\?.*?\?>', Comment.Preproc),
219
+ ('<![^>]*>', Comment.Preproc),
220
+ (r'<\s*[\w:.-]+', Name.Tag, 'tag'),
221
+ (r'<\s*/\s*[\w:.-]+\s*>', Name.Tag),
222
+ ],
223
+ 'comment': [
224
+ ('[^-]+', Comment),
225
+ ('-->', Comment, '#pop'),
226
+ ('-', Comment),
227
+ ],
228
+ 'tag': [
229
+ (r'\s+', Text),
230
+ (r'[\w.:-]+\s*=', Name.Attribute, 'attr'),
231
+ (r'/?\s*>', Name.Tag, '#pop'),
232
+ ],
233
+ 'attr': [
234
+ (r'\s+', Text),
235
+ ('".*?"', String, '#pop'),
236
+ ("'.*?'", String, '#pop'),
237
+ (r'[^\s>]+', String, '#pop'),
238
+ ],
239
+ }
240
+
241
+ def analyse_text(text):
242
+ if looks_like_xml(text):
243
+ return 0.45 # less than HTML
244
+
245
+
246
+ class XsltLexer(XmlLexer):
247
+ """
248
+ A lexer for XSLT.
249
+
250
+ .. versionadded:: 0.10
251
+ """
252
+
253
+ name = 'XSLT'
254
+ aliases = ['xslt']
255
+ filenames = ['*.xsl', '*.xslt', '*.xpl'] # xpl is XProc
256
+ mimetypes = ['application/xsl+xml', 'application/xslt+xml']
257
+
258
+ EXTRA_KEYWORDS = {
259
+ 'apply-imports', 'apply-templates', 'attribute',
260
+ 'attribute-set', 'call-template', 'choose', 'comment',
261
+ 'copy', 'copy-of', 'decimal-format', 'element', 'fallback',
262
+ 'for-each', 'if', 'import', 'include', 'key', 'message',
263
+ 'namespace-alias', 'number', 'otherwise', 'output', 'param',
264
+ 'preserve-space', 'processing-instruction', 'sort',
265
+ 'strip-space', 'stylesheet', 'template', 'text', 'transform',
266
+ 'value-of', 'variable', 'when', 'with-param'
267
+ }
268
+
269
+ def get_tokens_unprocessed(self, text):
270
+ for index, token, value in XmlLexer.get_tokens_unprocessed(self, text):
271
+ m = re.match('</?xsl:([^>]*)/?>?', value)
272
+
273
+ if token is Name.Tag and m and m.group(1) in self.EXTRA_KEYWORDS:
274
+ yield index, Keyword, value
275
+ else:
276
+ yield index, token, value
277
+
278
+ def analyse_text(text):
279
+ if looks_like_xml(text) and '<xsl' in text:
280
+ return 0.8
281
+
282
+
283
+ class HamlLexer(ExtendedRegexLexer):
284
+ """
285
+ For Haml markup.
286
+
287
+ .. versionadded:: 1.3
288
+ """
289
+
290
+ name = 'Haml'
291
+ aliases = ['haml']
292
+ filenames = ['*.haml']
293
+ mimetypes = ['text/x-haml']
294
+
295
+ flags = re.IGNORECASE
296
+ # Haml can include " |\n" anywhere,
297
+ # which is ignored and used to wrap long lines.
298
+ # To accomodate this, use this custom faux dot instead.
299
+ _dot = r'(?: \|\n(?=.* \|)|.)'
300
+
301
+ # In certain places, a comma at the end of the line
302
+ # allows line wrapping as well.
303
+ _comma_dot = r'(?:,\s*\n|' + _dot + ')'
304
+ tokens = {
305
+ 'root': [
306
+ (r'[ \t]*\n', Text),
307
+ (r'[ \t]*', _indentation),
308
+ ],
309
+
310
+ 'css': [
311
+ (r'\.[\w:-]+', Name.Class, 'tag'),
312
+ (r'\#[\w:-]+', Name.Function, 'tag'),
313
+ ],
314
+
315
+ 'eval-or-plain': [
316
+ (r'[&!]?==', Punctuation, 'plain'),
317
+ (r'([&!]?[=~])(' + _comma_dot + r'*\n)',
318
+ bygroups(Punctuation, using(RubyLexer)),
319
+ 'root'),
320
+ default('plain'),
321
+ ],
322
+
323
+ 'content': [
324
+ include('css'),
325
+ (r'%[\w:-]+', Name.Tag, 'tag'),
326
+ (r'!!!' + _dot + r'*\n', Name.Namespace, '#pop'),
327
+ (r'(/)(\[' + _dot + r'*?\])(' + _dot + r'*\n)',
328
+ bygroups(Comment, Comment.Special, Comment),
329
+ '#pop'),
330
+ (r'/' + _dot + r'*\n', _starts_block(Comment, 'html-comment-block'),
331
+ '#pop'),
332
+ (r'-#' + _dot + r'*\n', _starts_block(Comment.Preproc,
333
+ 'haml-comment-block'), '#pop'),
334
+ (r'(-)(' + _comma_dot + r'*\n)',
335
+ bygroups(Punctuation, using(RubyLexer)),
336
+ '#pop'),
337
+ (r':' + _dot + r'*\n', _starts_block(Name.Decorator, 'filter-block'),
338
+ '#pop'),
339
+ include('eval-or-plain'),
340
+ ],
341
+
342
+ 'tag': [
343
+ include('css'),
344
+ (r'\{(,\n|' + _dot + r')*?\}', using(RubyLexer)),
345
+ (r'\[' + _dot + r'*?\]', using(RubyLexer)),
346
+ (r'\(', Text, 'html-attributes'),
347
+ (r'/[ \t]*\n', Punctuation, '#pop:2'),
348
+ (r'[<>]{1,2}(?=[ \t=])', Punctuation),
349
+ include('eval-or-plain'),
350
+ ],
351
+
352
+ 'plain': [
353
+ (r'([^#\n]|#[^{\n]|(\\\\)*\\#\{)+', Text),
354
+ (r'(#\{)(' + _dot + r'*?)(\})',
355
+ bygroups(String.Interpol, using(RubyLexer), String.Interpol)),
356
+ (r'\n', Text, 'root'),
357
+ ],
358
+
359
+ 'html-attributes': [
360
+ (r'\s+', Text),
361
+ (r'[\w:-]+[ \t]*=', Name.Attribute, 'html-attribute-value'),
362
+ (r'[\w:-]+', Name.Attribute),
363
+ (r'\)', Text, '#pop'),
364
+ ],
365
+
366
+ 'html-attribute-value': [
367
+ (r'[ \t]+', Text),
368
+ (r'\w+', Name.Variable, '#pop'),
369
+ (r'@\w+', Name.Variable.Instance, '#pop'),
370
+ (r'\$\w+', Name.Variable.Global, '#pop'),
371
+ (r"'(\\\\|\\[^\\]|[^'\\\n])*'", String, '#pop'),
372
+ (r'"(\\\\|\\[^\\]|[^"\\\n])*"', String, '#pop'),
373
+ ],
374
+
375
+ 'html-comment-block': [
376
+ (_dot + '+', Comment),
377
+ (r'\n', Text, 'root'),
378
+ ],
379
+
380
+ 'haml-comment-block': [
381
+ (_dot + '+', Comment.Preproc),
382
+ (r'\n', Text, 'root'),
383
+ ],
384
+
385
+ 'filter-block': [
386
+ (r'([^#\n]|#[^{\n]|(\\\\)*\\#\{)+', Name.Decorator),
387
+ (r'(#\{)(' + _dot + r'*?)(\})',
388
+ bygroups(String.Interpol, using(RubyLexer), String.Interpol)),
389
+ (r'\n', Text, 'root'),
390
+ ],
391
+ }
392
+
393
+
394
+ class ScamlLexer(ExtendedRegexLexer):
395
+ """
396
+ For `Scaml markup <http://scalate.fusesource.org/>`_. Scaml is Haml for Scala.
397
+
398
+ .. versionadded:: 1.4
399
+ """
400
+
401
+ name = 'Scaml'
402
+ aliases = ['scaml']
403
+ filenames = ['*.scaml']
404
+ mimetypes = ['text/x-scaml']
405
+
406
+ flags = re.IGNORECASE
407
+ # Scaml does not yet support the " |\n" notation to
408
+ # wrap long lines. Once it does, use the custom faux
409
+ # dot instead.
410
+ # _dot = r'(?: \|\n(?=.* \|)|.)'
411
+ _dot = r'.'
412
+
413
+ tokens = {
414
+ 'root': [
415
+ (r'[ \t]*\n', Text),
416
+ (r'[ \t]*', _indentation),
417
+ ],
418
+
419
+ 'css': [
420
+ (r'\.[\w:-]+', Name.Class, 'tag'),
421
+ (r'\#[\w:-]+', Name.Function, 'tag'),
422
+ ],
423
+
424
+ 'eval-or-plain': [
425
+ (r'[&!]?==', Punctuation, 'plain'),
426
+ (r'([&!]?[=~])(' + _dot + r'*\n)',
427
+ bygroups(Punctuation, using(ScalaLexer)),
428
+ 'root'),
429
+ default('plain'),
430
+ ],
431
+
432
+ 'content': [
433
+ include('css'),
434
+ (r'%[\w:-]+', Name.Tag, 'tag'),
435
+ (r'!!!' + _dot + r'*\n', Name.Namespace, '#pop'),
436
+ (r'(/)(\[' + _dot + r'*?\])(' + _dot + r'*\n)',
437
+ bygroups(Comment, Comment.Special, Comment),
438
+ '#pop'),
439
+ (r'/' + _dot + r'*\n', _starts_block(Comment, 'html-comment-block'),
440
+ '#pop'),
441
+ (r'-#' + _dot + r'*\n', _starts_block(Comment.Preproc,
442
+ 'scaml-comment-block'), '#pop'),
443
+ (r'(-@\s*)(import)?(' + _dot + r'*\n)',
444
+ bygroups(Punctuation, Keyword, using(ScalaLexer)),
445
+ '#pop'),
446
+ (r'(-)(' + _dot + r'*\n)',
447
+ bygroups(Punctuation, using(ScalaLexer)),
448
+ '#pop'),
449
+ (r':' + _dot + r'*\n', _starts_block(Name.Decorator, 'filter-block'),
450
+ '#pop'),
451
+ include('eval-or-plain'),
452
+ ],
453
+
454
+ 'tag': [
455
+ include('css'),
456
+ (r'\{(,\n|' + _dot + r')*?\}', using(ScalaLexer)),
457
+ (r'\[' + _dot + r'*?\]', using(ScalaLexer)),
458
+ (r'\(', Text, 'html-attributes'),
459
+ (r'/[ \t]*\n', Punctuation, '#pop:2'),
460
+ (r'[<>]{1,2}(?=[ \t=])', Punctuation),
461
+ include('eval-or-plain'),
462
+ ],
463
+
464
+ 'plain': [
465
+ (r'([^#\n]|#[^{\n]|(\\\\)*\\#\{)+', Text),
466
+ (r'(#\{)(' + _dot + r'*?)(\})',
467
+ bygroups(String.Interpol, using(ScalaLexer), String.Interpol)),
468
+ (r'\n', Text, 'root'),
469
+ ],
470
+
471
+ 'html-attributes': [
472
+ (r'\s+', Text),
473
+ (r'[\w:-]+[ \t]*=', Name.Attribute, 'html-attribute-value'),
474
+ (r'[\w:-]+', Name.Attribute),
475
+ (r'\)', Text, '#pop'),
476
+ ],
477
+
478
+ 'html-attribute-value': [
479
+ (r'[ \t]+', Text),
480
+ (r'\w+', Name.Variable, '#pop'),
481
+ (r'@\w+', Name.Variable.Instance, '#pop'),
482
+ (r'\$\w+', Name.Variable.Global, '#pop'),
483
+ (r"'(\\\\|\\[^\\]|[^'\\\n])*'", String, '#pop'),
484
+ (r'"(\\\\|\\[^\\]|[^"\\\n])*"', String, '#pop'),
485
+ ],
486
+
487
+ 'html-comment-block': [
488
+ (_dot + '+', Comment),
489
+ (r'\n', Text, 'root'),
490
+ ],
491
+
492
+ 'scaml-comment-block': [
493
+ (_dot + '+', Comment.Preproc),
494
+ (r'\n', Text, 'root'),
495
+ ],
496
+
497
+ 'filter-block': [
498
+ (r'([^#\n]|#[^{\n]|(\\\\)*\\#\{)+', Name.Decorator),
499
+ (r'(#\{)(' + _dot + r'*?)(\})',
500
+ bygroups(String.Interpol, using(ScalaLexer), String.Interpol)),
501
+ (r'\n', Text, 'root'),
502
+ ],
503
+ }
504
+
505
+
506
+ class PugLexer(ExtendedRegexLexer):
507
+ """
508
+ For Pug markup.
509
+ Pug is a variant of Scaml, see:
510
+ http://scalate.fusesource.org/documentation/scaml-reference.html
511
+
512
+ .. versionadded:: 1.4
513
+ """
514
+
515
+ name = 'Pug'
516
+ aliases = ['pug', 'jade']
517
+ filenames = ['*.pug', '*.jade']
518
+ mimetypes = ['text/x-pug', 'text/x-jade']
519
+
520
+ flags = re.IGNORECASE
521
+ _dot = r'.'
522
+
523
+ tokens = {
524
+ 'root': [
525
+ (r'[ \t]*\n', Text),
526
+ (r'[ \t]*', _indentation),
527
+ ],
528
+
529
+ 'css': [
530
+ (r'\.[\w:-]+', Name.Class, 'tag'),
531
+ (r'\#[\w:-]+', Name.Function, 'tag'),
532
+ ],
533
+
534
+ 'eval-or-plain': [
535
+ (r'[&!]?==', Punctuation, 'plain'),
536
+ (r'([&!]?[=~])(' + _dot + r'*\n)',
537
+ bygroups(Punctuation, using(ScalaLexer)), 'root'),
538
+ default('plain'),
539
+ ],
540
+
541
+ 'content': [
542
+ include('css'),
543
+ (r'!!!' + _dot + r'*\n', Name.Namespace, '#pop'),
544
+ (r'(/)(\[' + _dot + r'*?\])(' + _dot + r'*\n)',
545
+ bygroups(Comment, Comment.Special, Comment),
546
+ '#pop'),
547
+ (r'/' + _dot + r'*\n', _starts_block(Comment, 'html-comment-block'),
548
+ '#pop'),
549
+ (r'-#' + _dot + r'*\n', _starts_block(Comment.Preproc,
550
+ 'scaml-comment-block'), '#pop'),
551
+ (r'(-@\s*)(import)?(' + _dot + r'*\n)',
552
+ bygroups(Punctuation, Keyword, using(ScalaLexer)),
553
+ '#pop'),
554
+ (r'(-)(' + _dot + r'*\n)',
555
+ bygroups(Punctuation, using(ScalaLexer)),
556
+ '#pop'),
557
+ (r':' + _dot + r'*\n', _starts_block(Name.Decorator, 'filter-block'),
558
+ '#pop'),
559
+ (r'[\w:-]+', Name.Tag, 'tag'),
560
+ (r'\|', Text, 'eval-or-plain'),
561
+ ],
562
+
563
+ 'tag': [
564
+ include('css'),
565
+ (r'\{(,\n|' + _dot + r')*?\}', using(ScalaLexer)),
566
+ (r'\[' + _dot + r'*?\]', using(ScalaLexer)),
567
+ (r'\(', Text, 'html-attributes'),
568
+ (r'/[ \t]*\n', Punctuation, '#pop:2'),
569
+ (r'[<>]{1,2}(?=[ \t=])', Punctuation),
570
+ include('eval-or-plain'),
571
+ ],
572
+
573
+ 'plain': [
574
+ (r'([^#\n]|#[^{\n]|(\\\\)*\\#\{)+', Text),
575
+ (r'(#\{)(' + _dot + r'*?)(\})',
576
+ bygroups(String.Interpol, using(ScalaLexer), String.Interpol)),
577
+ (r'\n', Text, 'root'),
578
+ ],
579
+
580
+ 'html-attributes': [
581
+ (r'\s+', Text),
582
+ (r'[\w:-]+[ \t]*=', Name.Attribute, 'html-attribute-value'),
583
+ (r'[\w:-]+', Name.Attribute),
584
+ (r'\)', Text, '#pop'),
585
+ ],
586
+
587
+ 'html-attribute-value': [
588
+ (r'[ \t]+', Text),
589
+ (r'\w+', Name.Variable, '#pop'),
590
+ (r'@\w+', Name.Variable.Instance, '#pop'),
591
+ (r'\$\w+', Name.Variable.Global, '#pop'),
592
+ (r"'(\\\\|\\[^\\]|[^'\\\n])*'", String, '#pop'),
593
+ (r'"(\\\\|\\[^\\]|[^"\\\n])*"', String, '#pop'),
594
+ ],
595
+
596
+ 'html-comment-block': [
597
+ (_dot + '+', Comment),
598
+ (r'\n', Text, 'root'),
599
+ ],
600
+
601
+ 'scaml-comment-block': [
602
+ (_dot + '+', Comment.Preproc),
603
+ (r'\n', Text, 'root'),
604
+ ],
605
+
606
+ 'filter-block': [
607
+ (r'([^#\n]|#[^{\n]|(\\\\)*\\#\{)+', Name.Decorator),
608
+ (r'(#\{)(' + _dot + r'*?)(\})',
609
+ bygroups(String.Interpol, using(ScalaLexer), String.Interpol)),
610
+ (r'\n', Text, 'root'),
611
+ ],
612
+ }
613
+ JadeLexer = PugLexer # compat