pygments.rb 1.2.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (388) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +40 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +5 -5
  6. data/.rubocop.yml +18 -0
  7. data/CHANGELOG.adoc +132 -0
  8. data/Gemfile +3 -1
  9. data/LICENSE +1 -1
  10. data/README.adoc +160 -0
  11. data/Rakefile +12 -21
  12. data/bench.rb +14 -8
  13. data/{cache-lexers.rb → cache_lexers.rb} +3 -2
  14. data/lexers +0 -0
  15. data/lib/pygments.rb +10 -11
  16. data/lib/pygments/lexer.rb +6 -6
  17. data/lib/pygments/mentos.py +23 -110
  18. data/lib/pygments/popen.rb +196 -275
  19. data/lib/pygments/version.rb +2 -2
  20. data/pygments.rb.gemspec +12 -10
  21. data/test/test_pygments.rb +50 -110
  22. data/vendor/pygments-main/{AUTHORS → Pygments-2.8.0.dist-info/AUTHORS} +26 -3
  23. data/vendor/pygments-main/Pygments-2.8.0.dist-info/INSTALLER +1 -0
  24. data/vendor/pygments-main/{LICENSE → Pygments-2.8.0.dist-info/LICENSE} +1 -1
  25. data/vendor/pygments-main/Pygments-2.8.0.dist-info/METADATA +48 -0
  26. data/vendor/pygments-main/Pygments-2.8.0.dist-info/RECORD +494 -0
  27. data/vendor/pygments-main/Pygments-2.8.0.dist-info/REQUESTED +0 -0
  28. data/vendor/pygments-main/Pygments-2.8.0.dist-info/WHEEL +5 -0
  29. data/vendor/pygments-main/Pygments-2.8.0.dist-info/entry_points.txt +3 -0
  30. data/vendor/pygments-main/Pygments-2.8.0.dist-info/top_level.txt +1 -0
  31. data/vendor/pygments-main/bin/pygmentize +8 -0
  32. data/vendor/pygments-main/pygments/__init__.py +6 -12
  33. data/vendor/pygments-main/pygments/__main__.py +17 -0
  34. data/vendor/pygments-main/pygments/cmdline.py +213 -184
  35. data/vendor/pygments-main/pygments/console.py +6 -10
  36. data/vendor/pygments-main/pygments/filter.py +4 -7
  37. data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
  38. data/vendor/pygments-main/pygments/formatter.py +4 -5
  39. data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
  40. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
  41. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  42. data/vendor/pygments-main/pygments/formatters/html.py +242 -139
  43. data/vendor/pygments-main/pygments/formatters/img.py +91 -50
  44. data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
  45. data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
  46. data/vendor/pygments-main/pygments/formatters/other.py +18 -17
  47. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
  48. data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
  49. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
  50. data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
  51. data/vendor/pygments-main/pygments/lexer.py +47 -44
  52. data/vendor/pygments-main/pygments/lexers/__init__.py +29 -17
  53. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -6
  54. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -16
  55. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +21 -18
  56. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1339
  57. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -2
  58. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -5
  59. data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -31
  60. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -3
  61. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
  62. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +439 -386
  63. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -21
  64. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -17
  65. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -3
  66. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -4
  67. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -126
  68. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +96 -58
  69. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -2
  70. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
  71. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
  72. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -2
  73. data/vendor/pygments-main/pygments/lexers/actionscript.py +14 -10
  74. data/vendor/pygments-main/pygments/lexers/agile.py +1 -2
  75. data/vendor/pygments-main/pygments/lexers/algebra.py +20 -2
  76. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  77. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  78. data/vendor/pygments-main/pygments/lexers/ampl.py +3 -4
  79. data/vendor/pygments-main/pygments/lexers/apl.py +15 -16
  80. data/vendor/pygments-main/pygments/lexers/archetype.py +4 -5
  81. data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
  82. data/vendor/pygments-main/pygments/lexers/asm.py +440 -77
  83. data/vendor/pygments-main/pygments/lexers/automation.py +7 -2
  84. data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
  85. data/vendor/pygments-main/pygments/lexers/basic.py +168 -7
  86. data/vendor/pygments-main/pygments/lexers/bibtex.py +5 -6
  87. data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
  88. data/vendor/pygments-main/pygments/lexers/business.py +19 -5
  89. data/vendor/pygments-main/pygments/lexers/c_cpp.py +138 -48
  90. data/vendor/pygments-main/pygments/lexers/c_like.py +67 -43
  91. data/vendor/pygments-main/pygments/lexers/capnproto.py +7 -8
  92. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  93. data/vendor/pygments-main/pygments/lexers/chapel.py +25 -16
  94. data/vendor/pygments-main/pygments/lexers/clean.py +135 -245
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -2
  96. data/vendor/pygments-main/pygments/lexers/configs.py +190 -38
  97. data/vendor/pygments-main/pygments/lexers/console.py +1 -2
  98. data/vendor/pygments-main/pygments/lexers/crystal.py +54 -81
  99. data/vendor/pygments-main/pygments/lexers/csound.py +288 -188
  100. data/vendor/pygments-main/pygments/lexers/css.py +28 -23
  101. data/vendor/pygments-main/pygments/lexers/d.py +12 -8
  102. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -2
  103. data/vendor/pygments-main/pygments/lexers/data.py +240 -98
  104. data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
  105. data/vendor/pygments-main/pygments/lexers/diff.py +4 -5
  106. data/vendor/pygments-main/pygments/lexers/dotnet.py +46 -31
  107. data/vendor/pygments-main/pygments/lexers/dsls.py +146 -65
  108. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -19
  109. data/vendor/pygments-main/pygments/lexers/ecl.py +17 -5
  110. data/vendor/pygments-main/pygments/lexers/eiffel.py +2 -3
  111. data/vendor/pygments-main/pygments/lexers/elm.py +5 -6
  112. data/vendor/pygments-main/pygments/lexers/email.py +150 -0
  113. data/vendor/pygments-main/pygments/lexers/erlang.py +29 -33
  114. data/vendor/pygments-main/pygments/lexers/esoteric.py +46 -20
  115. data/vendor/pygments-main/pygments/lexers/ezhil.py +21 -14
  116. data/vendor/pygments-main/pygments/lexers/factor.py +3 -4
  117. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -2
  118. data/vendor/pygments-main/pygments/lexers/felix.py +1 -2
  119. data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
  120. data/vendor/pygments-main/pygments/lexers/forth.py +41 -41
  121. data/vendor/pygments-main/pygments/lexers/fortran.py +13 -10
  122. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -3
  123. data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
  124. data/vendor/pygments-main/pygments/lexers/functional.py +1 -2
  125. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  126. data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
  127. data/vendor/pygments-main/pygments/lexers/go.py +2 -3
  128. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +62 -6
  129. data/vendor/pygments-main/pygments/lexers/graph.py +14 -10
  130. data/vendor/pygments-main/pygments/lexers/graphics.py +274 -28
  131. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  132. data/vendor/pygments-main/pygments/lexers/haskell.py +48 -22
  133. data/vendor/pygments-main/pygments/lexers/haxe.py +8 -9
  134. data/vendor/pygments-main/pygments/lexers/hdl.py +176 -90
  135. data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -2
  136. data/vendor/pygments-main/pygments/lexers/html.py +37 -26
  137. data/vendor/pygments-main/pygments/lexers/idl.py +19 -9
  138. data/vendor/pygments-main/pygments/lexers/igor.py +244 -113
  139. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -3
  140. data/vendor/pygments-main/pygments/lexers/installers.py +1 -2
  141. data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -16
  142. data/vendor/pygments-main/pygments/lexers/iolang.py +3 -4
  143. data/vendor/pygments-main/pygments/lexers/j.py +4 -5
  144. data/vendor/pygments-main/pygments/lexers/javascript.py +115 -104
  145. data/vendor/pygments-main/pygments/lexers/julia.py +44 -47
  146. data/vendor/pygments-main/pygments/lexers/jvm.py +368 -202
  147. data/vendor/pygments-main/pygments/lexers/lisp.py +887 -810
  148. data/vendor/pygments-main/pygments/lexers/make.py +12 -9
  149. data/vendor/pygments-main/pygments/lexers/markup.py +212 -45
  150. data/vendor/pygments-main/pygments/lexers/math.py +1 -2
  151. data/vendor/pygments-main/pygments/lexers/matlab.py +2705 -88
  152. data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
  153. data/vendor/pygments-main/pygments/lexers/ml.py +203 -15
  154. data/vendor/pygments-main/pygments/lexers/modeling.py +26 -19
  155. data/vendor/pygments-main/pygments/lexers/modula2.py +27 -9
  156. data/vendor/pygments-main/pygments/lexers/monte.py +1 -2
  157. data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
  158. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -2
  159. data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -5
  160. data/vendor/pygments-main/pygments/lexers/nit.py +1 -2
  161. data/vendor/pygments-main/pygments/lexers/nix.py +1 -2
  162. data/vendor/pygments-main/pygments/lexers/oberon.py +17 -2
  163. data/vendor/pygments-main/pygments/lexers/objective.py +18 -19
  164. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -2
  165. data/vendor/pygments-main/pygments/lexers/other.py +1 -2
  166. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -2
  167. data/vendor/pygments-main/pygments/lexers/parsers.py +47 -83
  168. data/vendor/pygments-main/pygments/lexers/pascal.py +22 -23
  169. data/vendor/pygments-main/pygments/lexers/pawn.py +31 -28
  170. data/vendor/pygments-main/pygments/lexers/perl.py +260 -149
  171. data/vendor/pygments-main/pygments/lexers/php.py +66 -13
  172. data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
  173. data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
  174. data/vendor/pygments-main/pygments/lexers/praat.py +38 -31
  175. data/vendor/pygments-main/pygments/lexers/prolog.py +38 -39
  176. data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
  177. data/vendor/pygments-main/pygments/lexers/python.py +450 -231
  178. data/vendor/pygments-main/pygments/lexers/qvt.py +6 -7
  179. data/vendor/pygments-main/pygments/lexers/r.py +13 -276
  180. data/vendor/pygments-main/pygments/lexers/rdf.py +232 -40
  181. data/vendor/pygments-main/pygments/lexers/rebol.py +8 -9
  182. data/vendor/pygments-main/pygments/lexers/resource.py +2 -3
  183. data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
  184. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -2
  185. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -2
  186. data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -32
  187. data/vendor/pygments-main/pygments/lexers/ruby.py +50 -46
  188. data/vendor/pygments-main/pygments/lexers/rust.py +76 -73
  189. data/vendor/pygments-main/pygments/lexers/sas.py +1 -2
  190. data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
  191. data/vendor/pygments-main/pygments/lexers/scripting.py +79 -18
  192. data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
  193. data/vendor/pygments-main/pygments/lexers/shell.py +164 -49
  194. data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
  195. data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
  196. data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -3
  197. data/vendor/pygments-main/pygments/lexers/smv.py +3 -4
  198. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -2
  199. data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
  200. data/vendor/pygments-main/pygments/lexers/special.py +31 -28
  201. data/vendor/pygments-main/pygments/lexers/sql.py +330 -179
  202. data/vendor/pygments-main/pygments/lexers/stata.py +107 -45
  203. data/vendor/pygments-main/pygments/lexers/supercollider.py +8 -4
  204. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -2
  205. data/vendor/pygments-main/pygments/lexers/templates.py +116 -136
  206. data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
  207. data/vendor/pygments-main/pygments/lexers/testing.py +6 -7
  208. data/vendor/pygments-main/pygments/lexers/text.py +2 -2
  209. data/vendor/pygments-main/pygments/lexers/textedit.py +6 -7
  210. data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -14
  211. data/vendor/pygments-main/pygments/lexers/theorem.py +74 -56
  212. data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
  213. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -2
  214. data/vendor/pygments-main/pygments/lexers/typoscript.py +4 -12
  215. data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
  216. data/vendor/pygments-main/pygments/lexers/urbi.py +16 -4
  217. data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
  218. data/vendor/pygments-main/pygments/lexers/varnish.py +4 -5
  219. data/vendor/pygments-main/pygments/lexers/verification.py +13 -11
  220. data/vendor/pygments-main/pygments/lexers/web.py +1 -2
  221. data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
  222. data/vendor/pygments-main/pygments/lexers/webmisc.py +35 -32
  223. data/vendor/pygments-main/pygments/lexers/whiley.py +5 -6
  224. data/vendor/pygments-main/pygments/lexers/x10.py +2 -3
  225. data/vendor/pygments-main/pygments/lexers/xorg.py +5 -5
  226. data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
  227. data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
  228. data/vendor/pygments-main/pygments/modeline.py +1 -2
  229. data/vendor/pygments-main/pygments/plugin.py +4 -3
  230. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  231. data/vendor/pygments-main/pygments/scanner.py +2 -3
  232. data/vendor/pygments-main/pygments/sphinxext.py +2 -5
  233. data/vendor/pygments-main/pygments/style.py +61 -25
  234. data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
  235. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  237. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  239. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  242. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  247. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
  249. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  250. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  251. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  252. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  253. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  261. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  262. data/vendor/pygments-main/pygments/styles/solarized.py +136 -0
  263. data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
  264. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
  265. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  266. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  267. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  268. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  269. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  270. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  271. data/vendor/pygments-main/pygments/token.py +1 -2
  272. data/vendor/pygments-main/pygments/unistring.py +47 -109
  273. data/vendor/pygments-main/pygments/util.py +16 -96
  274. metadata +76 -137
  275. data/CHANGELOG.md +0 -105
  276. data/README.md +0 -121
  277. data/circle.yml +0 -20
  278. data/test/test_data.c +0 -2581
  279. data/test/test_data.py +0 -514
  280. data/test/test_data_generated +0 -2582
  281. data/vendor/custom_lexers/github.py +0 -565
  282. data/vendor/pygments-main/CHANGES +0 -1186
  283. data/vendor/pygments-main/MANIFEST.in +0 -6
  284. data/vendor/pygments-main/Makefile +0 -65
  285. data/vendor/pygments-main/README.rst +0 -39
  286. data/vendor/pygments-main/REVISION +0 -1
  287. data/vendor/pygments-main/TODO +0 -12
  288. data/vendor/pygments-main/doc/Makefile +0 -153
  289. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  290. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  291. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  292. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  293. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  294. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  295. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  296. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  297. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  298. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  299. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  300. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  301. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  302. data/vendor/pygments-main/doc/conf.py +0 -241
  303. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  304. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  305. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  306. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  307. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  308. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  309. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  310. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  311. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  312. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  313. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  314. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  315. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  316. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  317. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  318. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  319. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  320. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  321. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  322. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  323. data/vendor/pygments-main/doc/download.rst +0 -41
  324. data/vendor/pygments-main/doc/faq.rst +0 -139
  325. data/vendor/pygments-main/doc/index.rst +0 -54
  326. data/vendor/pygments-main/doc/languages.rst +0 -154
  327. data/vendor/pygments-main/doc/make.bat +0 -190
  328. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  329. data/vendor/pygments-main/external/autopygmentize +0 -101
  330. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  331. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  332. data/vendor/pygments-main/external/moin-parser.py +0 -112
  333. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  334. data/vendor/pygments-main/external/rst-directive.py +0 -82
  335. data/vendor/pygments-main/pygmentize +0 -8
  336. data/vendor/pygments-main/pygments/lexers/github.py +0 -565
  337. data/vendor/pygments-main/requirements.txt +0 -5
  338. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  339. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  340. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  341. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  342. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  343. data/vendor/pygments-main/scripts/pylintrc +0 -301
  344. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  345. data/vendor/pygments-main/setup.cfg +0 -10
  346. data/vendor/pygments-main/setup.py +0 -77
  347. data/vendor/pygments-main/tox.ini +0 -7
  348. data/vendor/simplejson/.gitignore +0 -10
  349. data/vendor/simplejson/.travis.yml +0 -5
  350. data/vendor/simplejson/CHANGES.txt +0 -291
  351. data/vendor/simplejson/LICENSE.txt +0 -19
  352. data/vendor/simplejson/MANIFEST.in +0 -5
  353. data/vendor/simplejson/README.rst +0 -19
  354. data/vendor/simplejson/conf.py +0 -179
  355. data/vendor/simplejson/index.rst +0 -628
  356. data/vendor/simplejson/scripts/make_docs.py +0 -18
  357. data/vendor/simplejson/setup.py +0 -104
  358. data/vendor/simplejson/simplejson/__init__.py +0 -510
  359. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  360. data/vendor/simplejson/simplejson/decoder.py +0 -425
  361. data/vendor/simplejson/simplejson/encoder.py +0 -567
  362. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  363. data/vendor/simplejson/simplejson/scanner.py +0 -77
  364. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  365. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  366. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  367. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  368. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  369. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  370. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  371. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  372. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  373. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  374. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  375. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  376. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  377. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  378. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  379. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  380. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  381. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  382. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  383. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  384. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  385. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  386. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  387. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  388. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.business
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for "business-oriented" 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
 
@@ -478,8 +477,8 @@ class OpenEdgeLexer(RegexLexer):
478
477
  (r'(?i)(DEFINE|DEF|DEFI|DEFIN)\b', Keyword.Declaration),
479
478
  (types, Keyword.Type),
480
479
  (keywords, Name.Builtin),
481
- (r'"(\\\\|\\"|[^"])*"', String.Double),
482
- (r"'(\\\\|\\'|[^'])*'", String.Single),
480
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
481
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
483
482
  (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
484
483
  (r'[0-9]+', Number.Integer),
485
484
  (r'\s+', Text),
@@ -500,11 +499,26 @@ class OpenEdgeLexer(RegexLexer):
500
499
  ],
501
500
  }
502
501
 
502
+ def analyse_text(text):
503
+ """Try to identify OpenEdge ABL based on a few common constructs."""
504
+ result = 0
505
+
506
+ if 'END.' in text:
507
+ result += 0.05
508
+
509
+ if 'END PROCEDURE.' in text:
510
+ result += 0.05
511
+
512
+ if 'ELSE DO:' in text:
513
+ result += 0.05
514
+
515
+ return result
516
+
503
517
 
504
518
  class GoodDataCLLexer(RegexLexer):
505
519
  """
506
520
  Lexer for `GoodData-CL
507
- <http://github.com/gooddata/GoodData-CL/raw/master/cli/src/main/resources/\
521
+ <https://github.com/gooddata/GoodData-CL/raw/master/cli/src/main/resources/\
508
522
  com/gooddata/processor/COMMANDS.txt>`_
509
523
  script files.
510
524
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.c_cpp
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for C/C++ 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
 
@@ -15,7 +14,7 @@ from pygments.lexer import RegexLexer, include, bygroups, using, \
15
14
  this, inherit, default, words
16
15
  from pygments.util import get_bool_opt
17
16
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
18
- Number, Punctuation, Error
17
+ Number, Punctuation
19
18
 
20
19
  __all__ = ['CLexer', 'CppLexer']
21
20
 
@@ -33,10 +32,22 @@ class CFamilyLexer(RegexLexer):
33
32
  #: only one /* */ style comment
34
33
  _ws1 = r'\s*(?:/[*].*?[*]/\s*)?'
35
34
 
35
+ # Hexadecimal part in an hexadecimal integer/floating-point literal.
36
+ # This includes decimal separators matching.
37
+ _hexpart = r'[0-9a-fA-F](\'?[0-9a-fA-F])*'
38
+ # Decimal part in an decimal integer/floating-point literal.
39
+ # This includes decimal separators matching.
40
+ _decpart = r'\d(\'?\d)*'
41
+ # Integer literal suffix (e.g. 'ull' or 'll').
42
+ _intsuffix = r'(([uU][lL]{0,2})|[lL]{1,2}[uU]?)?'
43
+
44
+ # Identifier regex with C and C++ Universal Character Name (UCN) support.
45
+ _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})*'
46
+
36
47
  tokens = {
37
48
  'whitespace': [
38
49
  # preprocessor directives: without whitespace
39
- ('^#if\s+0', Comment.Preproc, 'if0'),
50
+ (r'^#if\s+0', Comment.Preproc, 'if0'),
40
51
  ('^#', Comment.Preproc, 'macro'),
41
52
  # or with whitespace
42
53
  ('^(' + _ws1 + r')(#if\s+0)',
@@ -52,27 +63,32 @@ class CFamilyLexer(RegexLexer):
52
63
  (r'/(\\\n)?[*][\w\W]*', Comment.Multiline),
53
64
  ],
54
65
  'statements': [
55
- (r'(L?)(")', bygroups(String.Affix, String), 'string'),
56
- (r"(L?)(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')",
66
+ (r'([LuU]|u8)?(")', bygroups(String.Affix, String), 'string'),
67
+ (r"([LuU]|u8)?(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')",
57
68
  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),
63
- (r'\*/', Error),
69
+
70
+ # Hexadecimal floating-point literals (C11, C++17)
71
+ (r'0[xX](' + _hexpart + r'\.' + _hexpart + r'|\.' + _hexpart + r'|' + _hexpart + r')[pP][+-]?' + _hexpart + r'[lL]?', Number.Float),
72
+
73
+ (r'(-)?(' + _decpart + r'\.' + _decpart + r'|\.' + _decpart + r'|' + _decpart + r')[eE][+-]?' + _decpart + r'[fFlL]?', Number.Float),
74
+ (r'(-)?((' + _decpart + r'\.(' + _decpart + r')?|\.' + _decpart + r')[fFlL]?)|(' + _decpart + r'[fFlL])', Number.Float),
75
+ (r'(-)?0[xX]' + _hexpart + _intsuffix, Number.Hex),
76
+ (r'(-)?0[bB][01](\'?[01])*' + _intsuffix, Number.Bin),
77
+ (r'(-)?0(\'?[0-7])+' + _intsuffix, Number.Oct),
78
+ (r'(-)?' + _decpart + _intsuffix, Number.Integer),
64
79
  (r'[~!%^&*+=|?:<>/-]', Operator),
65
80
  (r'[()\[\],.]', Punctuation),
81
+ (r'(struct|union)(\s+)', bygroups(Keyword, Text), 'classname'),
66
82
  (words(('asm', 'auto', 'break', 'case', 'const', 'continue',
67
83
  'default', 'do', 'else', 'enum', 'extern', 'for', 'goto',
68
- 'if', 'register', 'restricted', 'return', 'sizeof',
69
- 'static', 'struct', 'switch', 'typedef', 'union',
70
- 'volatile', 'while'),
84
+ 'if', 'register', 'restricted', 'return', 'sizeof', 'struct',
85
+ 'static', 'switch', 'typedef', 'volatile', 'while', 'union',
86
+ 'thread_local', 'alignas', 'alignof', 'static_assert', '_Pragma'),
71
87
  suffix=r'\b'), Keyword),
72
88
  (r'(bool|int|long|float|short|double|char|unsigned|signed|void)\b',
73
89
  Keyword.Type),
74
90
  (words(('inline', '_inline', '__inline', 'naked', 'restrict',
75
- 'thread', 'typename'), suffix=r'\b'), Keyword.Reserved),
91
+ 'thread'), suffix=r'\b'), Keyword.Reserved),
76
92
  # Vector intrinsics
77
93
  (r'(__m(128i|128d|128|64))\b', Keyword.Reserved),
78
94
  # Microsoft-isms
@@ -83,22 +99,22 @@ class CFamilyLexer(RegexLexer):
83
99
  'identifier', 'forceinline', 'assume'),
84
100
  prefix=r'__', suffix=r'\b'), Keyword.Reserved),
85
101
  (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),
102
+ (r'(' + _ident + r')(\s*)(:)(?!:)', bygroups(Name.Label, Text, Punctuation)),
103
+ (_ident, Name)
88
104
  ],
89
105
  'root': [
90
106
  include('whitespace'),
91
107
  # functions
92
- (r'((?:[\w*\s])+?(?:\s|[*]))' # return arguments
93
- r'([a-zA-Z_]\w*)' # method name
108
+ (r'((?:' + _ident + r'(?:[&*\s])+))' # return arguments
109
+ r'(' + _ident + r')' # method name
94
110
  r'(\s*\([^;]*?\))' # signature
95
111
  r'([^;{]*)(\{)',
96
112
  bygroups(using(this), Name.Function, using(this), using(this),
97
113
  Punctuation),
98
114
  'function'),
99
115
  # function declarations
100
- (r'((?:[\w*\s])+?(?:\s|[*]))' # return arguments
101
- r'([a-zA-Z_]\w*)' # method name
116
+ (r'((?:' + _ident + r'(?:[&*\s])+))' # return arguments
117
+ r'(' + _ident + r')' # method name
102
118
  r'(\s*\([^;]*?\))' # signature
103
119
  r'([^;]*)(;)',
104
120
  bygroups(using(this), Name.Function, using(this), using(this),
@@ -108,8 +124,8 @@ class CFamilyLexer(RegexLexer):
108
124
  'statement': [
109
125
  include('whitespace'),
110
126
  include('statements'),
111
- ('[{}]', Punctuation),
112
- (';', Punctuation, '#pop'),
127
+ (r'\}', Punctuation),
128
+ (r'[{;]', Punctuation, '#pop'),
113
129
  ],
114
130
  'function': [
115
131
  include('whitespace'),
@@ -127,8 +143,8 @@ class CFamilyLexer(RegexLexer):
127
143
  (r'\\', String), # stray backslash
128
144
  ],
129
145
  'macro': [
130
- (r'(include)(' + _ws1 + r')([^\n]+)',
131
- bygroups(Comment.Preproc, Text, Comment.PreprocFile)),
146
+ (r'(include)('+_ws1+r')("[^"]+")([^\n]*)', bygroups(Comment.Preproc, using(this), Comment.PreprocFile, Comment.Single)),
147
+ (r'(include)('+_ws1+r')(<[^>]+>)([^\n]*)', bygroups(Comment.Preproc, using(this), Comment.PreprocFile, Comment.Single)),
132
148
  (r'[^/\n]+', Comment.Preproc),
133
149
  (r'/[*](.|\n)*?[*]/', Comment.Multiline),
134
150
  (r'//.*?\n', Comment.Single, '#pop'),
@@ -141,28 +157,46 @@ class CFamilyLexer(RegexLexer):
141
157
  (r'^\s*#el(?:se|if).*\n', Comment.Preproc, '#pop'),
142
158
  (r'^\s*#endif.*?(?<!\\)\n', Comment.Preproc, '#pop'),
143
159
  (r'.*?\n', Comment),
160
+ ],
161
+ 'classname': [
162
+ (_ident, Name.Class, '#pop'),
163
+ # template specification
164
+ (r'\s*(?=>)', Text, '#pop'),
165
+ default('#pop')
144
166
  ]
145
167
  }
146
168
 
147
- stdlib_types = set((
169
+ stdlib_types = {
148
170
  'size_t', 'ssize_t', 'off_t', 'wchar_t', 'ptrdiff_t', 'sig_atomic_t', 'fpos_t',
149
171
  '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',
172
+ 'mbstate_t', 'wctrans_t', 'wint_t', 'wctype_t'}
173
+ c99_types = {
174
+ 'int8_t', 'int16_t', 'int32_t', 'int64_t', 'uint8_t',
153
175
  'uint16_t', 'uint32_t', 'uint64_t', 'int_least8_t', 'int_least16_t',
154
176
  'int_least32_t', 'int_least64_t', 'uint_least8_t', 'uint_least16_t',
155
177
  'uint_least32_t', 'uint_least64_t', 'int_fast8_t', 'int_fast16_t', 'int_fast32_t',
156
178
  '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((
179
+ 'intptr_t', 'uintptr_t', 'intmax_t', 'uintmax_t'}
180
+ linux_types = {
159
181
  'clockid_t', 'cpu_set_t', 'cpumask_t', 'dev_t', 'gid_t', 'id_t', 'ino_t', 'key_t',
160
182
  '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'))
183
+ 'sigset_t', 'sigval_t', 'socklen_t', 'timer_t', 'uid_t'}
184
+ c11_atomic_types = {
185
+ 'atomic_bool', 'atomic_char', 'atomic_schar', 'atomic_uchar', 'atomic_short',
186
+ 'atomic_ushort', 'atomic_int', 'atomic_uint', 'atomic_long', 'atomic_ulong',
187
+ 'atomic_llong', 'atomic_ullong', 'atomic_char16_t', 'atomic_char32_t', 'atomic_wchar_t',
188
+ 'atomic_int_least8_t', 'atomic_uint_least8_t', 'atomic_int_least16_t',
189
+ 'atomic_uint_least16_t', 'atomic_int_least32_t', 'atomic_uint_least32_t',
190
+ 'atomic_int_least64_t', 'atomic_uint_least64_t', 'atomic_int_fast8_t',
191
+ 'atomic_uint_fast8_t', 'atomic_int_fast16_t', 'atomic_uint_fast16_t',
192
+ 'atomic_int_fast32_t', 'atomic_uint_fast32_t', 'atomic_int_fast64_t',
193
+ 'atomic_uint_fast64_t', 'atomic_intptr_t', 'atomic_uintptr_t', 'atomic_size_t',
194
+ 'atomic_ptrdiff_t', 'atomic_intmax_t', 'atomic_uintmax_t'}
162
195
 
163
196
  def __init__(self, **options):
164
197
  self.stdlibhighlighting = get_bool_opt(options, 'stdlibhighlighting', True)
165
198
  self.c99highlighting = get_bool_opt(options, 'c99highlighting', True)
199
+ self.c11highlighting = get_bool_opt(options, 'c11highlighting', True)
166
200
  self.platformhighlighting = get_bool_opt(options, 'platformhighlighting', True)
167
201
  RegexLexer.__init__(self, **options)
168
202
 
@@ -174,6 +208,8 @@ class CFamilyLexer(RegexLexer):
174
208
  token = Keyword.Type
175
209
  elif self.c99highlighting and value in self.c99_types:
176
210
  token = Keyword.Type
211
+ elif self.c11highlighting and value in self.c11_atomic_types:
212
+ token = Keyword.Type
177
213
  elif self.platformhighlighting and value in self.linux_types:
178
214
  token = Keyword.Type
179
215
  yield index, token, value
@@ -182,6 +218,25 @@ class CFamilyLexer(RegexLexer):
182
218
  class CLexer(CFamilyLexer):
183
219
  """
184
220
  For C source code with preprocessor directives.
221
+
222
+ Additional options accepted:
223
+
224
+ `stdlibhighlighting`
225
+ Highlight common types found in the C/C++ standard library (e.g. `size_t`).
226
+ (default: ``True``).
227
+
228
+ `c99highlighting`
229
+ Highlight common types found in the C99 standard library (e.g. `int8_t`).
230
+ Actually, this includes all fixed-width integer types.
231
+ (default: ``True``).
232
+
233
+ `c11highlighting`
234
+ Highlight atomic types found in the C11 standard library (e.g. `atomic_bool`).
235
+ (default: ``True``).
236
+
237
+ `platformhighlighting`
238
+ Highlight common types found in the platform SDK headers (e.g. `clockid_t` on Linux).
239
+ (default: ``True``).
185
240
  """
186
241
  name = 'C'
187
242
  aliases = ['c']
@@ -189,16 +244,46 @@ class CLexer(CFamilyLexer):
189
244
  mimetypes = ['text/x-chdr', 'text/x-csrc']
190
245
  priority = 0.1
191
246
 
247
+ tokens = {
248
+ 'statements': [
249
+ (words((
250
+ '_Alignas', '_Alignof', '_Noreturn', '_Generic', '_Thread_local',
251
+ '_Static_assert', '_Imaginary', 'noreturn', 'imaginary', 'complex'),
252
+ suffix=r'\b'), Keyword),
253
+ (words(('_Bool', '_Complex', '_Atomic'), suffix=r'\b'), Keyword.Type),
254
+ inherit
255
+ ]
256
+ }
257
+
192
258
  def analyse_text(text):
193
- if re.search('^\s*#include [<"]', text, re.MULTILINE):
259
+ if re.search(r'^\s*#include [<"]', text, re.MULTILINE):
194
260
  return 0.1
195
- if re.search('^\s*#ifn?def ', text, re.MULTILINE):
261
+ if re.search(r'^\s*#ifn?def ', text, re.MULTILINE):
196
262
  return 0.1
197
263
 
198
264
 
199
265
  class CppLexer(CFamilyLexer):
200
266
  """
201
267
  For C++ source code with preprocessor directives.
268
+
269
+ Additional options accepted:
270
+
271
+ `stdlibhighlighting`
272
+ Highlight common types found in the C/C++ standard library (e.g. `size_t`).
273
+ (default: ``True``).
274
+
275
+ `c99highlighting`
276
+ Highlight common types found in the C99 standard library (e.g. `int8_t`).
277
+ Actually, this includes all fixed-width integer types.
278
+ (default: ``True``).
279
+
280
+ `c11highlighting`
281
+ Highlight atomic types found in the C11 standard library (e.g. `atomic_bool`).
282
+ (default: ``True``).
283
+
284
+ `platformhighlighting`
285
+ Highlight common types found in the platform SDK headers (e.g. `clockid_t` on Linux).
286
+ (default: ``True``).
202
287
  """
203
288
  name = 'C++'
204
289
  aliases = ['cpp', 'c++']
@@ -210,23 +295,24 @@ class CppLexer(CFamilyLexer):
210
295
 
211
296
  tokens = {
212
297
  'statements': [
298
+ (r'(class|concept|typename)(\s+)', bygroups(Keyword, Text), 'classname'),
213
299
  (words((
214
300
  'catch', 'const_cast', 'delete', 'dynamic_cast', 'explicit',
215
301
  'export', 'friend', 'mutable', 'namespace', 'new', 'operator',
216
- 'private', 'protected', 'public', 'reinterpret_cast',
302
+ 'private', 'protected', 'public', 'reinterpret_cast', 'class',
217
303
  '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'),
304
+ 'try', 'typeid', 'using', 'virtual', 'constexpr', 'nullptr', 'concept',
305
+ 'decltype', 'noexcept', 'override', 'final', 'constinit', 'consteval',
306
+ 'co_await', 'co_return', 'co_yield', 'requires', 'import', 'module',
307
+ 'typename'),
308
+ suffix=r'\b'), Keyword),
309
+ (r'char(16_t|32_t|8_t)\b', Keyword.Type),
310
+ (r'(enum)(\s+)', bygroups(Keyword, Text), 'enumname'),
311
+
224
312
  # C++11 raw strings
225
- (r'(R)(")([^\\()\s]{,16})(\()((?:.|\n)*?)(\)\3)(")',
313
+ (r'((?:[LuU]|u8)?R)(")([^\\()\s]{,16})(\()((?:.|\n)*?)(\)\3)(")',
226
314
  bygroups(String.Affix, String, String.Delimiter, String.Delimiter,
227
315
  String, String.Delimiter, String)),
228
- # C++11 UTF-8/16/32 strings
229
- (r'(u8|u|U)(")', bygroups(String.Affix, String), 'string'),
230
316
  inherit,
231
317
  ],
232
318
  'root': [
@@ -238,11 +324,15 @@ class CppLexer(CFamilyLexer):
238
324
  # Offload C++ extensions, http://offload.codeplay.com/
239
325
  (r'__(offload|blockingoffload|outer)\b', Keyword.Pseudo),
240
326
  ],
241
- 'classname': [
242
- (r'[a-zA-Z_]\w*', Name.Class, '#pop'),
327
+ 'enumname': [
328
+ include('whitespace'),
329
+ # 'enum class' and 'enum struct' C++11 support
330
+ (words(('class', 'struct'), suffix=r'\b'), Keyword),
331
+ (CFamilyLexer._ident, Name.Class, '#pop'),
243
332
  # template specification
244
333
  (r'\s*(?=>)', Text, '#pop'),
245
- ],
334
+ default('#pop')
335
+ ]
246
336
  }
247
337
 
248
338
  def analyse_text(text):
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.c_like
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for other C-like 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
 
@@ -20,7 +19,7 @@ from pygments.lexers.c_cpp import CLexer, CppLexer
20
19
  from pygments.lexers import _mql_builtins
21
20
 
22
21
  __all__ = ['PikeLexer', 'NesCLexer', 'ClayLexer', 'ECLexer', 'ValaLexer',
23
- 'CudaLexer', 'SwigLexer', 'MqlLexer', 'ArduinoLexer']
22
+ 'CudaLexer', 'SwigLexer', 'MqlLexer', 'ArduinoLexer', 'CharmciLexer']
24
23
 
25
24
 
26
25
  class PikeLexer(CppLexer):
@@ -172,12 +171,7 @@ class ECLexer(CLexer):
172
171
  (r'(class)(\s+)', bygroups(Keyword, Text), 'classname'),
173
172
  (r'(null|value|this)\b', Name.Builtin),
174
173
  inherit,
175
- ],
176
- 'classname': [
177
- (r'[a-zA-Z_]\w*', Name.Class, '#pop'),
178
- # template specification
179
- (r'\s*(?=>)', Text, '#pop'),
180
- ],
174
+ ]
181
175
  }
182
176
 
183
177
 
@@ -245,7 +239,7 @@ class ValaLexer(RegexLexer):
245
239
  'ulong', 'unichar', 'ushort'), suffix=r'\b'),
246
240
  Keyword.Type),
247
241
  (r'(true|false|null)\b', Name.Builtin),
248
- ('[a-zA-Z_]\w*', Name),
242
+ (r'[a-zA-Z_]\w*', Name),
249
243
  ],
250
244
  'root': [
251
245
  include('whitespace'),
@@ -291,23 +285,23 @@ class CudaLexer(CLexer):
291
285
  aliases = ['cuda', 'cu']
292
286
  mimetypes = ['text/x-cuda']
293
287
 
294
- function_qualifiers = set(('__device__', '__global__', '__host__',
295
- '__noinline__', '__forceinline__'))
296
- variable_qualifiers = set(('__device__', '__constant__', '__shared__',
297
- '__restrict__'))
298
- vector_types = set(('char1', 'uchar1', 'char2', 'uchar2', 'char3', 'uchar3',
299
- 'char4', 'uchar4', 'short1', 'ushort1', 'short2', 'ushort2',
300
- 'short3', 'ushort3', 'short4', 'ushort4', 'int1', 'uint1',
301
- 'int2', 'uint2', 'int3', 'uint3', 'int4', 'uint4', 'long1',
302
- 'ulong1', 'long2', 'ulong2', 'long3', 'ulong3', 'long4',
303
- 'ulong4', 'longlong1', 'ulonglong1', 'longlong2',
304
- 'ulonglong2', 'float1', 'float2', 'float3', 'float4',
305
- 'double1', 'double2', 'dim3'))
306
- variables = set(('gridDim', 'blockIdx', 'blockDim', 'threadIdx', 'warpSize'))
307
- functions = set(('__threadfence_block', '__threadfence', '__threadfence_system',
308
- '__syncthreads', '__syncthreads_count', '__syncthreads_and',
309
- '__syncthreads_or'))
310
- execution_confs = set(('<<<', '>>>'))
288
+ function_qualifiers = {'__device__', '__global__', '__host__',
289
+ '__noinline__', '__forceinline__'}
290
+ variable_qualifiers = {'__device__', '__constant__', '__shared__',
291
+ '__restrict__'}
292
+ vector_types = {'char1', 'uchar1', 'char2', 'uchar2', 'char3', 'uchar3',
293
+ 'char4', 'uchar4', 'short1', 'ushort1', 'short2', 'ushort2',
294
+ 'short3', 'ushort3', 'short4', 'ushort4', 'int1', 'uint1',
295
+ 'int2', 'uint2', 'int3', 'uint3', 'int4', 'uint4', 'long1',
296
+ 'ulong1', 'long2', 'ulong2', 'long3', 'ulong3', 'long4',
297
+ 'ulong4', 'longlong1', 'ulonglong1', 'longlong2',
298
+ 'ulonglong2', 'float1', 'float2', 'float3', 'float4',
299
+ 'double1', 'double2', 'dim3'}
300
+ variables = {'gridDim', 'blockIdx', 'blockDim', 'threadIdx', 'warpSize'}
301
+ functions = {'__threadfence_block', '__threadfence', '__threadfence_system',
302
+ '__syncthreads', '__syncthreads_count', '__syncthreads_and',
303
+ '__syncthreads_or'}
304
+ execution_confs = {'<<<', '>>>'}
311
305
 
312
306
  def get_tokens_unprocessed(self, text):
313
307
  for index, token, value in CLexer.get_tokens_unprocessed(self, text):
@@ -344,7 +338,7 @@ class SwigLexer(CppLexer):
344
338
  # SWIG directives
345
339
  (r'(%[a-z_][a-z0-9_]*)', Name.Function),
346
340
  # Special variables
347
- ('\$\**\&?\w+', Name),
341
+ (r'\$\**\&?\w+', Name),
348
342
  # Stringification / additional preprocessor directives
349
343
  (r'##*[a-zA-Z_]\w*', Comment.Preproc),
350
344
  inherit,
@@ -352,7 +346,7 @@ class SwigLexer(CppLexer):
352
346
  }
353
347
 
354
348
  # This is a far from complete set of SWIG directives
355
- swig_directives = set((
349
+ swig_directives = {
356
350
  # Most common directives
357
351
  '%apply', '%define', '%director', '%enddef', '%exception', '%extend',
358
352
  '%feature', '%fragment', '%ignore', '%immutable', '%import', '%include',
@@ -371,7 +365,7 @@ class SwigLexer(CppLexer):
371
365
  '%pythoncallback', '%pythoncode', '%pythondynamic', '%pythonmaybecall',
372
366
  '%pythonnondynamic', '%pythonprepend', '%refobject', '%shadow', '%sizeof',
373
367
  '%trackobjects', '%types', '%unrefobject', '%varargs', '%warn',
374
- '%warnfilter'))
368
+ '%warnfilter'}
375
369
 
376
370
  def analyse_text(text):
377
371
  rv = 0
@@ -412,6 +406,7 @@ class MqlLexer(CppLexer):
412
406
  ],
413
407
  }
414
408
 
409
+
415
410
  class ArduinoLexer(CppLexer):
416
411
  """
417
412
  For `Arduino(tm) <https://arduino.cc/>`_ source.
@@ -428,13 +423,13 @@ class ArduinoLexer(CppLexer):
428
423
  mimetypes = ['text/x-arduino']
429
424
 
430
425
  # Language sketch main structure functions
431
- structure = set(('setup', 'loop'))
426
+ structure = {'setup', 'loop'}
432
427
 
433
428
  # Language operators
434
- operators = set(('not', 'or', 'and', 'xor'))
429
+ operators = {'not', 'or', 'and', 'xor'}
435
430
 
436
431
  # Language 'variables'
437
- variables = set((
432
+ variables = {
438
433
  'DIGITAL_MESSAGE', 'FIRMATA_STRING', 'ANALOG_MESSAGE', 'REPORT_DIGITAL',
439
434
  'REPORT_ANALOG', 'INPUT_PULLUP', 'SET_PIN_MODE', 'INTERNAL2V56', 'SYSTEM_RESET',
440
435
  'LED_BUILTIN', 'INTERNAL1V1', 'SYSEX_START', 'INTERNAL', 'EXTERNAL', 'HIGH',
@@ -451,10 +446,10 @@ class ArduinoLexer(CppLexer):
451
446
  'signed', 'inline', 'delete', '_Bool', 'complex', '_Complex', '_Imaginary',
452
447
  'atomic_bool', 'atomic_char', 'atomic_schar', 'atomic_uchar', 'atomic_short',
453
448
  'atomic_ushort', 'atomic_int', 'atomic_uint', 'atomic_long', 'atomic_ulong',
454
- 'atomic_llong', 'atomic_ullong', 'PROGMEM'))
449
+ 'atomic_llong', 'atomic_ullong', 'PROGMEM'}
455
450
 
456
451
  # Language shipped functions and class ( )
457
- functions = set((
452
+ functions = {
458
453
  'KeyboardController', 'MouseController', 'SoftwareSerial', 'EthernetServer',
459
454
  'EthernetClient', 'LiquidCrystal', 'RobotControl', 'GSMVoiceCall',
460
455
  'EthernetUDP', 'EsploraTFT', 'HttpClient', 'RobotMotor', 'WiFiClient',
@@ -514,16 +509,15 @@ class ArduinoLexer(CppLexer):
514
509
  'peek', 'beep', 'rect', 'line', 'open', 'seek', 'fill', 'size', 'turn', 'stop',
515
510
  'home', 'find', 'step', 'tone', 'sqrt', 'RSSI', 'SSID', 'end', 'bit', 'tan',
516
511
  'cos', 'sin', 'pow', 'map', 'abs', 'max', 'min', 'get', 'run', 'put',
517
- 'isAlphaNumeric', 'isAlpha', 'isAscii', 'isWhitespace', 'isControl', 'isDigit',
518
- 'isGraph', 'isLowerCase', 'isPrintable', 'isPunct', 'isSpace', 'isUpperCase',
519
- 'isHexadecimalDigit'))
512
+ 'isAlphaNumeric', 'isAlpha', 'isAscii', 'isWhitespace', 'isControl', 'isDigit',
513
+ 'isGraph', 'isLowerCase', 'isPrintable', 'isPunct', 'isSpace', 'isUpperCase',
514
+ 'isHexadecimalDigit'}
520
515
 
521
516
  # do not highlight
522
- suppress_highlight = set((
523
- 'namespace', 'template', 'mutable', 'using', 'asm', 'typeid',
524
- 'typename', 'this', 'alignof', 'constexpr', 'decltype', 'noexcept',
525
- 'static_assert', 'thread_local', 'restrict'))
526
-
517
+ suppress_highlight = {
518
+ 'namespace', 'template', 'mutable', 'using', 'asm', 'typeid',
519
+ 'typename', 'this', 'alignof', 'constexpr', 'decltype', 'noexcept',
520
+ 'static_assert', 'thread_local', 'restrict'}
527
521
 
528
522
  def get_tokens_unprocessed(self, text):
529
523
  for index, token, value in CppLexer.get_tokens_unprocessed(self, text):
@@ -539,3 +533,33 @@ class ArduinoLexer(CppLexer):
539
533
  yield index, Name.Function, value
540
534
  else:
541
535
  yield index, token, value
536
+
537
+
538
+ class CharmciLexer(CppLexer):
539
+ """
540
+ For `Charm++ <https://charm.cs.illinois.edu>`_ interface files (.ci).
541
+
542
+ .. versionadded:: 2.4
543
+ """
544
+
545
+ name = 'Charmci'
546
+ aliases = ['charmci']
547
+ filenames = ['*.ci']
548
+
549
+ mimetypes = []
550
+
551
+ tokens = {
552
+ 'statements': [
553
+ (r'(module)(\s+)', bygroups(Keyword, Text), 'classname'),
554
+ (words(('mainmodule', 'mainchare', 'chare', 'array', 'group',
555
+ 'nodegroup', 'message', 'conditional')), Keyword),
556
+ (words(('entry', 'aggregate', 'threaded', 'sync', 'exclusive',
557
+ 'nokeep', 'notrace', 'immediate', 'expedited', 'inline',
558
+ 'local', 'python', 'accel', 'readwrite', 'writeonly',
559
+ 'accelblock', 'memcritical', 'packed', 'varsize',
560
+ 'initproc', 'initnode', 'initcall', 'stacksize',
561
+ 'createhere', 'createhome', 'reductiontarget', 'iget',
562
+ 'nocopy', 'mutable', 'migratable', 'readonly')), Keyword),
563
+ inherit,
564
+ ],
565
+ }