pygments.rb 1.1.2 → 2.0.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 (383) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +28 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +5 -5
  6. data/CHANGELOG.adoc +128 -0
  7. data/Gemfile +3 -1
  8. data/LICENSE +1 -1
  9. data/README.adoc +160 -0
  10. data/Rakefile +13 -19
  11. data/bench.rb +8 -7
  12. data/cache-lexers.rb +3 -2
  13. data/lexers +0 -0
  14. data/lib/pygments.rb +10 -11
  15. data/lib/pygments/lexer.rb +5 -5
  16. data/lib/pygments/mentos.py +23 -110
  17. data/lib/pygments/popen.rb +148 -229
  18. data/lib/pygments/version.rb +2 -2
  19. data/pygments.rb.gemspec +12 -11
  20. data/test/test_pygments.rb +46 -104
  21. data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +23 -3
  22. data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
  23. data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
  24. data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
  25. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
  26. data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
  27. data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
  28. data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
  29. data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
  30. data/vendor/pygments-main/bin/pygmentize +8 -0
  31. data/vendor/pygments-main/pygments/__init__.py +6 -11
  32. data/vendor/pygments-main/pygments/__main__.py +18 -0
  33. data/vendor/pygments-main/pygments/cmdline.py +94 -41
  34. data/vendor/pygments-main/pygments/console.py +6 -9
  35. data/vendor/pygments-main/pygments/filter.py +4 -6
  36. data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
  37. data/vendor/pygments-main/pygments/formatter.py +4 -4
  38. data/vendor/pygments-main/pygments/formatters/__init__.py +42 -6
  39. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
  40. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  41. data/vendor/pygments-main/pygments/formatters/html.py +223 -135
  42. data/vendor/pygments-main/pygments/formatters/img.py +102 -38
  43. data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
  44. data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
  45. data/vendor/pygments-main/pygments/formatters/other.py +12 -8
  46. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
  47. data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
  48. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
  49. data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
  50. data/vendor/pygments-main/pygments/lexer.py +41 -39
  51. data/vendor/pygments-main/pygments/lexers/__init__.py +62 -15
  52. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -5
  53. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -15
  54. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +11 -12
  55. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1338
  56. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +8 -1
  57. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -4
  58. data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -33
  59. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -2
  60. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
  61. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  62. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -20
  63. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -16
  64. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -2
  65. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -3
  66. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -125
  67. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +6 -4
  68. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  69. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
  70. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
  71. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  72. data/vendor/pygments-main/pygments/lexers/actionscript.py +8 -3
  73. data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
  74. data/vendor/pygments-main/pygments/lexers/algebra.py +20 -1
  75. data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
  76. data/vendor/pygments-main/pygments/lexers/ampl.py +3 -3
  77. data/vendor/pygments-main/pygments/lexers/apl.py +15 -15
  78. data/vendor/pygments-main/pygments/lexers/archetype.py +3 -3
  79. data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +445 -70
  81. data/vendor/pygments-main/pygments/lexers/automation.py +3 -3
  82. data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
  83. data/vendor/pygments-main/pygments/lexers/basic.py +166 -4
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +13 -9
  85. data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +69 -36
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +137 -45
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +68 -43
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +20 -21
  90. data/vendor/pygments-main/pygments/lexers/chapel.py +25 -14
  91. data/vendor/pygments-main/pygments/lexers/clean.py +135 -244
  92. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
  93. data/vendor/pygments-main/pygments/lexers/configs.py +188 -37
  94. data/vendor/pygments-main/pygments/lexers/console.py +1 -1
  95. data/vendor/pygments-main/pygments/lexers/crystal.py +31 -23
  96. data/vendor/pygments-main/pygments/lexers/csound.py +288 -187
  97. data/vendor/pygments-main/pygments/lexers/css.py +18 -16
  98. data/vendor/pygments-main/pygments/lexers/d.py +10 -5
  99. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
  100. data/vendor/pygments-main/pygments/lexers/data.py +240 -97
  101. data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
  102. data/vendor/pygments-main/pygments/lexers/diff.py +4 -4
  103. data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -24
  104. data/vendor/pygments-main/pygments/lexers/dsls.py +147 -65
  105. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -18
  106. data/vendor/pygments-main/pygments/lexers/ecl.py +16 -2
  107. data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
  108. data/vendor/pygments-main/pygments/lexers/elm.py +5 -5
  109. data/vendor/pygments-main/pygments/lexers/email.py +151 -0
  110. data/vendor/pygments-main/pygments/lexers/erlang.py +29 -32
  111. data/vendor/pygments-main/pygments/lexers/esoteric.py +54 -25
  112. data/vendor/pygments-main/pygments/lexers/ezhil.py +24 -15
  113. data/vendor/pygments-main/pygments/lexers/factor.py +1 -1
  114. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -1
  115. data/vendor/pygments-main/pygments/lexers/felix.py +1 -1
  116. data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
  117. data/vendor/pygments-main/pygments/lexers/forth.py +41 -40
  118. data/vendor/pygments-main/pygments/lexers/fortran.py +5 -4
  119. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
  120. data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
  121. data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
  122. data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
  123. data/vendor/pygments-main/pygments/lexers/go.py +1 -1
  124. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +63 -6
  125. data/vendor/pygments-main/pygments/lexers/graph.py +14 -9
  126. data/vendor/pygments-main/pygments/lexers/graphics.py +272 -25
  127. data/vendor/pygments-main/pygments/lexers/haskell.py +52 -22
  128. data/vendor/pygments-main/pygments/lexers/haxe.py +6 -6
  129. data/vendor/pygments-main/pygments/lexers/hdl.py +176 -86
  130. data/vendor/pygments-main/pygments/lexers/hexdump.py +18 -12
  131. data/vendor/pygments-main/pygments/lexers/html.py +31 -19
  132. data/vendor/pygments-main/pygments/lexers/idl.py +20 -9
  133. data/vendor/pygments-main/pygments/lexers/igor.py +244 -112
  134. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -2
  135. data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
  136. data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -15
  137. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -2
  138. data/vendor/pygments-main/pygments/lexers/j.py +3 -3
  139. data/vendor/pygments-main/pygments/lexers/javascript.py +100 -66
  140. data/vendor/pygments-main/pygments/lexers/julia.py +46 -48
  141. data/vendor/pygments-main/pygments/lexers/jvm.py +265 -165
  142. data/vendor/pygments-main/pygments/lexers/lisp.py +882 -804
  143. data/vendor/pygments-main/pygments/lexers/make.py +10 -6
  144. data/vendor/pygments-main/pygments/lexers/markup.py +213 -43
  145. data/vendor/pygments-main/pygments/lexers/math.py +1 -1
  146. data/vendor/pygments-main/pygments/lexers/matlab.py +98 -41
  147. data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
  148. data/vendor/pygments-main/pygments/lexers/ml.py +198 -9
  149. data/vendor/pygments-main/pygments/lexers/modeling.py +26 -18
  150. data/vendor/pygments-main/pygments/lexers/modula2.py +25 -6
  151. data/vendor/pygments-main/pygments/lexers/monte.py +4 -3
  152. data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
  153. data/vendor/pygments-main/pygments/lexers/ncl.py +85 -244
  154. data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -4
  155. data/vendor/pygments-main/pygments/lexers/nit.py +1 -1
  156. data/vendor/pygments-main/pygments/lexers/nix.py +1 -1
  157. data/vendor/pygments-main/pygments/lexers/oberon.py +17 -1
  158. data/vendor/pygments-main/pygments/lexers/objective.py +16 -16
  159. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -1
  160. data/vendor/pygments-main/pygments/lexers/other.py +1 -1
  161. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -1
  162. data/vendor/pygments-main/pygments/lexers/parsers.py +23 -58
  163. data/vendor/pygments-main/pygments/lexers/pascal.py +23 -23
  164. data/vendor/pygments-main/pygments/lexers/pawn.py +30 -24
  165. data/vendor/pygments-main/pygments/lexers/perl.py +276 -160
  166. data/vendor/pygments-main/pygments/lexers/php.py +64 -10
  167. data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
  168. data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
  169. data/vendor/pygments-main/pygments/lexers/praat.py +38 -30
  170. data/vendor/pygments-main/pygments/lexers/prolog.py +36 -36
  171. data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
  172. data/vendor/pygments-main/pygments/lexers/python.py +439 -226
  173. data/vendor/pygments-main/pygments/lexers/qvt.py +6 -6
  174. data/vendor/pygments-main/pygments/lexers/r.py +13 -275
  175. data/vendor/pygments-main/pygments/lexers/rdf.py +232 -39
  176. data/vendor/pygments-main/pygments/lexers/rebol.py +8 -8
  177. data/vendor/pygments-main/pygments/lexers/resource.py +2 -2
  178. data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
  179. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
  180. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -1
  181. data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -31
  182. data/vendor/pygments-main/pygments/lexers/ruby.py +22 -24
  183. data/vendor/pygments-main/pygments/lexers/rust.py +86 -71
  184. data/vendor/pygments-main/pygments/lexers/sas.py +7 -7
  185. data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
  186. data/vendor/pygments-main/pygments/lexers/scripting.py +75 -13
  187. data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
  188. data/vendor/pygments-main/pygments/lexers/shell.py +175 -51
  189. data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
  190. data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
  191. data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -2
  192. data/vendor/pygments-main/pygments/lexers/smv.py +30 -26
  193. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
  194. data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
  195. data/vendor/pygments-main/pygments/lexers/special.py +5 -3
  196. data/vendor/pygments-main/pygments/lexers/sql.py +333 -177
  197. data/vendor/pygments-main/pygments/lexers/stata.py +107 -42
  198. data/vendor/pygments-main/pygments/lexers/supercollider.py +6 -1
  199. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
  200. data/vendor/pygments-main/pygments/lexers/templates.py +144 -132
  201. data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
  202. data/vendor/pygments-main/pygments/lexers/testing.py +6 -6
  203. data/vendor/pygments-main/pygments/lexers/text.py +2 -1
  204. data/vendor/pygments-main/pygments/lexers/textedit.py +4 -4
  205. data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -13
  206. data/vendor/pygments-main/pygments/lexers/theorem.py +69 -53
  207. data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
  208. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
  209. data/vendor/pygments-main/pygments/lexers/typoscript.py +8 -14
  210. data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
  211. data/vendor/pygments-main/pygments/lexers/urbi.py +14 -1
  212. data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
  213. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  214. data/vendor/pygments-main/pygments/lexers/verification.py +15 -12
  215. data/vendor/pygments-main/pygments/lexers/web.py +1 -1
  216. data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
  217. data/vendor/pygments-main/pygments/lexers/webmisc.py +50 -38
  218. data/vendor/pygments-main/pygments/lexers/whiley.py +11 -12
  219. data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
  220. data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
  221. data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
  222. data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
  223. data/vendor/pygments-main/pygments/modeline.py +6 -5
  224. data/vendor/pygments-main/pygments/plugin.py +14 -18
  225. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  226. data/vendor/pygments-main/pygments/scanner.py +2 -2
  227. data/vendor/pygments-main/pygments/sphinxext.py +2 -4
  228. data/vendor/pygments-main/pygments/style.py +61 -24
  229. data/vendor/pygments-main/pygments/styles/__init__.py +13 -5
  230. data/vendor/pygments-main/pygments/styles/abap.py +29 -0
  231. data/vendor/pygments-main/pygments/styles/algol.py +1 -1
  232. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
  233. data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
  234. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  235. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  236. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  237. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  238. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  239. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  240. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  241. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  242. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  243. data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
  244. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
  245. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  246. data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
  247. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  248. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  249. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  250. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  251. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  252. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  253. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +89 -0
  254. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  255. data/vendor/pygments-main/pygments/styles/sas.py +3 -0
  256. data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
  257. data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
  258. data/vendor/pygments-main/pygments/styles/stata_light.py +39 -0
  259. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  260. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  261. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  262. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  263. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  264. data/vendor/pygments-main/pygments/token.py +1 -1
  265. data/vendor/pygments-main/pygments/unistring.py +47 -108
  266. data/vendor/pygments-main/pygments/util.py +19 -95
  267. metadata +71 -137
  268. data/CHANGELOG.md +0 -98
  269. data/README.md +0 -121
  270. data/circle.yml +0 -20
  271. data/test/test_data.c +0 -2581
  272. data/test/test_data.py +0 -514
  273. data/test/test_data_generated +0 -2582
  274. data/vendor/custom_lexers/github.py +0 -565
  275. data/vendor/pygments-main/CHANGES +0 -1163
  276. data/vendor/pygments-main/MANIFEST.in +0 -6
  277. data/vendor/pygments-main/Makefile +0 -65
  278. data/vendor/pygments-main/README.rst +0 -39
  279. data/vendor/pygments-main/REVISION +0 -1
  280. data/vendor/pygments-main/TODO +0 -12
  281. data/vendor/pygments-main/doc/Makefile +0 -153
  282. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  283. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  284. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  285. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  286. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  287. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  288. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  289. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  290. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  291. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  292. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  293. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  294. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  295. data/vendor/pygments-main/doc/conf.py +0 -241
  296. data/vendor/pygments-main/doc/docs/api.rst +0 -331
  297. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  298. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  299. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -149
  300. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  301. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  302. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  303. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  304. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  305. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  306. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  307. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -689
  308. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  309. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  310. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  311. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  312. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  313. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  314. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  315. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  316. data/vendor/pygments-main/doc/download.rst +0 -41
  317. data/vendor/pygments-main/doc/faq.rst +0 -139
  318. data/vendor/pygments-main/doc/index.rst +0 -54
  319. data/vendor/pygments-main/doc/languages.rst +0 -154
  320. data/vendor/pygments-main/doc/make.bat +0 -190
  321. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  322. data/vendor/pygments-main/external/autopygmentize +0 -84
  323. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  324. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  325. data/vendor/pygments-main/external/moin-parser.py +0 -112
  326. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  327. data/vendor/pygments-main/external/rst-directive.py +0 -82
  328. data/vendor/pygments-main/pygmentize +0 -8
  329. data/vendor/pygments-main/pygments/lexers/github.py +0 -565
  330. data/vendor/pygments-main/pygments/styles/stata.py +0 -37
  331. data/vendor/pygments-main/requirements.txt +0 -5
  332. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  333. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  334. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  335. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  336. data/vendor/pygments-main/scripts/find_error.py +0 -1
  337. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  338. data/vendor/pygments-main/scripts/pylintrc +0 -301
  339. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  340. data/vendor/pygments-main/setup.cfg +0 -10
  341. data/vendor/pygments-main/setup.py +0 -77
  342. data/vendor/pygments-main/tox.ini +0 -7
  343. data/vendor/simplejson/.gitignore +0 -10
  344. data/vendor/simplejson/.travis.yml +0 -5
  345. data/vendor/simplejson/CHANGES.txt +0 -291
  346. data/vendor/simplejson/LICENSE.txt +0 -19
  347. data/vendor/simplejson/MANIFEST.in +0 -5
  348. data/vendor/simplejson/README.rst +0 -19
  349. data/vendor/simplejson/conf.py +0 -179
  350. data/vendor/simplejson/index.rst +0 -628
  351. data/vendor/simplejson/scripts/make_docs.py +0 -18
  352. data/vendor/simplejson/setup.py +0 -104
  353. data/vendor/simplejson/simplejson/__init__.py +0 -510
  354. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  355. data/vendor/simplejson/simplejson/decoder.py +0 -425
  356. data/vendor/simplejson/simplejson/encoder.py +0 -567
  357. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  358. data/vendor/simplejson/simplejson/scanner.py +0 -77
  359. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  360. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  361. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  362. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  363. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  364. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  365. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  366. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  367. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  368. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  369. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  370. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  371. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  372. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  373. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  374. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  375. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  376. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  377. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  378. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  379. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  380. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  381. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  382. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  383. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for "business-oriented" languages.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -256,6 +256,7 @@ class ABAPLexer(RegexLexer):
256
256
  (r'\s+', Text),
257
257
  (r'^\*.*$', Comment.Single),
258
258
  (r'\".*?\n', Comment.Single),
259
+ (r'##\w+', Comment.Special),
259
260
  ],
260
261
  'variable-names': [
261
262
  (r'<\S+>', Name.Variable),
@@ -264,8 +265,8 @@ class ABAPLexer(RegexLexer):
264
265
  'root': [
265
266
  include('common'),
266
267
  # function calls
267
- (r'(CALL\s+(?:BADI|CUSTOMER-FUNCTION|FUNCTION))(\s+)(\'?\S+\'?)',
268
- bygroups(Keyword, Text, Name.Function)),
268
+ (r'CALL\s+(?:BADI|CUSTOMER-FUNCTION|FUNCTION)',
269
+ Keyword),
269
270
  (r'(CALL\s+(?:DIALOG|SCREEN|SUBSCREEN|SELECTION-SCREEN|'
270
271
  r'TRANSACTION|TRANSFORMATION))\b',
271
272
  Keyword),
@@ -285,6 +286,12 @@ class ABAPLexer(RegexLexer):
285
286
  # call methodnames returning style
286
287
  (r'(?<=(=|-)>)([\w\-~]+)(?=\()', Name.Function),
287
288
 
289
+ # text elements
290
+ (r'(TEXT)(-)(\d{3})',
291
+ bygroups(Keyword, Punctuation, Number.Integer)),
292
+ (r'(TEXT)(-)(\w{3})',
293
+ bygroups(Keyword, Punctuation, Name.Variable)),
294
+
288
295
  # keywords with dashes in them.
289
296
  # these need to be first, because for instance the -ID part
290
297
  # of MESSAGE-ID wouldn't get highlighted if MESSAGE was
@@ -301,13 +308,13 @@ class ABAPLexer(RegexLexer):
301
308
  r'OUTPUT-LENGTH|PRINT-CONTROL|'
302
309
  r'SELECT-OPTIONS|START-OF-SELECTION|SUBTRACT-CORRESPONDING|'
303
310
  r'SYNTAX-CHECK|SYSTEM-EXCEPTIONS|'
304
- r'TYPE-POOL|TYPE-POOLS'
311
+ r'TYPE-POOL|TYPE-POOLS|NO-DISPLAY'
305
312
  r')\b', Keyword),
306
313
 
307
314
  # keyword kombinations
308
- (r'CREATE\s+(PUBLIC|PRIVATE|DATA|OBJECT)|'
309
- r'((PUBLIC|PRIVATE|PROTECTED)\s+SECTION|'
310
- r'(TYPE|LIKE)(\s+(LINE\s+OF|REF\s+TO|'
315
+ (r'(?<![-\>])(CREATE\s+(PUBLIC|PRIVATE|DATA|OBJECT)|'
316
+ r'(PUBLIC|PRIVATE|PROTECTED)\s+SECTION|'
317
+ r'(TYPE|LIKE)\s+((LINE\s+OF|REF\s+TO|'
311
318
  r'(SORTED|STANDARD|HASHED)\s+TABLE\s+OF))?|'
312
319
  r'FROM\s+(DATABASE|MEMORY)|CALL\s+METHOD|'
313
320
  r'(GROUP|ORDER) BY|HAVING|SEPARATED BY|'
@@ -343,10 +350,16 @@ class ABAPLexer(RegexLexer):
343
350
  r'(BEGIN|END)\s+OF|'
344
351
  r'DELETE(\s+ADJACENT\s+DUPLICATES\sFROM)?|'
345
352
  r'COMPARING(\s+ALL\s+FIELDS)?|'
346
- r'INSERT(\s+INITIAL\s+LINE\s+INTO|\s+LINES\s+OF)?|'
353
+ r'(INSERT|APPEND)(\s+INITIAL\s+LINE\s+(IN)?TO|\s+LINES\s+OF)?|'
347
354
  r'IN\s+((BYTE|CHARACTER)\s+MODE|PROGRAM)|'
348
355
  r'END-OF-(DEFINITION|PAGE|SELECTION)|'
349
356
  r'WITH\s+FRAME(\s+TITLE)|'
357
+ r'(REPLACE|FIND)\s+((FIRST|ALL)\s+OCCURRENCES?\s+OF\s+)?(SUBSTRING|REGEX)?|'
358
+ r'MATCH\s+(LENGTH|COUNT|LINE|OFFSET)|'
359
+ r'(RESPECTING|IGNORING)\s+CASE|'
360
+ r'IN\s+UPDATE\s+TASK|'
361
+ r'(SOURCE|RESULT)\s+(XML)?|'
362
+ r'REFERENCE\s+INTO|'
350
363
 
351
364
  # simple kombinations
352
365
  r'AND\s+(MARK|RETURN)|CLIENT\s+SPECIFIED|CORRESPONDING\s+FIELDS\s+OF|'
@@ -355,39 +368,41 @@ class ABAPLexer(RegexLexer):
355
368
  r'MODIFY\s+SCREEN|NESTING\s+LEVEL|NO\s+INTERVALS|OF\s+STRUCTURE|'
356
369
  r'RADIOBUTTON\s+GROUP|RANGE\s+OF|REF\s+TO|SUPPRESS DIALOG|'
357
370
  r'TABLE\s+OF|UPPER\s+CASE|TRANSPORTING\s+NO\s+FIELDS|'
358
- r'VALUE\s+CHECK|VISIBLE\s+LENGTH|HEADER\s+LINE)\b', Keyword),
371
+ r'VALUE\s+CHECK|VISIBLE\s+LENGTH|HEADER\s+LINE|COMMON\s+PART)\b', Keyword),
359
372
 
360
373
  # single word keywords.
361
- (r'(^|(?<=(\s|\.)))(ABBREVIATED|ADD|ALIASES|APPEND|ASSERT|'
362
- r'ASSIGN(ING)?|AT(\s+FIRST)?|'
374
+ (r'(^|(?<=(\s|\.)))(ABBREVIATED|ABSTRACT|ADD|ALIASES|ALIGN|ALPHA|'
375
+ r'ASSERT|AS|ASSIGN(ING)?|AT(\s+FIRST)?|'
363
376
  r'BACK|BLOCK|BREAK-POINT|'
364
377
  r'CASE|CATCH|CHANGING|CHECK|CLASS|CLEAR|COLLECT|COLOR|COMMIT|'
365
378
  r'CREATE|COMMUNICATION|COMPONENTS?|COMPUTE|CONCATENATE|CONDENSE|'
366
- r'CONSTANTS|CONTEXTS|CONTINUE|CONTROLS|'
367
- r'DATA|DECIMALS|DEFAULT|DEFINE|DEFINITION|DEFERRED|DEMAND|'
368
- r'DETAIL|DIRECTORY|DIVIDE|DO|'
369
- r'ELSE(IF)?|ENDAT|ENDCASE|ENDCLASS|ENDDO|ENDFORM|ENDFUNCTION|'
370
- r'ENDIF|ENDLOOP|ENDMETHOD|ENDMODULE|ENDSELECT|ENDTRY|'
371
- r'ENHANCEMENT|EVENTS|EXCEPTIONS|EXIT|EXPORT|EXPORTING|EXTRACT|'
372
- r'FETCH|FIELDS?|FIND|FOR|FORM|FORMAT|FREE|FROM|'
379
+ r'CONSTANTS|CONTEXTS|CONTINUE|CONTROLS|COUNTRY|CURRENCY|'
380
+ r'DATA|DATE|DECIMALS|DEFAULT|DEFINE|DEFINITION|DEFERRED|DEMAND|'
381
+ r'DETAIL|DIRECTORY|DIVIDE|DO|DUMMY|'
382
+ r'ELSE(IF)?|ENDAT|ENDCASE|ENDCATCH|ENDCLASS|ENDDO|ENDFORM|ENDFUNCTION|'
383
+ r'ENDIF|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDSELECT|ENDTRY|ENDWHILE|'
384
+ r'ENHANCEMENT|EVENTS|EXACT|EXCEPTIONS?|EXIT|EXPONENT|EXPORT|EXPORTING|EXTRACT|'
385
+ r'FETCH|FIELDS?|FOR|FORM|FORMAT|FREE|FROM|FUNCTION|'
373
386
  r'HIDE|'
374
387
  r'ID|IF|IMPORT|IMPLEMENTATION|IMPORTING|IN|INCLUDE|INCLUDING|'
375
388
  r'INDEX|INFOTYPES|INITIALIZATION|INTERFACE|INTERFACES|INTO|'
376
- r'LENGTH|LINES|LOAD|LOCAL|'
389
+ r'LANGUAGE|LEAVE|LENGTH|LINES|LOAD|LOCAL|'
377
390
  r'JOIN|'
378
391
  r'KEY|'
379
- r'MAXIMUM|MESSAGE|METHOD[S]?|MINIMUM|MODULE|MODIFY|MOVE|MULTIPLY|'
380
- r'NODES|'
381
- r'OBLIGATORY|OF|OFF|ON|OVERLAY|'
382
- r'PACK|PARAMETERS|PERCENTAGE|POSITION|PROGRAM|PROVIDE|PUBLIC|PUT|'
383
- r'RAISE|RAISING|RANGES|READ|RECEIVE|REFRESH|REJECT|REPORT|RESERVE|'
384
- r'RESUME|RETRY|RETURN|RETURNING|RIGHT|ROLLBACK|'
385
- r'SCROLL|SEARCH|SELECT|SHIFT|SINGLE|SKIP|SORT|SPLIT|STATICS|STOP|'
386
- r'SUBMIT|SUBTRACT|SUM|SUMMARY|SUMMING|SUPPLY|'
387
- r'TABLE|TABLES|TIMES|TITLE|TO|TOP-OF-PAGE|TRANSFER|TRANSLATE|TRY|TYPES|'
392
+ r'NEXT|'
393
+ r'MAXIMUM|MESSAGE|METHOD[S]?|MINIMUM|MODULE|MODIFIER|MODIFY|MOVE|MULTIPLY|'
394
+ r'NODES|NUMBER|'
395
+ r'OBLIGATORY|OBJECT|OF|OFF|ON|OTHERS|OVERLAY|'
396
+ r'PACK|PAD|PARAMETERS|PERCENTAGE|POSITION|PROGRAM|PROVIDE|PUBLIC|PUT|PF\d\d|'
397
+ r'RAISE|RAISING|RANGES?|READ|RECEIVE|REDEFINITION|REFRESH|REJECT|REPORT|RESERVE|'
398
+ r'RESUME|RETRY|RETURN|RETURNING|RIGHT|ROLLBACK|REPLACE|'
399
+ r'SCROLL|SEARCH|SELECT|SHIFT|SIGN|SINGLE|SIZE|SKIP|SORT|SPLIT|STATICS|STOP|'
400
+ r'STYLE|SUBMATCHES|SUBMIT|SUBTRACT|SUM(?!\()|SUMMARY|SUMMING|SUPPLY|'
401
+ r'TABLE|TABLES|TIMESTAMP|TIMES?|TIMEZONE|TITLE|\??TO|'
402
+ r'TOP-OF-PAGE|TRANSFER|TRANSLATE|TRY|TYPES|'
388
403
  r'ULINE|UNDER|UNPACK|UPDATE|USING|'
389
- r'VALUE|VALUES|VIA|'
390
- r'WAIT|WHEN|WHERE|WHILE|WITH|WINDOW|WRITE)\b', Keyword),
404
+ r'VALUE|VALUES|VIA|VARYING|VARY|'
405
+ r'WAIT|WHEN|WHERE|WIDTH|WHILE|WITH|WINDOW|WRITE|XSD|ZERO)\b', Keyword),
391
406
 
392
407
  # builtins
393
408
  (r'(abs|acos|asin|atan|'
@@ -413,18 +428,21 @@ class ABAPLexer(RegexLexer):
413
428
 
414
429
  # operators which look like variable names before
415
430
  # parsing variable names.
416
- (r'(?<=(\s|.))(AND|EQ|NE|GT|LT|GE|LE|CO|CN|CA|NA|CS|NOT|NS|CP|NP|'
431
+ (r'(?<=(\s|.))(AND|OR|EQ|NE|GT|LT|GE|LE|CO|CN|CA|NA|CS|NOT|NS|CP|NP|'
417
432
  r'BYTE-CO|BYTE-CN|BYTE-CA|BYTE-NA|BYTE-CS|BYTE-NS|'
418
- r'IS\s+(NOT\s+)?(INITIAL|ASSIGNED|REQUESTED|BOUND))\b', Operator),
433
+ r'IS\s+(NOT\s+)?(INITIAL|ASSIGNED|REQUESTED|BOUND))\b', Operator.Word),
419
434
 
420
435
  include('variable-names'),
421
436
 
422
- # standard oparators after variable names,
437
+ # standard operators after variable names,
423
438
  # because < and > are part of field symbols.
424
- (r'[?*<>=\-+]', Operator),
439
+ (r'[?*<>=\-+&]', Operator),
425
440
  (r"'(''|[^'])*'", String.Single),
426
441
  (r"`([^`])*`", String.Single),
427
- (r'[/;:()\[\],.]', Punctuation)
442
+ (r"([|}])([^{}|]*?)([|{])",
443
+ bygroups(Punctuation, String.Single, Punctuation)),
444
+ (r'[/;:()\[\],.]', Punctuation),
445
+ (r'(!)(\w+)', bygroups(Operator, Name)),
428
446
  ],
429
447
  }
430
448
 
@@ -482,11 +500,26 @@ class OpenEdgeLexer(RegexLexer):
482
500
  ],
483
501
  }
484
502
 
503
+ def analyse_text(text):
504
+ """Try to identify OpenEdge ABL based on a few common constructs."""
505
+ result = 0
506
+
507
+ if 'END.' in text:
508
+ result += 0.05
509
+
510
+ if 'END PROCEDURE.' in text:
511
+ result += 0.05
512
+
513
+ if 'ELSE DO:' in text:
514
+ result += 0.05
515
+
516
+ return result
517
+
485
518
 
486
519
  class GoodDataCLLexer(RegexLexer):
487
520
  """
488
521
  Lexer for `GoodData-CL
489
- <http://github.com/gooddata/GoodData-CL/raw/master/cli/src/main/resources/\
522
+ <https://github.com/gooddata/GoodData-CL/raw/master/cli/src/main/resources/\
490
523
  com/gooddata/processor/COMMANDS.txt>`_
491
524
  script files.
492
525
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for C/C++ languages.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -33,10 +33,22 @@ class CFamilyLexer(RegexLexer):
33
33
  #: only one /* */ style comment
34
34
  _ws1 = r'\s*(?:/[*].*?[*]/\s*)?'
35
35
 
36
+ # Hexadecimal part in an hexadecimal integer/floating-point literal.
37
+ # This includes decimal separators matching.
38
+ _hexpart = r'[0-9a-fA-F](\'?[0-9a-fA-F])*'
39
+ # Decimal part in an decimal integer/floating-point literal.
40
+ # This includes decimal separators matching.
41
+ _decpart = r'\d(\'?\d)*'
42
+ # Integer literal suffix (e.g. 'ull' or 'll').
43
+ _intsuffix = r'(([uU][lL]{0,2})|[lL]{1,2}[uU]?)?'
44
+
45
+ # Identifier regex with C and C++ Universal Character Name (UCN) support.
46
+ _ident = r'(?:[a-zA-Z_$]|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8})(?:[\w$]|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8})*'
47
+
36
48
  tokens = {
37
49
  'whitespace': [
38
50
  # preprocessor directives: without whitespace
39
- ('^#if\s+0', Comment.Preproc, 'if0'),
51
+ (r'^#if\s+0', Comment.Preproc, 'if0'),
40
52
  ('^#', Comment.Preproc, 'macro'),
41
53
  # or with whitespace
42
54
  ('^(' + _ws1 + r')(#if\s+0)',
@@ -52,27 +64,33 @@ class CFamilyLexer(RegexLexer):
52
64
  (r'/(\\\n)?[*][\w\W]*', Comment.Multiline),
53
65
  ],
54
66
  'statements': [
55
- (r'(L?)(")', bygroups(String.Affix, String), 'string'),
56
- (r"(L?)(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')",
67
+ (r'([LuU]|u8)?(")', bygroups(String.Affix, String), 'string'),
68
+ (r"([LuU]|u8)?(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')",
57
69
  bygroups(String.Affix, String.Char, String.Char, String.Char)),
58
- (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*', Number.Float),
59
- (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
60
- (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),
61
- (r'0[0-7]+[LlUu]*', Number.Oct),
62
- (r'\d+[LlUu]*', Number.Integer),
70
+
71
+ # Hexadecimal floating-point literals (C11, C++17)
72
+ (r'0[xX](' + _hexpart + r'\.' + _hexpart + r'|\.' + _hexpart + r'|' + _hexpart + r')[pP][+-]?' + _hexpart + r'[lL]?', Number.Float),
73
+
74
+ (r'(-)?(' + _decpart + r'\.' + _decpart + r'|\.' + _decpart + r'|' + _decpart + r')[eE][+-]?' + _decpart + r'[fFlL]?', Number.Float),
75
+ (r'(-)?((' + _decpart + r'\.(' + _decpart + r')?|\.' + _decpart + r')[fFlL]?)|(' + _decpart + r'[fFlL])', Number.Float),
76
+ (r'(-)?0[xX]' + _hexpart + _intsuffix, Number.Hex),
77
+ (r'(-)?0[bB][01](\'?[01])*' + _intsuffix, Number.Bin),
78
+ (r'(-)?0(\'?[0-7])+' + _intsuffix, Number.Oct),
79
+ (r'(-)?' + _decpart + _intsuffix, Number.Integer),
63
80
  (r'\*/', Error),
64
81
  (r'[~!%^&*+=|?:<>/-]', Operator),
65
82
  (r'[()\[\],.]', Punctuation),
83
+ (r'(struct|union)(\s+)', bygroups(Keyword, Text), 'classname'),
66
84
  (words(('asm', 'auto', 'break', 'case', 'const', 'continue',
67
85
  'default', 'do', 'else', 'enum', 'extern', 'for', 'goto',
68
- 'if', 'register', 'restricted', 'return', 'sizeof',
69
- 'static', 'struct', 'switch', 'typedef', 'union',
70
- 'volatile', 'while'),
86
+ 'if', 'register', 'restricted', 'return', 'sizeof', 'struct',
87
+ 'static', 'switch', 'typedef', 'volatile', 'while', 'union',
88
+ 'thread_local', 'alignas', 'alignof', 'static_assert', '_Pragma'),
71
89
  suffix=r'\b'), Keyword),
72
90
  (r'(bool|int|long|float|short|double|char|unsigned|signed|void)\b',
73
91
  Keyword.Type),
74
92
  (words(('inline', '_inline', '__inline', 'naked', 'restrict',
75
- 'thread', 'typename'), suffix=r'\b'), Keyword.Reserved),
93
+ 'thread'), suffix=r'\b'), Keyword.Reserved),
76
94
  # Vector intrinsics
77
95
  (r'(__m(128i|128d|128|64))\b', Keyword.Reserved),
78
96
  # Microsoft-isms
@@ -83,22 +101,22 @@ class CFamilyLexer(RegexLexer):
83
101
  'identifier', 'forceinline', 'assume'),
84
102
  prefix=r'__', suffix=r'\b'), Keyword.Reserved),
85
103
  (r'(true|false|NULL)\b', Name.Builtin),
86
- (r'([a-zA-Z_]\w*)(\s*)(:)(?!:)', bygroups(Name.Label, Text, Punctuation)),
87
- ('[a-zA-Z_]\w*', Name),
104
+ (r'(' + _ident + r')(\s*)(:)(?!:)', bygroups(Name.Label, Text, Punctuation)),
105
+ (_ident, Name)
88
106
  ],
89
107
  'root': [
90
108
  include('whitespace'),
91
109
  # functions
92
- (r'((?:[\w*\s])+?(?:\s|[*]))' # return arguments
93
- r'([a-zA-Z_]\w*)' # method name
110
+ (r'((?:' + _ident + r'(?:[&*\s])+))' # return arguments
111
+ r'(' + _ident + r')' # method name
94
112
  r'(\s*\([^;]*?\))' # signature
95
113
  r'([^;{]*)(\{)',
96
114
  bygroups(using(this), Name.Function, using(this), using(this),
97
115
  Punctuation),
98
116
  'function'),
99
117
  # function declarations
100
- (r'((?:[\w*\s])+?(?:\s|[*]))' # return arguments
101
- r'([a-zA-Z_]\w*)' # method name
118
+ (r'((?:' + _ident + r'(?:[&*\s])+))' # return arguments
119
+ r'(' + _ident + r')' # method name
102
120
  r'(\s*\([^;]*?\))' # signature
103
121
  r'([^;]*)(;)',
104
122
  bygroups(using(this), Name.Function, using(this), using(this),
@@ -108,8 +126,8 @@ class CFamilyLexer(RegexLexer):
108
126
  'statement': [
109
127
  include('whitespace'),
110
128
  include('statements'),
111
- ('[{}]', Punctuation),
112
- (';', Punctuation, '#pop'),
129
+ (r'\}', Punctuation),
130
+ (r'[{;]', Punctuation, '#pop'),
113
131
  ],
114
132
  'function': [
115
133
  include('whitespace'),
@@ -127,8 +145,8 @@ class CFamilyLexer(RegexLexer):
127
145
  (r'\\', String), # stray backslash
128
146
  ],
129
147
  'macro': [
130
- (r'(include)(' + _ws1 + r')([^\n]+)',
131
- bygroups(Comment.Preproc, Text, Comment.PreprocFile)),
148
+ (r'(include)('+_ws1+r')("[^"]+")([^\n]*)', bygroups(Comment.Preproc, using(this), Comment.PreprocFile, Comment.Single)),
149
+ (r'(include)('+_ws1+r')(<[^>]+>)([^\n]*)', bygroups(Comment.Preproc, using(this), Comment.PreprocFile, Comment.Single)),
132
150
  (r'[^/\n]+', Comment.Preproc),
133
151
  (r'/[*](.|\n)*?[*]/', Comment.Multiline),
134
152
  (r'//.*?\n', Comment.Single, '#pop'),
@@ -141,28 +159,46 @@ class CFamilyLexer(RegexLexer):
141
159
  (r'^\s*#el(?:se|if).*\n', Comment.Preproc, '#pop'),
142
160
  (r'^\s*#endif.*?(?<!\\)\n', Comment.Preproc, '#pop'),
143
161
  (r'.*?\n', Comment),
162
+ ],
163
+ 'classname': [
164
+ (_ident, Name.Class, '#pop'),
165
+ # template specification
166
+ (r'\s*(?=>)', Text, '#pop'),
167
+ default('#pop')
144
168
  ]
145
169
  }
146
170
 
147
- stdlib_types = set((
171
+ stdlib_types = {
148
172
  'size_t', 'ssize_t', 'off_t', 'wchar_t', 'ptrdiff_t', 'sig_atomic_t', 'fpos_t',
149
173
  'clock_t', 'time_t', 'va_list', 'jmp_buf', 'FILE', 'DIR', 'div_t', 'ldiv_t',
150
- 'mbstate_t', 'wctrans_t', 'wint_t', 'wctype_t'))
151
- c99_types = set((
152
- '_Bool', '_Complex', 'int8_t', 'int16_t', 'int32_t', 'int64_t', 'uint8_t',
174
+ 'mbstate_t', 'wctrans_t', 'wint_t', 'wctype_t'}
175
+ c99_types = {
176
+ 'int8_t', 'int16_t', 'int32_t', 'int64_t', 'uint8_t',
153
177
  'uint16_t', 'uint32_t', 'uint64_t', 'int_least8_t', 'int_least16_t',
154
178
  'int_least32_t', 'int_least64_t', 'uint_least8_t', 'uint_least16_t',
155
179
  'uint_least32_t', 'uint_least64_t', 'int_fast8_t', 'int_fast16_t', 'int_fast32_t',
156
180
  'int_fast64_t', 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
157
- 'intptr_t', 'uintptr_t', 'intmax_t', 'uintmax_t'))
158
- linux_types = set((
181
+ 'intptr_t', 'uintptr_t', 'intmax_t', 'uintmax_t'}
182
+ linux_types = {
159
183
  'clockid_t', 'cpu_set_t', 'cpumask_t', 'dev_t', 'gid_t', 'id_t', 'ino_t', 'key_t',
160
184
  'mode_t', 'nfds_t', 'pid_t', 'rlim_t', 'sig_t', 'sighandler_t', 'siginfo_t',
161
- 'sigset_t', 'sigval_t', 'socklen_t', 'timer_t', 'uid_t'))
185
+ 'sigset_t', 'sigval_t', 'socklen_t', 'timer_t', 'uid_t'}
186
+ c11_atomic_types = {
187
+ 'atomic_bool', 'atomic_char', 'atomic_schar', 'atomic_uchar', 'atomic_short',
188
+ 'atomic_ushort', 'atomic_int', 'atomic_uint', 'atomic_long', 'atomic_ulong',
189
+ 'atomic_llong', 'atomic_ullong', 'atomic_char16_t', 'atomic_char32_t', 'atomic_wchar_t',
190
+ 'atomic_int_least8_t', 'atomic_uint_least8_t', 'atomic_int_least16_t',
191
+ 'atomic_uint_least16_t', 'atomic_int_least32_t', 'atomic_uint_least32_t',
192
+ 'atomic_int_least64_t', 'atomic_uint_least64_t', 'atomic_int_fast8_t',
193
+ 'atomic_uint_fast8_t', 'atomic_int_fast16_t', 'atomic_uint_fast16_t',
194
+ 'atomic_int_fast32_t', 'atomic_uint_fast32_t', 'atomic_int_fast64_t',
195
+ 'atomic_uint_fast64_t', 'atomic_intptr_t', 'atomic_uintptr_t', 'atomic_size_t',
196
+ 'atomic_ptrdiff_t', 'atomic_intmax_t', 'atomic_uintmax_t'}
162
197
 
163
198
  def __init__(self, **options):
164
199
  self.stdlibhighlighting = get_bool_opt(options, 'stdlibhighlighting', True)
165
200
  self.c99highlighting = get_bool_opt(options, 'c99highlighting', True)
201
+ self.c11highlighting = get_bool_opt(options, 'c11highlighting', True)
166
202
  self.platformhighlighting = get_bool_opt(options, 'platformhighlighting', True)
167
203
  RegexLexer.__init__(self, **options)
168
204
 
@@ -174,6 +210,8 @@ class CFamilyLexer(RegexLexer):
174
210
  token = Keyword.Type
175
211
  elif self.c99highlighting and value in self.c99_types:
176
212
  token = Keyword.Type
213
+ elif self.c11highlighting and value in self.c11_atomic_types:
214
+ token = Keyword.Type
177
215
  elif self.platformhighlighting and value in self.linux_types:
178
216
  token = Keyword.Type
179
217
  yield index, token, value
@@ -182,6 +220,25 @@ class CFamilyLexer(RegexLexer):
182
220
  class CLexer(CFamilyLexer):
183
221
  """
184
222
  For C source code with preprocessor directives.
223
+
224
+ Additional options accepted:
225
+
226
+ `stdlibhighlighting`
227
+ Highlight common types found in the C/C++ standard library (e.g. `size_t`).
228
+ (default: ``True``).
229
+
230
+ `c99highlighting`
231
+ Highlight common types found in the C99 standard library (e.g. `int8_t`).
232
+ Actually, this includes all fixed-width integer types.
233
+ (default: ``True``).
234
+
235
+ `c11highlighting`
236
+ Highlight atomic types found in the C11 standard library (e.g. `atomic_bool`).
237
+ (default: ``True``).
238
+
239
+ `platformhighlighting`
240
+ Highlight common types found in the platform SDK headers (e.g. `clockid_t` on Linux).
241
+ (default: ``True``).
185
242
  """
186
243
  name = 'C'
187
244
  aliases = ['c']
@@ -189,16 +246,46 @@ class CLexer(CFamilyLexer):
189
246
  mimetypes = ['text/x-chdr', 'text/x-csrc']
190
247
  priority = 0.1
191
248
 
249
+ tokens = {
250
+ 'statements': [
251
+ (words((
252
+ '_Alignas', '_Alignof', '_Noreturn', '_Generic', '_Thread_local',
253
+ '_Static_assert', '_Imaginary', 'noreturn', 'imaginary', 'complex'),
254
+ suffix=r'\b'), Keyword),
255
+ (words(('_Bool', '_Complex', '_Atomic'), suffix=r'\b'), Keyword.Type),
256
+ inherit
257
+ ]
258
+ }
259
+
192
260
  def analyse_text(text):
193
- if re.search('^\s*#include [<"]', text, re.MULTILINE):
261
+ if re.search(r'^\s*#include [<"]', text, re.MULTILINE):
194
262
  return 0.1
195
- if re.search('^\s*#ifn?def ', text, re.MULTILINE):
263
+ if re.search(r'^\s*#ifn?def ', text, re.MULTILINE):
196
264
  return 0.1
197
265
 
198
266
 
199
267
  class CppLexer(CFamilyLexer):
200
268
  """
201
269
  For C++ source code with preprocessor directives.
270
+
271
+ Additional options accepted:
272
+
273
+ `stdlibhighlighting`
274
+ Highlight common types found in the C/C++ standard library (e.g. `size_t`).
275
+ (default: ``True``).
276
+
277
+ `c99highlighting`
278
+ Highlight common types found in the C99 standard library (e.g. `int8_t`).
279
+ Actually, this includes all fixed-width integer types.
280
+ (default: ``True``).
281
+
282
+ `c11highlighting`
283
+ Highlight atomic types found in the C11 standard library (e.g. `atomic_bool`).
284
+ (default: ``True``).
285
+
286
+ `platformhighlighting`
287
+ Highlight common types found in the platform SDK headers (e.g. `clockid_t` on Linux).
288
+ (default: ``True``).
202
289
  """
203
290
  name = 'C++'
204
291
  aliases = ['cpp', 'c++']
@@ -210,23 +297,24 @@ class CppLexer(CFamilyLexer):
210
297
 
211
298
  tokens = {
212
299
  'statements': [
300
+ (r'(class|concept|typename)(\s+)', bygroups(Keyword, Text), 'classname'),
213
301
  (words((
214
302
  'catch', 'const_cast', 'delete', 'dynamic_cast', 'explicit',
215
303
  'export', 'friend', 'mutable', 'namespace', 'new', 'operator',
216
- 'private', 'protected', 'public', 'reinterpret_cast',
304
+ 'private', 'protected', 'public', 'reinterpret_cast', 'class',
217
305
  'restrict', 'static_cast', 'template', 'this', 'throw', 'throws',
218
- 'try', 'typeid', 'typename', 'using', 'virtual',
219
- 'constexpr', 'nullptr', 'decltype', 'thread_local',
220
- 'alignas', 'alignof', 'static_assert', 'noexcept', 'override',
221
- 'final'), suffix=r'\b'), Keyword),
222
- (r'char(16_t|32_t)\b', Keyword.Type),
223
- (r'(class)(\s+)', bygroups(Keyword, Text), 'classname'),
306
+ 'try', 'typeid', 'using', 'virtual', 'constexpr', 'nullptr', 'concept',
307
+ 'decltype', 'noexcept', 'override', 'final', 'constinit', 'consteval',
308
+ 'co_await', 'co_return', 'co_yield', 'requires', 'import', 'module',
309
+ 'typename'),
310
+ suffix=r'\b'), Keyword),
311
+ (r'char(16_t|32_t|8_t)\b', Keyword.Type),
312
+ (r'(enum)(\s+)', bygroups(Keyword, Text), 'enumname'),
313
+
224
314
  # C++11 raw strings
225
- (r'(R)(")([^\\()\s]{,16})(\()((?:.|\n)*?)(\)\3)(")',
315
+ (r'((?:[LuU]|u8)?R)(")([^\\()\s]{,16})(\()((?:.|\n)*?)(\)\3)(")',
226
316
  bygroups(String.Affix, String, String.Delimiter, String.Delimiter,
227
317
  String, String.Delimiter, String)),
228
- # C++11 UTF-8/16/32 strings
229
- (r'(u8|u|U)(")', bygroups(String.Affix, String), 'string'),
230
318
  inherit,
231
319
  ],
232
320
  'root': [
@@ -238,11 +326,15 @@ class CppLexer(CFamilyLexer):
238
326
  # Offload C++ extensions, http://offload.codeplay.com/
239
327
  (r'__(offload|blockingoffload|outer)\b', Keyword.Pseudo),
240
328
  ],
241
- 'classname': [
242
- (r'[a-zA-Z_]\w*', Name.Class, '#pop'),
329
+ 'enumname': [
330
+ include('whitespace'),
331
+ # 'enum class' and 'enum struct' C++11 support
332
+ (words(('class', 'struct'), suffix=r'\b'), Keyword),
333
+ (CFamilyLexer._ident, Name.Class, '#pop'),
243
334
  # template specification
244
335
  (r'\s*(?=>)', Text, '#pop'),
245
- ],
336
+ default('#pop')
337
+ ]
246
338
  }
247
339
 
248
340
  def analyse_text(text):