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
@@ -0,0 +1,108 @@
1
+ """
2
+ pygments.lexers.devicetree
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for Devicetree language.
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, default, words
12
+ from pygments.token import Comment, Keyword, Name, Number, Operator, \
13
+ Punctuation, String, Text
14
+
15
+ __all__ = ['DevicetreeLexer']
16
+
17
+
18
+ class DevicetreeLexer(RegexLexer):
19
+ """
20
+ Lexer for `Devicetree <https://www.devicetree.org/>`_ files.
21
+
22
+ .. versionadded:: 2.7
23
+ """
24
+
25
+ name = 'Devicetree'
26
+ aliases = ['devicetree', 'dts']
27
+ filenames = ['*.dts', '*.dtsi']
28
+ mimetypes = ['text/x-c']
29
+
30
+ #: optional Whitespace or /*...*/ style comment
31
+ _ws = r'\s*(?:/[*][^*/]*?[*]/\s*)*'
32
+
33
+ tokens = {
34
+ 'macro': [
35
+ # Include preprocessor directives (C style):
36
+ (r'(#include)(' + _ws + r')([^\n]+)',
37
+ bygroups(Comment.Preproc, Comment.Multiline, Comment.PreprocFile)),
38
+ # Define preprocessor directives (C style):
39
+ (r'(#define)(' + _ws + r')([^\n]+)',
40
+ bygroups(Comment.Preproc, Comment.Multiline, Comment.Preproc)),
41
+ # devicetree style with file:
42
+ (r'(/[^*/{]+/)(' + _ws + r')("[^\n{]+")',
43
+ bygroups(Comment.Preproc, Comment.Multiline, Comment.PreprocFile)),
44
+ # devicetree style with property:
45
+ (r'(/[^*/{]+/)(' + _ws + r')([^\n;{]*)([;]?)',
46
+ bygroups(Comment.Preproc, Comment.Multiline, Comment.Preproc, Punctuation)),
47
+ ],
48
+ 'whitespace': [
49
+ (r'\n', Text),
50
+ (r'\s+', Text),
51
+ (r'\\\n', Text), # line continuation
52
+ (r'//(\n|[\w\W]*?[^\\]\n)', Comment.Single),
53
+ (r'/(\\\n)?[*][\w\W]*?[*](\\\n)?/', Comment.Multiline),
54
+ # Open until EOF, so no ending delimeter
55
+ (r'/(\\\n)?[*][\w\W]*', Comment.Multiline),
56
+ ],
57
+ 'statements': [
58
+ (r'(L?)(")', bygroups(String.Affix, String), 'string'),
59
+ (r'0x[0-9a-fA-F]+', Number.Hex),
60
+ (r'\d+', Number.Integer),
61
+ (r'([^\s{}/*]*)(\s*)(:)', bygroups(Name.Label, Text, Punctuation)),
62
+ (words(('compatible', 'model', 'phandle', 'status', '#address-cells',
63
+ '#size-cells', 'reg', 'virtual-reg', 'ranges', 'dma-ranges',
64
+ 'device_type', 'name'), suffix=r'\b'), Keyword.Reserved),
65
+ (r'([~!%^&*+=|?:<>/#-])', Operator),
66
+ (r'[()\[\]{},.]', Punctuation),
67
+ (r'[a-zA-Z_][\w-]*(?=(?:\s*,\s*[a-zA-Z_][\w-]*|(?:' + _ws + r'))*\s*[=;])',
68
+ Name),
69
+ (r'[a-zA-Z_]\w*', Name.Attribute),
70
+ ],
71
+ 'root': [
72
+ include('whitespace'),
73
+ include('macro'),
74
+
75
+ # Nodes
76
+ (r'([^/*@\s&]+|/)(@?)([0-9a-fA-F,]*)(' + _ws + r')(\{)',
77
+ bygroups(Name.Function, Operator, Number.Integer,
78
+ Comment.Multiline, Punctuation), 'node'),
79
+
80
+ default('statement'),
81
+ ],
82
+ 'statement': [
83
+ include('whitespace'),
84
+ include('statements'),
85
+ (';', Punctuation, '#pop'),
86
+ ],
87
+ 'node': [
88
+ include('whitespace'),
89
+ include('macro'),
90
+
91
+ (r'([^/*@\s&]+|/)(@?)([0-9a-fA-F,]*)(' + _ws + r')(\{)',
92
+ bygroups(Name.Function, Operator, Number.Integer,
93
+ Comment.Multiline, Punctuation), '#push'),
94
+
95
+ include('statements'),
96
+
97
+ (r'\};', Punctuation, '#pop'),
98
+ (';', Punctuation),
99
+ ],
100
+ 'string': [
101
+ (r'"', String, '#pop'),
102
+ (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|'
103
+ r'u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})', String.Escape),
104
+ (r'[^\\"\n]+', String), # all other characters
105
+ (r'\\\n', String), # line continuation
106
+ (r'\\', String), # stray backslash
107
+ ],
108
+ }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.diff
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for diff/patch formats.
7
6
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -114,9 +113,9 @@ class WDiffLexer(RegexLexer):
114
113
 
115
114
  Note that:
116
115
 
117
- * only to normal output (without option like -l).
118
- * if target files of wdiff contain "[-", "-]", "{+", "+}",
119
- especially they are unbalanced, this lexer will get confusing.
116
+ * It only works with normal output (without options like ``-l``).
117
+ * If the target files contain "[-", "-]", "{+", or "+}",
118
+ especially they are unbalanced, the lexer will get confused.
120
119
 
121
120
  .. versionadded:: 2.2
122
121
  """
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.dotnet
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for .net 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
  import re
@@ -14,7 +13,7 @@ from pygments.lexer import RegexLexer, DelegatingLexer, bygroups, include, \
14
13
  using, this, default, words
15
14
  from pygments.token import Punctuation, \
16
15
  Text, Comment, Operator, Keyword, Name, String, Number, Literal, Other
17
- from pygments.util import get_choice_opt, iteritems
16
+ from pygments.util import get_choice_opt
18
17
  from pygments import unistring as uni
19
18
 
20
19
  from pygments.lexers.html import XmlLexer
@@ -58,7 +57,7 @@ class CSharpLexer(RegexLexer):
58
57
  # http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
59
58
 
60
59
  levels = {
61
- 'none': '@?[_a-zA-Z]\w*',
60
+ 'none': r'@?[_a-zA-Z]\w*',
62
61
  'basic': ('@?[_' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl') + ']' +
63
62
  '[' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl', 'Nd', 'Pc',
64
63
  'Cf', 'Mn', 'Mc') + ']*'),
@@ -71,7 +70,7 @@ class CSharpLexer(RegexLexer):
71
70
  tokens = {}
72
71
  token_variants = True
73
72
 
74
- for levelname, cs_ident in iteritems(levels):
73
+ for levelname, cs_ident in levels.items():
75
74
  tokens[levelname] = {
76
75
  'root': [
77
76
  # method names
@@ -88,7 +87,7 @@ class CSharpLexer(RegexLexer):
88
87
  (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation),
89
88
  (r'[{}]', Punctuation),
90
89
  (r'@"(""|[^"])*"', String),
91
- (r'"(\\\\|\\"|[^"\n])*["\n]', String),
90
+ (r'"(\\\\|\\[^\\]|[^"\\\n])*["\n]', String),
92
91
  (r"'\\.'|'[^\\]'", String.Char),
93
92
  (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?"
94
93
  r"[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?", Number),
@@ -171,7 +170,7 @@ class NemerleLexer(RegexLexer):
171
170
  # http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
172
171
 
173
172
  levels = {
174
- 'none': '@?[_a-zA-Z]\w*',
173
+ 'none': r'@?[_a-zA-Z]\w*',
175
174
  'basic': ('@?[_' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl') + ']' +
176
175
  '[' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl', 'Nd', 'Pc',
177
176
  'Cf', 'Mn', 'Mc') + ']*'),
@@ -184,7 +183,7 @@ class NemerleLexer(RegexLexer):
184
183
  tokens = {}
185
184
  token_variants = True
186
185
 
187
- for levelname, cs_ident in iteritems(levels):
186
+ for levelname, cs_ident in levels.items():
188
187
  tokens[levelname] = {
189
188
  'root': [
190
189
  # method names
@@ -213,7 +212,7 @@ class NemerleLexer(RegexLexer):
213
212
  (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation),
214
213
  (r'[{}]', Punctuation),
215
214
  (r'@"(""|[^"])*"', String),
216
- (r'"(\\\\|\\"|[^"\n])*["\n]', String),
215
+ (r'"(\\\\|\\[^\\]|[^"\\\n])*["\n]', String),
217
216
  (r"'\\.'|'[^\\]'", String.Char),
218
217
  (r"0[xX][0-9a-fA-F]+[Ll]?", Number),
219
218
  (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFLdD]?", Number),
@@ -295,6 +294,16 @@ class NemerleLexer(RegexLexer):
295
294
 
296
295
  RegexLexer.__init__(self, **options)
297
296
 
297
+ def analyse_text(text):
298
+ """Nemerle is quite similar to Python, but @if is relatively uncommon
299
+ elsewhere."""
300
+ result = 0
301
+
302
+ if '@if' in text:
303
+ result += 0.1
304
+
305
+ return result
306
+
298
307
 
299
308
  class BooLexer(RegexLexer):
300
309
  """
@@ -315,8 +324,8 @@ class BooLexer(RegexLexer):
315
324
  (r'\\\n', Text),
316
325
  (r'\\', Text),
317
326
  (r'(in|is|and|or|not)\b', Operator.Word),
318
- (r'/(\\\\|\\/|[^/\s])/', String.Regex),
319
- (r'@/(\\\\|\\/|[^/])*/', String.Regex),
327
+ (r'/(\\\\|\\[^\\]|[^/\\\s])/', String.Regex),
328
+ (r'@/(\\\\|\\[^\\]|[^/\\])*/', String.Regex),
320
329
  (r'=~|!=|==|<<|>>|[-+/*%=<>&^|]', Operator),
321
330
  (r'(as|abstract|callable|constructor|destructor|do|import|'
322
331
  r'enum|event|final|get|interface|internal|of|override|'
@@ -335,8 +344,8 @@ class BooLexer(RegexLexer):
335
344
  r'rawArrayIndexing|required|typeof|unchecked|using|'
336
345
  r'yieldAll|zip)\b', Name.Builtin),
337
346
  (r'"""(\\\\|\\"|.*?)"""', String.Double),
338
- (r'"(\\\\|\\"|[^"]*?)"', String.Double),
339
- (r"'(\\\\|\\'|[^']*?)'", String.Single),
347
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
348
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
340
349
  (r'[a-zA-Z_]\w*', Name),
341
350
  (r'(\d+\.\d*|\d*\.\d+)([fF][+-]?[0-9]+)?', Number.Float),
342
351
  (r'[0-9][0-9.]*(ms?|d|h|s)', Number),
@@ -352,13 +361,13 @@ class BooLexer(RegexLexer):
352
361
  ('[*/]', Comment.Multiline)
353
362
  ],
354
363
  'funcname': [
355
- ('[a-zA-Z_]\w*', Name.Function, '#pop')
364
+ (r'[a-zA-Z_]\w*', Name.Function, '#pop')
356
365
  ],
357
366
  'classname': [
358
- ('[a-zA-Z_]\w*', Name.Class, '#pop')
367
+ (r'[a-zA-Z_]\w*', Name.Class, '#pop')
359
368
  ],
360
369
  'namespace': [
361
- ('[a-zA-Z_][\w.]*', Name.Namespace, '#pop')
370
+ (r'[a-zA-Z_][\w.]*', Name.Namespace, '#pop')
362
371
  ]
363
372
  }
364
373
 
@@ -413,7 +422,7 @@ class VbNetLexer(RegexLexer):
413
422
  'Static', 'Step', 'Stop', 'SyncLock', 'Then', 'Throw', 'To',
414
423
  'True', 'Try', 'TryCast', 'Wend', 'Using', 'When', 'While',
415
424
  'Widening', 'With', 'WithEvents', 'WriteOnly'),
416
- prefix='(?<!\.)', suffix=r'\b'), Keyword),
425
+ prefix=r'(?<!\.)', suffix=r'\b'), Keyword),
417
426
  (r'(?<!\.)End\b', Keyword, 'end'),
418
427
  (r'(?<!\.)(Dim|Const)\b', Keyword, 'dim'),
419
428
  (r'(?<!\.)(Function|Sub|Property)(\s+)',
@@ -507,8 +516,7 @@ class CSharpAspxLexer(DelegatingLexer):
507
516
  mimetypes = []
508
517
 
509
518
  def __init__(self, **options):
510
- super(CSharpAspxLexer, self).__init__(CSharpLexer, GenericAspxLexer,
511
- **options)
519
+ super().__init__(CSharpLexer, GenericAspxLexer, **options)
512
520
 
513
521
  def analyse_text(text):
514
522
  if re.search(r'Page\s*Language="C#"', text, re.I) is not None:
@@ -528,8 +536,7 @@ class VbNetAspxLexer(DelegatingLexer):
528
536
  mimetypes = []
529
537
 
530
538
  def __init__(self, **options):
531
- super(VbNetAspxLexer, self).__init__(VbNetLexer, GenericAspxLexer,
532
- **options)
539
+ super().__init__(VbNetLexer, GenericAspxLexer, **options)
533
540
 
534
541
  def analyse_text(text):
535
542
  if re.search(r'Page\s*Language="Vb"', text, re.I) is not None:
@@ -541,16 +548,13 @@ class VbNetAspxLexer(DelegatingLexer):
541
548
  # Very close to functional.OcamlLexer
542
549
  class FSharpLexer(RegexLexer):
543
550
  """
544
- For the F# language (version 3.0).
545
-
546
- AAAAACK Strings
547
- http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html#_Toc335818775
551
+ For the `F# language <https://fsharp.org/>`_ (version 3.0).
548
552
 
549
553
  .. versionadded:: 1.5
550
554
  """
551
555
 
552
- name = 'FSharp'
553
- aliases = ['fsharp']
556
+ name = 'F#'
557
+ aliases = ['fsharp', 'f#']
554
558
  filenames = ['*.fs', '*.fsi']
555
559
  mimetypes = ['text/x-fsharp']
556
560
 
@@ -574,10 +578,10 @@ class FSharpLexer(RegexLexer):
574
578
  'virtual', 'volatile',
575
579
  ]
576
580
  keyopts = [
577
- '!=', '#', '&&', '&', '\(', '\)', '\*', '\+', ',', '-\.',
578
- '->', '-', '\.\.', '\.', '::', ':=', ':>', ':', ';;', ';', '<-',
579
- '<\]', '<', '>\]', '>', '\?\?', '\?', '\[<', '\[\|', '\[', '\]',
580
- '_', '`', '\{', '\|\]', '\|', '\}', '~', '<@@', '<@', '=', '@>', '@@>',
581
+ '!=', '#', '&&', '&', r'\(', r'\)', r'\*', r'\+', ',', r'-\.',
582
+ '->', '-', r'\.\.', r'\.', '::', ':=', ':>', ':', ';;', ';', '<-',
583
+ r'<\]', '<', r'>\]', '>', r'\?\?', r'\?', r'\[<', r'\[\|', r'\[', r'\]',
584
+ '_', '`', r'\{', r'\|\]', r'\|', r'\}', '~', '<@@', '<@', '=', '@>', '@@>',
581
585
  ]
582
586
 
583
587
  operators = r'[!$%&*+\./:<=>?@^|~-]'
@@ -689,3 +693,14 @@ class FSharpLexer(RegexLexer):
689
693
  (r'"', String),
690
694
  ],
691
695
  }
696
+
697
+ def analyse_text(text):
698
+ """F# doesn't have that many unique features -- |> and <| are weak
699
+ indicators."""
700
+ result = 0
701
+ if '|>' in text:
702
+ result += 0.05
703
+ if '<|' in text:
704
+ result += 0.05
705
+
706
+ return result
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.dsls
4
3
  ~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for various domain-specific 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
 
@@ -14,9 +13,9 @@ import re
14
13
  from pygments.lexer import ExtendedRegexLexer, RegexLexer, bygroups, words, \
15
14
  include, default, this, using, combined
16
15
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
17
- Number, Punctuation, Literal, Whitespace
16
+ Number, Punctuation, Whitespace
18
17
 
19
- __all__ = ['ProtoBufLexer', 'BroLexer', 'PuppetLexer', 'RslLexer',
18
+ __all__ = ['ProtoBufLexer', 'ZeekLexer', 'PuppetLexer', 'RslLexer',
20
19
  'MscgenLexer', 'VGLLexer', 'AlloyLexer', 'PanLexer',
21
20
  'CrmshLexer', 'ThriftLexer', 'FlatlineLexer', 'SnowballLexer']
22
21
 
@@ -40,9 +39,9 @@ class ProtoBufLexer(RegexLexer):
40
39
  (r'/(\\\n)?/(\n|(.|\n)*?[^\\]\n)', Comment.Single),
41
40
  (r'/(\\\n)?\*(.|\n)*?\*(\\\n)?/', Comment.Multiline),
42
41
  (words((
43
- 'import', 'option', 'optional', 'required', 'repeated', 'default',
44
- 'packed', 'ctype', 'extensions', 'to', 'max', 'rpc', 'returns',
45
- 'oneof'), prefix=r'\b', suffix=r'\b'),
42
+ 'import', 'option', 'optional', 'required', 'repeated',
43
+ 'reserved', 'default', 'packed', 'ctype', 'extensions', 'to',
44
+ 'max', 'rpc', 'returns', 'oneof', 'syntax'), prefix=r'\b', suffix=r'\b'),
46
45
  Keyword),
47
46
  (words((
48
47
  'int32', 'int64', 'uint32', 'uint64', 'sint32', 'sint64',
@@ -66,7 +65,7 @@ class ProtoBufLexer(RegexLexer):
66
65
  (r'[+-=]', Operator),
67
66
  (r'([a-zA-Z_][\w.]*)([ \t]*)(=)',
68
67
  bygroups(Name.Attribute, Text, Operator)),
69
- ('[a-zA-Z_][\w.]*', Name),
68
+ (r'[a-zA-Z_][\w.]*', Name),
70
69
  ],
71
70
  'package': [
72
71
  (r'[a-zA-Z_]\w*', Name.Namespace, '#pop'),
@@ -188,84 +187,166 @@ class ThriftLexer(RegexLexer):
188
187
  }
189
188
 
190
189
 
191
- class BroLexer(RegexLexer):
190
+ class ZeekLexer(RegexLexer):
192
191
  """
193
- For `Bro <http://bro-ids.org/>`_ scripts.
192
+ For `Zeek <https://www.zeek.org/>`_ scripts.
194
193
 
195
- .. versionadded:: 1.5
194
+ .. versionadded:: 2.5
196
195
  """
197
- name = 'Bro'
198
- aliases = ['bro']
199
- filenames = ['*.bro']
196
+ name = 'Zeek'
197
+ aliases = ['zeek', 'bro']
198
+ filenames = ['*.zeek', '*.bro']
200
199
 
201
- _hex = r'[0-9a-fA-F_]'
200
+ _hex = r'[0-9a-fA-F]'
202
201
  _float = r'((\d*\.?\d+)|(\d+\.?\d*))([eE][-+]?\d+)?'
203
202
  _h = r'[A-Za-z0-9][-A-Za-z0-9]*'
204
203
 
205
204
  tokens = {
206
205
  'root': [
207
- # Whitespace
208
- (r'^@.*?\n', Comment.Preproc),
209
- (r'#.*?\n', Comment.Single),
206
+ include('whitespace'),
207
+ include('comments'),
208
+ include('directives'),
209
+ include('attributes'),
210
+ include('types'),
211
+ include('keywords'),
212
+ include('literals'),
213
+ include('operators'),
214
+ include('punctuation'),
215
+ (r'((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)(?=\s*\()',
216
+ Name.Function),
217
+ include('identifiers'),
218
+ ],
219
+
220
+ 'whitespace': [
210
221
  (r'\n', Text),
211
222
  (r'\s+', Text),
212
223
  (r'\\\n', Text),
213
- # Keywords
214
- (r'(add|alarm|break|case|const|continue|delete|do|else|enum|event'
215
- r'|export|for|function|if|global|hook|local|module|next'
216
- r'|of|print|redef|return|schedule|switch|type|when|while)\b', Keyword),
217
- (r'(addr|any|bool|count|counter|double|file|int|interval|net'
218
- r'|pattern|port|record|set|string|subnet|table|time|timer'
219
- r'|vector)\b', Keyword.Type),
224
+ ],
225
+
226
+ 'comments': [
227
+ (r'#.*$', Comment),
228
+ ],
229
+
230
+ 'directives': [
231
+ (r'@(load-plugin|load-sigs|load|unload)\b.*$', Comment.Preproc),
232
+ (r'@(DEBUG|DIR|FILENAME|deprecated|if|ifdef|ifndef|else|endif)\b', Comment.Preproc),
233
+ (r'(@prefixes)\s*(\+?=).*$', Comment.Preproc),
234
+ ],
235
+
236
+ 'attributes': [
237
+ (words(('redef', 'priority', 'log', 'optional', 'default', 'add_func',
238
+ 'delete_func', 'expire_func', 'read_expire', 'write_expire',
239
+ 'create_expire', 'synchronized', 'persistent', 'rotate_interval',
240
+ 'rotate_size', 'encrypt', 'raw_output', 'mergeable', 'error_handler',
241
+ 'type_column', 'deprecated'),
242
+ prefix=r'&', suffix=r'\b'),
243
+ Keyword.Pseudo),
244
+ ],
245
+
246
+ 'types': [
247
+ (words(('any',
248
+ 'enum', 'record', 'set', 'table', 'vector',
249
+ 'function', 'hook', 'event',
250
+ 'addr', 'bool', 'count', 'double', 'file', 'int', 'interval',
251
+ 'pattern', 'port', 'string', 'subnet', 'time'),
252
+ suffix=r'\b'),
253
+ Keyword.Type),
254
+
255
+ (r'(opaque)(\s+)(of)(\s+)((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)\b',
256
+ bygroups(Keyword.Type, Text, Operator.Word, Text, Keyword.Type)),
257
+
258
+ (r'(type)(\s+)((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)(\s*)(:)(\s*)\b(record|enum)\b',
259
+ bygroups(Keyword, Text, Name.Class, Text, Operator, Text, Keyword.Type)),
260
+
261
+ (r'(type)(\s+)((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)(\s*)(:)',
262
+ bygroups(Keyword, Text, Name, Text, Operator)),
263
+
264
+ (r'(redef)(\s+)(record|enum)(\s+)((?:[A-Za-z_]\w*)(?:::(?:[A-Za-z_]\w*))*)\b',
265
+ bygroups(Keyword, Text, Keyword.Type, Text, Name.Class)),
266
+ ],
267
+
268
+ 'keywords': [
269
+ (words(('redef', 'export', 'if', 'else', 'for', 'while',
270
+ 'return', 'break', 'next', 'continue', 'fallthrough',
271
+ 'switch', 'default', 'case',
272
+ 'add', 'delete',
273
+ 'when', 'timeout', 'schedule'),
274
+ suffix=r'\b'),
275
+ Keyword),
276
+ (r'(print)\b', Keyword),
277
+ (r'(global|local|const|option)\b', Keyword.Declaration),
278
+ (r'(module)(\s+)(([A-Za-z_]\w*)(?:::([A-Za-z_]\w*))*)\b',
279
+ bygroups(Keyword.Namespace, Text, Name.Namespace)),
280
+ ],
281
+
282
+ 'literals': [
283
+ (r'"', String, 'string'),
284
+
285
+ # Not the greatest match for patterns, but generally helps
286
+ # disambiguate between start of a pattern and just a division
287
+ # operator.
288
+ (r'/(?=.*/)', String.Regex, 'regex'),
289
+
220
290
  (r'(T|F)\b', Keyword.Constant),
221
- (r'(&)((?:add|delete|expire)_func|attr|(?:create|read|write)_expire'
222
- r'|default|disable_print_hook|raw_output|encrypt|group|log'
223
- r'|mergeable|optional|persistent|priority|redef'
224
- r'|rotate_(?:interval|size)|synchronized)\b',
225
- bygroups(Punctuation, Keyword)),
226
- (r'\s+module\b', Keyword.Namespace),
227
- # Addresses, ports and networks
228
- (r'\d+/(tcp|udp|icmp|unknown)\b', Number),
229
- (r'(\d+\.){3}\d+', Number),
230
- (r'(' + _hex + r'){7}' + _hex, Number),
231
- (r'0x' + _hex + r'(' + _hex + r'|:)*::(' + _hex + r'|:)*', Number),
232
- (r'((\d+|:)(' + _hex + r'|:)*)?::(' + _hex + r'|:)*', Number),
233
- (r'(\d+\.\d+\.|(\d+\.){2}\d+)', Number),
291
+
292
+ # Port
293
+ (r'\d{1,5}/(udp|tcp|icmp|unknown)\b', Number),
294
+
295
+ # IPv4 Address
296
+ (r'(\d{1,3}.){3}(\d{1,3})\b', Number),
297
+
298
+ # IPv6 Address
299
+ (r'\[([0-9a-fA-F]{0,4}:){2,7}([0-9a-fA-F]{0,4})?((\d{1,3}.){3}(\d{1,3}))?\]', Number),
300
+
301
+ # Numeric
302
+ (r'0[xX]' + _hex + r'+\b', Number.Hex),
303
+ (_float + r'\s*(day|hr|min|sec|msec|usec)s?\b', Number.Float),
304
+ (_float + r'\b', Number.Float),
305
+ (r'(\d+)\b', Number.Integer),
306
+
234
307
  # Hostnames
235
308
  (_h + r'(\.' + _h + r')+', String),
236
- # Numeric
237
- (_float + r'\s+(day|hr|min|sec|msec|usec)s?\b', Literal.Date),
238
- (r'0[xX]' + _hex, Number.Hex),
239
- (_float, Number.Float),
240
- (r'\d+', Number.Integer),
241
- (r'/', String.Regex, 'regex'),
242
- (r'"', String, 'string'),
243
- # Operators
244
- (r'[!%*/+:<=>?~|-]', Operator),
309
+ ],
310
+
311
+ 'operators': [
312
+ (r'[!%*/+<=>~|&^-]', Operator),
245
313
  (r'([-+=&|]{2}|[+=!><-]=)', Operator),
246
- (r'(in|match)\b', Operator.Word),
247
- (r'[{}()\[\]$.,;]', Punctuation),
248
- # Identfier
249
- (r'([_a-zA-Z]\w*)(::)', bygroups(Name, Name.Namespace)),
314
+ (r'(in|as|is|of)\b', Operator.Word),
315
+ (r'\??\$', Operator),
316
+ ],
317
+
318
+ 'punctuation': [
319
+ (r'[{}()\[\],;.]', Punctuation),
320
+ # The "ternary if", which uses '?' and ':', could instead be
321
+ # treated as an Operator, but colons are more frequently used to
322
+ # separate field/identifier names from their types, so the (often)
323
+ # less-prominent Punctuation is used even with '?' for consistency.
324
+ (r'[?:]', Punctuation),
325
+ ],
326
+
327
+ 'identifiers': [
328
+ (r'([a-zA-Z_]\w*)(::)', bygroups(Name, Punctuation)),
250
329
  (r'[a-zA-Z_]\w*', Name)
251
330
  ],
331
+
252
332
  'string': [
333
+ (r'\\.', String.Escape),
334
+ (r'%-?[0-9]*(\.[0-9]+)?[DTd-gsx]', String.Escape),
253
335
  (r'"', String, '#pop'),
254
- (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
255
- (r'[^\\"\n]+', String),
256
- (r'\\\n', String),
257
- (r'\\', String)
336
+ (r'.', String),
258
337
  ],
338
+
259
339
  'regex': [
340
+ (r'\\.', String.Escape),
260
341
  (r'/', String.Regex, '#pop'),
261
- (r'\\[\\nt/]', String.Regex), # String.Escape is too intense here.
262
- (r'[^\\/\n]+', String.Regex),
263
- (r'\\\n', String.Regex),
264
- (r'\\', String.Regex)
265
- ]
342
+ (r'.', String.Regex),
343
+ ],
266
344
  }
267
345
 
268
346
 
347
+ BroLexer = ZeekLexer
348
+
349
+
269
350
  class PuppetLexer(RegexLexer):
270
351
  """
271
352
  For `Puppet <http://puppetlabs.com/>`__ configuration DSL.
@@ -300,7 +381,7 @@ class PuppetLexer(RegexLexer):
300
381
  ],
301
382
 
302
383
  'names': [
303
- ('[a-zA-Z_]\w*', Name.Attribute),
384
+ (r'[a-zA-Z_]\w*', Name.Attribute),
304
385
  (r'(\$\S+)(\[)(\S+)(\])', bygroups(Name.Variable, Punctuation,
305
386
  String, Punctuation)),
306
387
  (r'\$\S+', Name.Variable),
@@ -550,7 +631,7 @@ class AlloyLexer(RegexLexer):
550
631
  (iden_rex, Name),
551
632
  (r'[:,]', Punctuation),
552
633
  (r'[0-9]+', Number.Integer),
553
- (r'"(\\\\|\\"|[^"])*"', String),
634
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
554
635
  (r'\n', Text),
555
636
  ]
556
637
  }
@@ -558,7 +639,7 @@ class AlloyLexer(RegexLexer):
558
639
 
559
640
  class PanLexer(RegexLexer):
560
641
  """
561
- Lexer for `pan <http://github.com/quattor/pan/>`_ source files.
642
+ Lexer for `pan <https://github.com/quattor/pan/>`_ source files.
562
643
 
563
644
  Based on tcsh lexer.
564
645
 
@@ -688,7 +769,7 @@ class CrmshLexer(RegexLexer):
688
769
  (r'([\w#$-]+)(?:(:)(%s))?(?![\w#$-])' % rsc_role_action,
689
770
  bygroups(Name, Punctuation, Operator.Word)),
690
771
  # punctuation
691
- (r'(\\(?=\n)|[[\](){}/:@])', Punctuation),
772
+ (r'(\\(?=\n)|[\[\](){}/:@])', Punctuation),
692
773
  (r'\s+|\n', Whitespace),
693
774
  ],
694
775
  }
@@ -745,7 +826,7 @@ class FlatlineLexer(RegexLexer):
745
826
  (r'0x-?[a-f\d]+', Number.Hex),
746
827
 
747
828
  # strings, symbols and characters
748
- (r'"(\\\\|\\"|[^"])*"', String),
829
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
749
830
  (r"\\(.|[a-z]+)", String.Char),
750
831
 
751
832
  # expression template placeholder