pygments.rb 1.2.1 → 2.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (378) 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 -6
  6. data/CHANGELOG.adoc +119 -0
  7. data/Gemfile +3 -1
  8. data/LICENSE +1 -1
  9. data/README.adoc +161 -0
  10. data/Rakefile +10 -21
  11. data/bench.rb +8 -7
  12. data/cache-lexers.rb +3 -2
  13. data/lib/pygments.rb +10 -11
  14. data/lib/pygments/lexer.rb +5 -5
  15. data/lib/pygments/mentos.py +23 -66
  16. data/lib/pygments/popen.rb +152 -204
  17. data/lib/pygments/version.rb +2 -2
  18. data/pygments.rb.gemspec +11 -9
  19. data/test/test_pygments.rb +51 -84
  20. data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +21 -3
  21. data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
  22. data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
  23. data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
  24. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
  25. data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
  26. data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
  27. data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
  28. data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
  29. data/vendor/pygments-main/bin/pygmentize +8 -0
  30. data/vendor/pygments-main/pygments/__init__.py +6 -11
  31. data/vendor/pygments-main/pygments/__main__.py +18 -0
  32. data/vendor/pygments-main/pygments/cmdline.py +38 -29
  33. data/vendor/pygments-main/pygments/console.py +6 -9
  34. data/vendor/pygments-main/pygments/filter.py +4 -6
  35. data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
  36. data/vendor/pygments-main/pygments/formatter.py +4 -4
  37. data/vendor/pygments-main/pygments/formatters/__init__.py +9 -8
  38. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
  39. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  40. data/vendor/pygments-main/pygments/formatters/html.py +223 -135
  41. data/vendor/pygments-main/pygments/formatters/img.py +68 -41
  42. data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
  43. data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
  44. data/vendor/pygments-main/pygments/formatters/other.py +12 -8
  45. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
  46. data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
  47. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
  48. data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
  49. data/vendor/pygments-main/pygments/lexer.py +41 -39
  50. data/vendor/pygments-main/pygments/lexers/__init__.py +342 -0
  51. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1645 -0
  52. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +232 -0
  53. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +71 -0
  54. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1725 -0
  55. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5327 -0
  56. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +293 -0
  57. data/vendor/pygments-main/pygments/lexers/_mapping.py +551 -0
  58. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1172 -0
  59. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
  60. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2547 -0
  61. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4753 -0
  62. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +678 -0
  63. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3094 -0
  64. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1161 -0
  65. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +558 -0
  66. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +421 -0
  67. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1004 -0
  68. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
  69. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
  70. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1939 -0
  71. data/vendor/pygments-main/pygments/lexers/actionscript.py +245 -0
  72. data/vendor/pygments-main/pygments/lexers/agile.py +24 -0
  73. data/vendor/pygments-main/pygments/lexers/algebra.py +240 -0
  74. data/vendor/pygments-main/pygments/lexers/ambient.py +76 -0
  75. data/vendor/pygments-main/pygments/lexers/ampl.py +87 -0
  76. data/vendor/pygments-main/pygments/lexers/apl.py +101 -0
  77. data/vendor/pygments-main/pygments/lexers/archetype.py +318 -0
  78. data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
  79. data/vendor/pygments-main/pygments/lexers/asm.py +1005 -0
  80. data/vendor/pygments-main/pygments/lexers/automation.py +374 -0
  81. data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
  82. data/vendor/pygments-main/pygments/lexers/basic.py +662 -0
  83. data/vendor/pygments-main/pygments/lexers/bibtex.py +160 -0
  84. data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
  85. data/vendor/pygments-main/pygments/lexers/business.py +627 -0
  86. data/vendor/pygments-main/pygments/lexers/c_cpp.py +344 -0
  87. data/vendor/pygments-main/pygments/lexers/c_like.py +566 -0
  88. data/vendor/pygments-main/pygments/lexers/capnproto.py +78 -0
  89. data/vendor/pygments-main/pygments/lexers/chapel.py +112 -0
  90. data/vendor/pygments-main/pygments/lexers/clean.py +179 -0
  91. data/vendor/pygments-main/pygments/lexers/compiled.py +34 -0
  92. data/vendor/pygments-main/pygments/lexers/configs.py +984 -0
  93. data/vendor/pygments-main/pygments/lexers/console.py +114 -0
  94. data/vendor/pygments-main/pygments/lexers/crystal.py +392 -0
  95. data/vendor/pygments-main/pygments/lexers/csound.py +467 -0
  96. data/vendor/pygments-main/pygments/lexers/css.py +691 -0
  97. data/vendor/pygments-main/pygments/lexers/d.py +256 -0
  98. data/vendor/pygments-main/pygments/lexers/dalvik.py +125 -0
  99. data/vendor/pygments-main/pygments/lexers/data.py +698 -0
  100. data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
  101. data/vendor/pygments-main/pygments/lexers/diff.py +165 -0
  102. data/vendor/pygments-main/pygments/lexers/dotnet.py +707 -0
  103. data/vendor/pygments-main/pygments/lexers/dsls.py +960 -0
  104. data/vendor/pygments-main/pygments/lexers/dylan.py +287 -0
  105. data/vendor/pygments-main/pygments/lexers/ecl.py +139 -0
  106. data/vendor/pygments-main/pygments/lexers/eiffel.py +65 -0
  107. data/vendor/pygments-main/pygments/lexers/elm.py +121 -0
  108. data/vendor/pygments-main/pygments/lexers/email.py +151 -0
  109. data/vendor/pygments-main/pygments/lexers/erlang.py +530 -0
  110. data/vendor/pygments-main/pygments/lexers/esoteric.py +304 -0
  111. data/vendor/pygments-main/pygments/lexers/ezhil.py +77 -0
  112. data/vendor/pygments-main/pygments/lexers/factor.py +344 -0
  113. data/vendor/pygments-main/pygments/lexers/fantom.py +250 -0
  114. data/vendor/pygments-main/pygments/lexers/felix.py +273 -0
  115. data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
  116. data/vendor/pygments-main/pygments/lexers/forth.py +178 -0
  117. data/vendor/pygments-main/pygments/lexers/fortran.py +206 -0
  118. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  119. data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
  120. data/vendor/pygments-main/pygments/lexers/functional.py +21 -0
  121. data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
  122. data/vendor/pygments-main/pygments/lexers/go.py +101 -0
  123. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +270 -0
  124. data/vendor/pygments-main/pygments/lexers/graph.py +85 -0
  125. data/vendor/pygments-main/pygments/lexers/graphics.py +800 -0
  126. data/vendor/pygments-main/pygments/lexers/haskell.py +870 -0
  127. data/vendor/pygments-main/pygments/lexers/haxe.py +936 -0
  128. data/vendor/pygments-main/pygments/lexers/hdl.py +472 -0
  129. data/vendor/pygments-main/pygments/lexers/hexdump.py +103 -0
  130. data/vendor/pygments-main/pygments/lexers/html.py +614 -0
  131. data/vendor/pygments-main/pygments/lexers/idl.py +281 -0
  132. data/vendor/pygments-main/pygments/lexers/igor.py +420 -0
  133. data/vendor/pygments-main/pygments/lexers/inferno.py +96 -0
  134. data/vendor/pygments-main/pygments/lexers/installers.py +322 -0
  135. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1368 -0
  136. data/vendor/pygments-main/pygments/lexers/iolang.py +63 -0
  137. data/vendor/pygments-main/pygments/lexers/j.py +146 -0
  138. data/vendor/pygments-main/pygments/lexers/javascript.py +1540 -0
  139. data/vendor/pygments-main/pygments/lexers/julia.py +331 -0
  140. data/vendor/pygments-main/pygments/lexers/jvm.py +1673 -0
  141. data/vendor/pygments-main/pygments/lexers/lisp.py +2699 -0
  142. data/vendor/pygments-main/pygments/lexers/make.py +206 -0
  143. data/vendor/pygments-main/pygments/lexers/markup.py +765 -0
  144. data/vendor/pygments-main/pygments/lexers/math.py +21 -0
  145. data/vendor/pygments-main/pygments/lexers/matlab.py +720 -0
  146. data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
  147. data/vendor/pygments-main/pygments/lexers/ml.py +958 -0
  148. data/vendor/pygments-main/pygments/lexers/modeling.py +366 -0
  149. data/vendor/pygments-main/pygments/lexers/modula2.py +1580 -0
  150. data/vendor/pygments-main/pygments/lexers/monte.py +204 -0
  151. data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
  152. data/vendor/pygments-main/pygments/lexers/ncl.py +894 -0
  153. data/vendor/pygments-main/pygments/lexers/nimrod.py +159 -0
  154. data/vendor/pygments-main/pygments/lexers/nit.py +64 -0
  155. data/vendor/pygments-main/pygments/lexers/nix.py +136 -0
  156. data/vendor/pygments-main/pygments/lexers/oberon.py +121 -0
  157. data/vendor/pygments-main/pygments/lexers/objective.py +504 -0
  158. data/vendor/pygments-main/pygments/lexers/ooc.py +85 -0
  159. data/vendor/pygments-main/pygments/lexers/other.py +41 -0
  160. data/vendor/pygments-main/pygments/lexers/parasail.py +79 -0
  161. data/vendor/pygments-main/pygments/lexers/parsers.py +800 -0
  162. data/vendor/pygments-main/pygments/lexers/pascal.py +644 -0
  163. data/vendor/pygments-main/pygments/lexers/pawn.py +205 -0
  164. data/vendor/pygments-main/pygments/lexers/perl.py +732 -0
  165. data/vendor/pygments-main/pygments/lexers/php.py +321 -0
  166. data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
  167. data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
  168. data/vendor/pygments-main/pygments/lexers/praat.py +302 -0
  169. data/vendor/pygments-main/pygments/lexers/prolog.py +306 -0
  170. data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
  171. data/vendor/pygments-main/pygments/lexers/python.py +1151 -0
  172. data/vendor/pygments-main/pygments/lexers/qvt.py +152 -0
  173. data/vendor/pygments-main/pygments/lexers/r.py +191 -0
  174. data/vendor/pygments-main/pygments/lexers/rdf.py +463 -0
  175. data/vendor/pygments-main/pygments/lexers/rebol.py +431 -0
  176. data/vendor/pygments-main/pygments/lexers/resource.py +85 -0
  177. data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
  178. data/vendor/pygments-main/pygments/lexers/rnc.py +67 -0
  179. data/vendor/pygments-main/pygments/lexers/roboconf.py +82 -0
  180. data/vendor/pygments-main/pygments/lexers/robotframework.py +552 -0
  181. data/vendor/pygments-main/pygments/lexers/ruby.py +517 -0
  182. data/vendor/pygments-main/pygments/lexers/rust.py +224 -0
  183. data/vendor/pygments-main/pygments/lexers/sas.py +228 -0
  184. data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
  185. data/vendor/pygments-main/pygments/lexers/scripting.py +1284 -0
  186. data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
  187. data/vendor/pygments-main/pygments/lexers/shell.py +914 -0
  188. data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
  189. data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
  190. data/vendor/pygments-main/pygments/lexers/smalltalk.py +195 -0
  191. data/vendor/pygments-main/pygments/lexers/smv.py +79 -0
  192. data/vendor/pygments-main/pygments/lexers/snobol.py +83 -0
  193. data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
  194. data/vendor/pygments-main/pygments/lexers/special.py +105 -0
  195. data/vendor/pygments-main/pygments/lexers/sql.py +837 -0
  196. data/vendor/pygments-main/pygments/lexers/stata.py +171 -0
  197. data/vendor/pygments-main/pygments/lexers/supercollider.py +95 -0
  198. data/vendor/pygments-main/pygments/lexers/tcl.py +145 -0
  199. data/vendor/pygments-main/pygments/lexers/templates.py +2264 -0
  200. data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
  201. data/vendor/pygments-main/pygments/lexers/testing.py +207 -0
  202. data/vendor/pygments-main/pygments/lexers/text.py +26 -0
  203. data/vendor/pygments-main/pygments/lexers/textedit.py +169 -0
  204. data/vendor/pygments-main/pygments/lexers/textfmts.py +430 -0
  205. data/vendor/pygments-main/pygments/lexers/theorem.py +474 -0
  206. data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
  207. data/vendor/pygments-main/pygments/lexers/trafficscript.py +54 -0
  208. data/vendor/pygments-main/pygments/lexers/typoscript.py +219 -0
  209. data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
  210. data/vendor/pygments-main/pygments/lexers/urbi.py +146 -0
  211. data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
  212. data/vendor/pygments-main/pygments/lexers/varnish.py +190 -0
  213. data/vendor/pygments-main/pygments/lexers/verification.py +114 -0
  214. data/vendor/pygments-main/pygments/lexers/web.py +24 -0
  215. data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
  216. data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
  217. data/vendor/pygments-main/pygments/lexers/whiley.py +116 -0
  218. data/vendor/pygments-main/pygments/lexers/x10.py +69 -0
  219. data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
  220. data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
  221. data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
  222. data/vendor/pygments-main/pygments/modeline.py +1 -1
  223. data/vendor/pygments-main/pygments/plugin.py +4 -2
  224. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  225. data/vendor/pygments-main/pygments/scanner.py +2 -2
  226. data/vendor/pygments-main/pygments/sphinxext.py +2 -4
  227. data/vendor/pygments-main/pygments/style.py +61 -24
  228. data/vendor/pygments-main/pygments/styles/__init__.py +10 -4
  229. data/vendor/pygments-main/pygments/styles/abap.py +1 -1
  230. data/vendor/pygments-main/pygments/styles/algol.py +1 -1
  231. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
  232. data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
  233. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  234. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  235. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  236. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  237. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  238. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  239. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  240. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  241. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  242. data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
  243. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
  244. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  245. data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
  246. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  247. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  248. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  249. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  250. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  251. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  252. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -1
  253. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  254. data/vendor/pygments-main/pygments/styles/sas.py +1 -1
  255. data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
  256. data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
  257. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -15
  258. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  259. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  260. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  261. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  262. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  263. data/vendor/pygments-main/pygments/token.py +1 -1
  264. data/vendor/pygments-main/pygments/unistring.py +47 -108
  265. data/vendor/pygments-main/pygments/util.py +15 -92
  266. metadata +69 -136
  267. data/CHANGELOG.md +0 -111
  268. data/README.md +0 -121
  269. data/circle.yml +0 -20
  270. data/test/test_data.py +0 -514
  271. data/test/test_data_generated +0 -2582
  272. data/vendor/custom_lexers/github.py +0 -565
  273. data/vendor/pygments-main/CHANGES +0 -1186
  274. data/vendor/pygments-main/MANIFEST.in +0 -6
  275. data/vendor/pygments-main/Makefile +0 -65
  276. data/vendor/pygments-main/README.rst +0 -39
  277. data/vendor/pygments-main/REVISION +0 -1
  278. data/vendor/pygments-main/TODO +0 -12
  279. data/vendor/pygments-main/doc/Makefile +0 -153
  280. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  281. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  282. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  283. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  284. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  285. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  286. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  287. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  288. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  289. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  290. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  291. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  292. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  293. data/vendor/pygments-main/doc/conf.py +0 -241
  294. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  295. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  296. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  297. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  298. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  299. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  300. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  301. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  302. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  303. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  304. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  305. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  306. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  307. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  308. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  309. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  310. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  311. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  312. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  313. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  314. data/vendor/pygments-main/doc/download.rst +0 -41
  315. data/vendor/pygments-main/doc/faq.rst +0 -139
  316. data/vendor/pygments-main/doc/index.rst +0 -54
  317. data/vendor/pygments-main/doc/languages.rst +0 -154
  318. data/vendor/pygments-main/doc/make.bat +0 -190
  319. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  320. data/vendor/pygments-main/external/autopygmentize +0 -101
  321. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  322. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  323. data/vendor/pygments-main/external/moin-parser.py +0 -112
  324. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  325. data/vendor/pygments-main/external/rst-directive.py +0 -82
  326. data/vendor/pygments-main/pygmentize +0 -8
  327. data/vendor/pygments-main/requirements.txt +0 -5
  328. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  329. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  330. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  331. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  332. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  333. data/vendor/pygments-main/scripts/pylintrc +0 -301
  334. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  335. data/vendor/pygments-main/setup.cfg +0 -10
  336. data/vendor/pygments-main/setup.py +0 -77
  337. data/vendor/pygments-main/tox.ini +0 -7
  338. data/vendor/simplejson/.gitignore +0 -10
  339. data/vendor/simplejson/.travis.yml +0 -5
  340. data/vendor/simplejson/CHANGES.txt +0 -291
  341. data/vendor/simplejson/LICENSE.txt +0 -19
  342. data/vendor/simplejson/MANIFEST.in +0 -5
  343. data/vendor/simplejson/README.rst +0 -19
  344. data/vendor/simplejson/conf.py +0 -179
  345. data/vendor/simplejson/index.rst +0 -628
  346. data/vendor/simplejson/scripts/make_docs.py +0 -18
  347. data/vendor/simplejson/setup.py +0 -104
  348. data/vendor/simplejson/simplejson/__init__.py +0 -510
  349. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  350. data/vendor/simplejson/simplejson/decoder.py +0 -425
  351. data/vendor/simplejson/simplejson/encoder.py +0 -567
  352. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  353. data/vendor/simplejson/simplejson/scanner.py +0 -77
  354. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  355. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  356. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  357. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  358. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  359. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  360. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  361. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  362. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  363. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  364. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  365. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  366. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  367. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  368. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  369. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  370. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  371. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  372. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  373. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  374. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  375. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  376. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  377. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  378. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -0,0 +1,344 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.c_cpp
4
+ ~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexers for C/C++ languages.
7
+
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import re
13
+
14
+ from pygments.lexer import RegexLexer, include, bygroups, using, \
15
+ this, inherit, default, words
16
+ from pygments.util import get_bool_opt
17
+ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
18
+ Number, Punctuation, Error
19
+
20
+ __all__ = ['CLexer', 'CppLexer']
21
+
22
+
23
+ class CFamilyLexer(RegexLexer):
24
+ """
25
+ For C family source code. This is used as a base class to avoid repetitious
26
+ definitions.
27
+ """
28
+
29
+ #: optional Comment or Whitespace
30
+ _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
31
+
32
+ # The trailing ?, rather than *, avoids a geometric performance drop here.
33
+ #: only one /* */ style comment
34
+ _ws1 = r'\s*(?:/[*].*?[*]/\s*)?'
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
+
48
+ tokens = {
49
+ 'whitespace': [
50
+ # preprocessor directives: without whitespace
51
+ (r'^#if\s+0', Comment.Preproc, 'if0'),
52
+ ('^#', Comment.Preproc, 'macro'),
53
+ # or with whitespace
54
+ ('^(' + _ws1 + r')(#if\s+0)',
55
+ bygroups(using(this), Comment.Preproc), 'if0'),
56
+ ('^(' + _ws1 + ')(#)',
57
+ bygroups(using(this), Comment.Preproc), 'macro'),
58
+ (r'\n', Text),
59
+ (r'\s+', Text),
60
+ (r'\\\n', Text), # line continuation
61
+ (r'//(\n|[\w\W]*?[^\\]\n)', Comment.Single),
62
+ (r'/(\\\n)?[*][\w\W]*?[*](\\\n)?/', Comment.Multiline),
63
+ # Open until EOF, so no ending delimeter
64
+ (r'/(\\\n)?[*][\w\W]*', Comment.Multiline),
65
+ ],
66
+ 'statements': [
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])(')",
69
+ bygroups(String.Affix, String.Char, String.Char, String.Char)),
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),
80
+ (r'\*/', Error),
81
+ (r'[~!%^&*+=|?:<>/-]', Operator),
82
+ (r'[()\[\],.]', Punctuation),
83
+ (r'(struct|union)(\s+)', bygroups(Keyword, Text), 'classname'),
84
+ (words(('asm', 'auto', 'break', 'case', 'const', 'continue',
85
+ 'default', 'do', 'else', 'enum', 'extern', 'for', 'goto',
86
+ 'if', 'register', 'restricted', 'return', 'sizeof', 'struct',
87
+ 'static', 'switch', 'typedef', 'volatile', 'while', 'union',
88
+ 'thread_local', 'alignas', 'alignof', 'static_assert', '_Pragma'),
89
+ suffix=r'\b'), Keyword),
90
+ (r'(bool|int|long|float|short|double|char|unsigned|signed|void)\b',
91
+ Keyword.Type),
92
+ (words(('inline', '_inline', '__inline', 'naked', 'restrict',
93
+ 'thread'), suffix=r'\b'), Keyword.Reserved),
94
+ # Vector intrinsics
95
+ (r'(__m(128i|128d|128|64))\b', Keyword.Reserved),
96
+ # Microsoft-isms
97
+ (words((
98
+ 'asm', 'int8', 'based', 'except', 'int16', 'stdcall', 'cdecl',
99
+ 'fastcall', 'int32', 'declspec', 'finally', 'int64', 'try',
100
+ 'leave', 'wchar_t', 'w64', 'unaligned', 'raise', 'noop',
101
+ 'identifier', 'forceinline', 'assume'),
102
+ prefix=r'__', suffix=r'\b'), Keyword.Reserved),
103
+ (r'(true|false|NULL)\b', Name.Builtin),
104
+ (r'(' + _ident + r')(\s*)(:)(?!:)', bygroups(Name.Label, Text, Punctuation)),
105
+ (_ident, Name)
106
+ ],
107
+ 'root': [
108
+ include('whitespace'),
109
+ # functions
110
+ (r'((?:' + _ident + r'(?:[&*\s])+))' # return arguments
111
+ r'(' + _ident + r')' # method name
112
+ r'(\s*\([^;]*?\))' # signature
113
+ r'([^;{]*)(\{)',
114
+ bygroups(using(this), Name.Function, using(this), using(this),
115
+ Punctuation),
116
+ 'function'),
117
+ # function declarations
118
+ (r'((?:' + _ident + r'(?:[&*\s])+))' # return arguments
119
+ r'(' + _ident + r')' # method name
120
+ r'(\s*\([^;]*?\))' # signature
121
+ r'([^;]*)(;)',
122
+ bygroups(using(this), Name.Function, using(this), using(this),
123
+ Punctuation)),
124
+ default('statement'),
125
+ ],
126
+ 'statement': [
127
+ include('whitespace'),
128
+ include('statements'),
129
+ (r'\}', Punctuation),
130
+ (r'[{;]', Punctuation, '#pop'),
131
+ ],
132
+ 'function': [
133
+ include('whitespace'),
134
+ include('statements'),
135
+ (';', Punctuation),
136
+ (r'\{', Punctuation, '#push'),
137
+ (r'\}', Punctuation, '#pop'),
138
+ ],
139
+ 'string': [
140
+ (r'"', String, '#pop'),
141
+ (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|'
142
+ r'u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})', String.Escape),
143
+ (r'[^\\"\n]+', String), # all other characters
144
+ (r'\\\n', String), # line continuation
145
+ (r'\\', String), # stray backslash
146
+ ],
147
+ 'macro': [
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)),
150
+ (r'[^/\n]+', Comment.Preproc),
151
+ (r'/[*](.|\n)*?[*]/', Comment.Multiline),
152
+ (r'//.*?\n', Comment.Single, '#pop'),
153
+ (r'/', Comment.Preproc),
154
+ (r'(?<=\\)\n', Comment.Preproc),
155
+ (r'\n', Comment.Preproc, '#pop'),
156
+ ],
157
+ 'if0': [
158
+ (r'^\s*#if.*?(?<!\\)\n', Comment.Preproc, '#push'),
159
+ (r'^\s*#el(?:se|if).*\n', Comment.Preproc, '#pop'),
160
+ (r'^\s*#endif.*?(?<!\\)\n', Comment.Preproc, '#pop'),
161
+ (r'.*?\n', Comment),
162
+ ],
163
+ 'classname': [
164
+ (_ident, Name.Class, '#pop'),
165
+ # template specification
166
+ (r'\s*(?=>)', Text, '#pop'),
167
+ default('#pop')
168
+ ]
169
+ }
170
+
171
+ stdlib_types = {
172
+ 'size_t', 'ssize_t', 'off_t', 'wchar_t', 'ptrdiff_t', 'sig_atomic_t', 'fpos_t',
173
+ 'clock_t', 'time_t', 'va_list', 'jmp_buf', 'FILE', 'DIR', 'div_t', 'ldiv_t',
174
+ 'mbstate_t', 'wctrans_t', 'wint_t', 'wctype_t'}
175
+ c99_types = {
176
+ 'int8_t', 'int16_t', 'int32_t', 'int64_t', 'uint8_t',
177
+ 'uint16_t', 'uint32_t', 'uint64_t', 'int_least8_t', 'int_least16_t',
178
+ 'int_least32_t', 'int_least64_t', 'uint_least8_t', 'uint_least16_t',
179
+ 'uint_least32_t', 'uint_least64_t', 'int_fast8_t', 'int_fast16_t', 'int_fast32_t',
180
+ 'int_fast64_t', 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
181
+ 'intptr_t', 'uintptr_t', 'intmax_t', 'uintmax_t'}
182
+ linux_types = {
183
+ 'clockid_t', 'cpu_set_t', 'cpumask_t', 'dev_t', 'gid_t', 'id_t', 'ino_t', 'key_t',
184
+ 'mode_t', 'nfds_t', 'pid_t', 'rlim_t', 'sig_t', 'sighandler_t', 'siginfo_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'}
197
+
198
+ def __init__(self, **options):
199
+ self.stdlibhighlighting = get_bool_opt(options, 'stdlibhighlighting', True)
200
+ self.c99highlighting = get_bool_opt(options, 'c99highlighting', True)
201
+ self.c11highlighting = get_bool_opt(options, 'c11highlighting', True)
202
+ self.platformhighlighting = get_bool_opt(options, 'platformhighlighting', True)
203
+ RegexLexer.__init__(self, **options)
204
+
205
+ def get_tokens_unprocessed(self, text):
206
+ for index, token, value in \
207
+ RegexLexer.get_tokens_unprocessed(self, text):
208
+ if token is Name:
209
+ if self.stdlibhighlighting and value in self.stdlib_types:
210
+ token = Keyword.Type
211
+ elif self.c99highlighting and value in self.c99_types:
212
+ token = Keyword.Type
213
+ elif self.c11highlighting and value in self.c11_atomic_types:
214
+ token = Keyword.Type
215
+ elif self.platformhighlighting and value in self.linux_types:
216
+ token = Keyword.Type
217
+ yield index, token, value
218
+
219
+
220
+ class CLexer(CFamilyLexer):
221
+ """
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``).
242
+ """
243
+ name = 'C'
244
+ aliases = ['c']
245
+ filenames = ['*.c', '*.h', '*.idc']
246
+ mimetypes = ['text/x-chdr', 'text/x-csrc']
247
+ priority = 0.1
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
+
260
+ def analyse_text(text):
261
+ if re.search(r'^\s*#include [<"]', text, re.MULTILINE):
262
+ return 0.1
263
+ if re.search(r'^\s*#ifn?def ', text, re.MULTILINE):
264
+ return 0.1
265
+
266
+
267
+ class CppLexer(CFamilyLexer):
268
+ """
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``).
289
+ """
290
+ name = 'C++'
291
+ aliases = ['cpp', 'c++']
292
+ filenames = ['*.cpp', '*.hpp', '*.c++', '*.h++',
293
+ '*.cc', '*.hh', '*.cxx', '*.hxx',
294
+ '*.C', '*.H', '*.cp', '*.CPP']
295
+ mimetypes = ['text/x-c++hdr', 'text/x-c++src']
296
+ priority = 0.1
297
+
298
+ tokens = {
299
+ 'statements': [
300
+ (r'(class|concept|typename)(\s+)', bygroups(Keyword, Text), 'classname'),
301
+ (words((
302
+ 'catch', 'const_cast', 'delete', 'dynamic_cast', 'explicit',
303
+ 'export', 'friend', 'mutable', 'namespace', 'new', 'operator',
304
+ 'private', 'protected', 'public', 'reinterpret_cast', 'class',
305
+ 'restrict', 'static_cast', 'template', 'this', 'throw', 'throws',
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
+
314
+ # C++11 raw strings
315
+ (r'((?:[LuU]|u8)?R)(")([^\\()\s]{,16})(\()((?:.|\n)*?)(\)\3)(")',
316
+ bygroups(String.Affix, String, String.Delimiter, String.Delimiter,
317
+ String, String.Delimiter, String)),
318
+ inherit,
319
+ ],
320
+ 'root': [
321
+ inherit,
322
+ # C++ Microsoft-isms
323
+ (words(('virtual_inheritance', 'uuidof', 'super', 'single_inheritance',
324
+ 'multiple_inheritance', 'interface', 'event'),
325
+ prefix=r'__', suffix=r'\b'), Keyword.Reserved),
326
+ # Offload C++ extensions, http://offload.codeplay.com/
327
+ (r'__(offload|blockingoffload|outer)\b', Keyword.Pseudo),
328
+ ],
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'),
334
+ # template specification
335
+ (r'\s*(?=>)', Text, '#pop'),
336
+ default('#pop')
337
+ ]
338
+ }
339
+
340
+ def analyse_text(text):
341
+ if re.search('#include <[a-z_]+>', text):
342
+ return 0.2
343
+ if re.search('using namespace ', text):
344
+ return 0.4
@@ -0,0 +1,566 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.c_like
4
+ ~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexers for other C-like languages.
7
+
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import re
13
+
14
+ from pygments.lexer import RegexLexer, include, bygroups, inherit, words, \
15
+ default
16
+ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
17
+ Number, Punctuation
18
+
19
+ from pygments.lexers.c_cpp import CLexer, CppLexer
20
+ from pygments.lexers import _mql_builtins
21
+
22
+ __all__ = ['PikeLexer', 'NesCLexer', 'ClayLexer', 'ECLexer', 'ValaLexer',
23
+ 'CudaLexer', 'SwigLexer', 'MqlLexer', 'ArduinoLexer', 'CharmciLexer']
24
+
25
+
26
+ class PikeLexer(CppLexer):
27
+ """
28
+ For `Pike <http://pike.lysator.liu.se/>`_ source code.
29
+
30
+ .. versionadded:: 2.0
31
+ """
32
+ name = 'Pike'
33
+ aliases = ['pike']
34
+ filenames = ['*.pike', '*.pmod']
35
+ mimetypes = ['text/x-pike']
36
+
37
+ tokens = {
38
+ 'statements': [
39
+ (words((
40
+ 'catch', 'new', 'private', 'protected', 'public', 'gauge',
41
+ 'throw', 'throws', 'class', 'interface', 'implement', 'abstract', 'extends', 'from',
42
+ 'this', 'super', 'constant', 'final', 'static', 'import', 'use', 'extern',
43
+ 'inline', 'proto', 'break', 'continue', 'if', 'else', 'for',
44
+ 'while', 'do', 'switch', 'case', 'as', 'in', 'version', 'return', 'true', 'false', 'null',
45
+ '__VERSION__', '__MAJOR__', '__MINOR__', '__BUILD__', '__REAL_VERSION__',
46
+ '__REAL_MAJOR__', '__REAL_MINOR__', '__REAL_BUILD__', '__DATE__', '__TIME__',
47
+ '__FILE__', '__DIR__', '__LINE__', '__AUTO_BIGNUM__', '__NT__', '__PIKE__',
48
+ '__amigaos__', '_Pragma', 'static_assert', 'defined', 'sscanf'), suffix=r'\b'),
49
+ Keyword),
50
+ (r'(bool|int|long|float|short|double|char|string|object|void|mapping|'
51
+ r'array|multiset|program|function|lambda|mixed|'
52
+ r'[a-z_][a-z0-9_]*_t)\b',
53
+ Keyword.Type),
54
+ (r'(class)(\s+)', bygroups(Keyword, Text), 'classname'),
55
+ (r'[~!%^&*+=|?:<>/@-]', Operator),
56
+ inherit,
57
+ ],
58
+ 'classname': [
59
+ (r'[a-zA-Z_]\w*', Name.Class, '#pop'),
60
+ # template specification
61
+ (r'\s*(?=>)', Text, '#pop'),
62
+ ],
63
+ }
64
+
65
+
66
+ class NesCLexer(CLexer):
67
+ """
68
+ For `nesC <https://github.com/tinyos/nesc>`_ source code with preprocessor
69
+ directives.
70
+
71
+ .. versionadded:: 2.0
72
+ """
73
+ name = 'nesC'
74
+ aliases = ['nesc']
75
+ filenames = ['*.nc']
76
+ mimetypes = ['text/x-nescsrc']
77
+
78
+ tokens = {
79
+ 'statements': [
80
+ (words((
81
+ 'abstract', 'as', 'async', 'atomic', 'call', 'command', 'component',
82
+ 'components', 'configuration', 'event', 'extends', 'generic',
83
+ 'implementation', 'includes', 'interface', 'module', 'new', 'norace',
84
+ 'post', 'provides', 'signal', 'task', 'uses'), suffix=r'\b'),
85
+ Keyword),
86
+ (words(('nx_struct', 'nx_union', 'nx_int8_t', 'nx_int16_t', 'nx_int32_t',
87
+ 'nx_int64_t', 'nx_uint8_t', 'nx_uint16_t', 'nx_uint32_t',
88
+ 'nx_uint64_t'), suffix=r'\b'),
89
+ Keyword.Type),
90
+ inherit,
91
+ ],
92
+ }
93
+
94
+
95
+ class ClayLexer(RegexLexer):
96
+ """
97
+ For `Clay <http://claylabs.com/clay/>`_ source.
98
+
99
+ .. versionadded:: 2.0
100
+ """
101
+ name = 'Clay'
102
+ filenames = ['*.clay']
103
+ aliases = ['clay']
104
+ mimetypes = ['text/x-clay']
105
+ tokens = {
106
+ 'root': [
107
+ (r'\s', Text),
108
+ (r'//.*?$', Comment.Single),
109
+ (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
110
+ (r'\b(public|private|import|as|record|variant|instance'
111
+ r'|define|overload|default|external|alias'
112
+ r'|rvalue|ref|forward|inline|noinline|forceinline'
113
+ r'|enum|var|and|or|not|if|else|goto|return|while'
114
+ r'|switch|case|break|continue|for|in|true|false|try|catch|throw'
115
+ r'|finally|onerror|staticassert|eval|when|newtype'
116
+ r'|__FILE__|__LINE__|__COLUMN__|__ARG__'
117
+ r')\b', Keyword),
118
+ (r'[~!%^&*+=|:<>/-]', Operator),
119
+ (r'[#(){}\[\],;.]', Punctuation),
120
+ (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),
121
+ (r'\d+[LlUu]*', Number.Integer),
122
+ (r'\b(true|false)\b', Name.Builtin),
123
+ (r'(?i)[a-z_?][\w?]*', Name),
124
+ (r'"""', String, 'tdqs'),
125
+ (r'"', String, 'dqs'),
126
+ ],
127
+ 'strings': [
128
+ (r'(?i)\\(x[0-9a-f]{2}|.)', String.Escape),
129
+ (r'.', String),
130
+ ],
131
+ 'nl': [
132
+ (r'\n', String),
133
+ ],
134
+ 'dqs': [
135
+ (r'"', String, '#pop'),
136
+ include('strings'),
137
+ ],
138
+ 'tdqs': [
139
+ (r'"""', String, '#pop'),
140
+ include('strings'),
141
+ include('nl'),
142
+ ],
143
+ }
144
+
145
+
146
+ class ECLexer(CLexer):
147
+ """
148
+ For eC source code with preprocessor directives.
149
+
150
+ .. versionadded:: 1.5
151
+ """
152
+ name = 'eC'
153
+ aliases = ['ec']
154
+ filenames = ['*.ec', '*.eh']
155
+ mimetypes = ['text/x-echdr', 'text/x-ecsrc']
156
+
157
+ tokens = {
158
+ 'statements': [
159
+ (words((
160
+ 'virtual', 'class', 'private', 'public', 'property', 'import',
161
+ 'delete', 'new', 'new0', 'renew', 'renew0', 'define', 'get',
162
+ 'set', 'remote', 'dllexport', 'dllimport', 'stdcall', 'subclass',
163
+ '__on_register_module', 'namespace', 'using', 'typed_object',
164
+ 'any_object', 'incref', 'register', 'watch', 'stopwatching', 'firewatchers',
165
+ 'watchable', 'class_designer', 'class_fixed', 'class_no_expansion', 'isset',
166
+ 'class_default_property', 'property_category', 'class_data',
167
+ 'class_property', 'thisclass', 'dbtable', 'dbindex',
168
+ 'database_open', 'dbfield'), suffix=r'\b'), Keyword),
169
+ (words(('uint', 'uint16', 'uint32', 'uint64', 'bool', 'byte',
170
+ 'unichar', 'int64'), suffix=r'\b'),
171
+ Keyword.Type),
172
+ (r'(class)(\s+)', bygroups(Keyword, Text), 'classname'),
173
+ (r'(null|value|this)\b', Name.Builtin),
174
+ inherit,
175
+ ]
176
+ }
177
+
178
+
179
+ class ValaLexer(RegexLexer):
180
+ """
181
+ For Vala source code with preprocessor directives.
182
+
183
+ .. versionadded:: 1.1
184
+ """
185
+ name = 'Vala'
186
+ aliases = ['vala', 'vapi']
187
+ filenames = ['*.vala', '*.vapi']
188
+ mimetypes = ['text/x-vala']
189
+
190
+ tokens = {
191
+ 'whitespace': [
192
+ (r'^\s*#if\s+0', Comment.Preproc, 'if0'),
193
+ (r'\n', Text),
194
+ (r'\s+', Text),
195
+ (r'\\\n', Text), # line continuation
196
+ (r'//(\n|(.|\n)*?[^\\]\n)', Comment.Single),
197
+ (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
198
+ ],
199
+ 'statements': [
200
+ (r'[L@]?"', String, 'string'),
201
+ (r"L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'",
202
+ String.Char),
203
+ (r'(?s)""".*?"""', String), # verbatim strings
204
+ (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),
205
+ (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
206
+ (r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),
207
+ (r'0[0-7]+[Ll]?', Number.Oct),
208
+ (r'\d+[Ll]?', Number.Integer),
209
+ (r'[~!%^&*+=|?:<>/-]', Operator),
210
+ (r'(\[)(Compact|Immutable|(?:Boolean|Simple)Type)(\])',
211
+ bygroups(Punctuation, Name.Decorator, Punctuation)),
212
+ # TODO: "correctly" parse complex code attributes
213
+ (r'(\[)(CCode|(?:Integer|Floating)Type)',
214
+ bygroups(Punctuation, Name.Decorator)),
215
+ (r'[()\[\],.]', Punctuation),
216
+ (words((
217
+ 'as', 'base', 'break', 'case', 'catch', 'construct', 'continue',
218
+ 'default', 'delete', 'do', 'else', 'enum', 'finally', 'for',
219
+ 'foreach', 'get', 'if', 'in', 'is', 'lock', 'new', 'out', 'params',
220
+ 'return', 'set', 'sizeof', 'switch', 'this', 'throw', 'try',
221
+ 'typeof', 'while', 'yield'), suffix=r'\b'),
222
+ Keyword),
223
+ (words((
224
+ 'abstract', 'const', 'delegate', 'dynamic', 'ensures', 'extern',
225
+ 'inline', 'internal', 'override', 'owned', 'private', 'protected',
226
+ 'public', 'ref', 'requires', 'signal', 'static', 'throws', 'unowned',
227
+ 'var', 'virtual', 'volatile', 'weak', 'yields'), suffix=r'\b'),
228
+ Keyword.Declaration),
229
+ (r'(namespace|using)(\s+)', bygroups(Keyword.Namespace, Text),
230
+ 'namespace'),
231
+ (r'(class|errordomain|interface|struct)(\s+)',
232
+ bygroups(Keyword.Declaration, Text), 'class'),
233
+ (r'(\.)([a-zA-Z_]\w*)',
234
+ bygroups(Operator, Name.Attribute)),
235
+ # void is an actual keyword, others are in glib-2.0.vapi
236
+ (words((
237
+ 'void', 'bool', 'char', 'double', 'float', 'int', 'int8', 'int16',
238
+ 'int32', 'int64', 'long', 'short', 'size_t', 'ssize_t', 'string',
239
+ 'time_t', 'uchar', 'uint', 'uint8', 'uint16', 'uint32', 'uint64',
240
+ 'ulong', 'unichar', 'ushort'), suffix=r'\b'),
241
+ Keyword.Type),
242
+ (r'(true|false|null)\b', Name.Builtin),
243
+ (r'[a-zA-Z_]\w*', Name),
244
+ ],
245
+ 'root': [
246
+ include('whitespace'),
247
+ default('statement'),
248
+ ],
249
+ 'statement': [
250
+ include('whitespace'),
251
+ include('statements'),
252
+ ('[{}]', Punctuation),
253
+ (';', Punctuation, '#pop'),
254
+ ],
255
+ 'string': [
256
+ (r'"', String, '#pop'),
257
+ (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
258
+ (r'[^\\"\n]+', String), # all other characters
259
+ (r'\\\n', String), # line continuation
260
+ (r'\\', String), # stray backslash
261
+ ],
262
+ 'if0': [
263
+ (r'^\s*#if.*?(?<!\\)\n', Comment.Preproc, '#push'),
264
+ (r'^\s*#el(?:se|if).*\n', Comment.Preproc, '#pop'),
265
+ (r'^\s*#endif.*?(?<!\\)\n', Comment.Preproc, '#pop'),
266
+ (r'.*?\n', Comment),
267
+ ],
268
+ 'class': [
269
+ (r'[a-zA-Z_]\w*', Name.Class, '#pop')
270
+ ],
271
+ 'namespace': [
272
+ (r'[a-zA-Z_][\w.]*', Name.Namespace, '#pop')
273
+ ],
274
+ }
275
+
276
+
277
+ class CudaLexer(CLexer):
278
+ """
279
+ For NVIDIA `CUDA™ <http://developer.nvidia.com/category/zone/cuda-zone>`_
280
+ source.
281
+
282
+ .. versionadded:: 1.6
283
+ """
284
+ name = 'CUDA'
285
+ filenames = ['*.cu', '*.cuh']
286
+ aliases = ['cuda', 'cu']
287
+ mimetypes = ['text/x-cuda']
288
+
289
+ function_qualifiers = {'__device__', '__global__', '__host__',
290
+ '__noinline__', '__forceinline__'}
291
+ variable_qualifiers = {'__device__', '__constant__', '__shared__',
292
+ '__restrict__'}
293
+ vector_types = {'char1', 'uchar1', 'char2', 'uchar2', 'char3', 'uchar3',
294
+ 'char4', 'uchar4', 'short1', 'ushort1', 'short2', 'ushort2',
295
+ 'short3', 'ushort3', 'short4', 'ushort4', 'int1', 'uint1',
296
+ 'int2', 'uint2', 'int3', 'uint3', 'int4', 'uint4', 'long1',
297
+ 'ulong1', 'long2', 'ulong2', 'long3', 'ulong3', 'long4',
298
+ 'ulong4', 'longlong1', 'ulonglong1', 'longlong2',
299
+ 'ulonglong2', 'float1', 'float2', 'float3', 'float4',
300
+ 'double1', 'double2', 'dim3'}
301
+ variables = {'gridDim', 'blockIdx', 'blockDim', 'threadIdx', 'warpSize'}
302
+ functions = {'__threadfence_block', '__threadfence', '__threadfence_system',
303
+ '__syncthreads', '__syncthreads_count', '__syncthreads_and',
304
+ '__syncthreads_or'}
305
+ execution_confs = {'<<<', '>>>'}
306
+
307
+ def get_tokens_unprocessed(self, text):
308
+ for index, token, value in CLexer.get_tokens_unprocessed(self, text):
309
+ if token is Name:
310
+ if value in self.variable_qualifiers:
311
+ token = Keyword.Type
312
+ elif value in self.vector_types:
313
+ token = Keyword.Type
314
+ elif value in self.variables:
315
+ token = Name.Builtin
316
+ elif value in self.execution_confs:
317
+ token = Keyword.Pseudo
318
+ elif value in self.function_qualifiers:
319
+ token = Keyword.Reserved
320
+ elif value in self.functions:
321
+ token = Name.Function
322
+ yield index, token, value
323
+
324
+
325
+ class SwigLexer(CppLexer):
326
+ """
327
+ For `SWIG <http://www.swig.org/>`_ source code.
328
+
329
+ .. versionadded:: 2.0
330
+ """
331
+ name = 'SWIG'
332
+ aliases = ['swig']
333
+ filenames = ['*.swg', '*.i']
334
+ mimetypes = ['text/swig']
335
+ priority = 0.04 # Lower than C/C++ and Objective C/C++
336
+
337
+ tokens = {
338
+ 'statements': [
339
+ # SWIG directives
340
+ (r'(%[a-z_][a-z0-9_]*)', Name.Function),
341
+ # Special variables
342
+ (r'\$\**\&?\w+', Name),
343
+ # Stringification / additional preprocessor directives
344
+ (r'##*[a-zA-Z_]\w*', Comment.Preproc),
345
+ inherit,
346
+ ],
347
+ }
348
+
349
+ # This is a far from complete set of SWIG directives
350
+ swig_directives = {
351
+ # Most common directives
352
+ '%apply', '%define', '%director', '%enddef', '%exception', '%extend',
353
+ '%feature', '%fragment', '%ignore', '%immutable', '%import', '%include',
354
+ '%inline', '%insert', '%module', '%newobject', '%nspace', '%pragma',
355
+ '%rename', '%shared_ptr', '%template', '%typecheck', '%typemap',
356
+ # Less common directives
357
+ '%arg', '%attribute', '%bang', '%begin', '%callback', '%catches', '%clear',
358
+ '%constant', '%copyctor', '%csconst', '%csconstvalue', '%csenum',
359
+ '%csmethodmodifiers', '%csnothrowexception', '%default', '%defaultctor',
360
+ '%defaultdtor', '%defined', '%delete', '%delobject', '%descriptor',
361
+ '%exceptionclass', '%exceptionvar', '%extend_smart_pointer', '%fragments',
362
+ '%header', '%ifcplusplus', '%ignorewarn', '%implicit', '%implicitconv',
363
+ '%init', '%javaconst', '%javaconstvalue', '%javaenum', '%javaexception',
364
+ '%javamethodmodifiers', '%kwargs', '%luacode', '%mutable', '%naturalvar',
365
+ '%nestedworkaround', '%perlcode', '%pythonabc', '%pythonappend',
366
+ '%pythoncallback', '%pythoncode', '%pythondynamic', '%pythonmaybecall',
367
+ '%pythonnondynamic', '%pythonprepend', '%refobject', '%shadow', '%sizeof',
368
+ '%trackobjects', '%types', '%unrefobject', '%varargs', '%warn',
369
+ '%warnfilter'}
370
+
371
+ def analyse_text(text):
372
+ rv = 0
373
+ # Search for SWIG directives, which are conventionally at the beginning of
374
+ # a line. The probability of them being within a line is low, so let another
375
+ # lexer win in this case.
376
+ matches = re.findall(r'^\s*(%[a-z_][a-z0-9_]*)', text, re.M)
377
+ for m in matches:
378
+ if m in SwigLexer.swig_directives:
379
+ rv = 0.98
380
+ break
381
+ else:
382
+ rv = 0.91 # Fraction higher than MatlabLexer
383
+ return rv
384
+
385
+
386
+ class MqlLexer(CppLexer):
387
+ """
388
+ For `MQL4 <http://docs.mql4.com/>`_ and
389
+ `MQL5 <http://www.mql5.com/en/docs>`_ source code.
390
+
391
+ .. versionadded:: 2.0
392
+ """
393
+ name = 'MQL'
394
+ aliases = ['mql', 'mq4', 'mq5', 'mql4', 'mql5']
395
+ filenames = ['*.mq4', '*.mq5', '*.mqh']
396
+ mimetypes = ['text/x-mql']
397
+
398
+ tokens = {
399
+ 'statements': [
400
+ (words(_mql_builtins.keywords, suffix=r'\b'), Keyword),
401
+ (words(_mql_builtins.c_types, suffix=r'\b'), Keyword.Type),
402
+ (words(_mql_builtins.types, suffix=r'\b'), Name.Function),
403
+ (words(_mql_builtins.constants, suffix=r'\b'), Name.Constant),
404
+ (words(_mql_builtins.colors, prefix='(clr)?', suffix=r'\b'),
405
+ Name.Constant),
406
+ inherit,
407
+ ],
408
+ }
409
+
410
+
411
+ class ArduinoLexer(CppLexer):
412
+ """
413
+ For `Arduino(tm) <https://arduino.cc/>`_ source.
414
+
415
+ This is an extension of the CppLexer, as the Arduino® Language is a superset
416
+ of C++
417
+
418
+ .. versionadded:: 2.1
419
+ """
420
+
421
+ name = 'Arduino'
422
+ aliases = ['arduino']
423
+ filenames = ['*.ino']
424
+ mimetypes = ['text/x-arduino']
425
+
426
+ # Language sketch main structure functions
427
+ structure = {'setup', 'loop'}
428
+
429
+ # Language operators
430
+ operators = {'not', 'or', 'and', 'xor'}
431
+
432
+ # Language 'variables'
433
+ variables = {
434
+ 'DIGITAL_MESSAGE', 'FIRMATA_STRING', 'ANALOG_MESSAGE', 'REPORT_DIGITAL',
435
+ 'REPORT_ANALOG', 'INPUT_PULLUP', 'SET_PIN_MODE', 'INTERNAL2V56', 'SYSTEM_RESET',
436
+ 'LED_BUILTIN', 'INTERNAL1V1', 'SYSEX_START', 'INTERNAL', 'EXTERNAL', 'HIGH',
437
+ 'LOW', 'INPUT', 'OUTPUT', 'INPUT_PULLUP', 'LED_BUILTIN', 'true', 'false',
438
+ 'void', 'boolean', 'char', 'unsigned char', 'byte', 'int', 'unsigned int',
439
+ 'word', 'long', 'unsigned long', 'short', 'float', 'double', 'string', 'String',
440
+ 'array', 'static', 'volatile', 'const', 'boolean', 'byte', 'word', 'string',
441
+ 'String', 'array', 'int', 'float', 'private', 'char', 'virtual', 'operator',
442
+ 'sizeof', 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', 'int8_t', 'int16_t',
443
+ 'int32_t', 'int64_t', 'dynamic_cast', 'typedef', 'const_cast', 'const',
444
+ 'struct', 'static_cast', 'union', 'unsigned', 'long', 'volatile', 'static',
445
+ 'protected', 'bool', 'public', 'friend', 'auto', 'void', 'enum', 'extern',
446
+ 'class', 'short', 'reinterpret_cast', 'double', 'register', 'explicit',
447
+ 'signed', 'inline', 'delete', '_Bool', 'complex', '_Complex', '_Imaginary',
448
+ 'atomic_bool', 'atomic_char', 'atomic_schar', 'atomic_uchar', 'atomic_short',
449
+ 'atomic_ushort', 'atomic_int', 'atomic_uint', 'atomic_long', 'atomic_ulong',
450
+ 'atomic_llong', 'atomic_ullong', 'PROGMEM'}
451
+
452
+ # Language shipped functions and class ( )
453
+ functions = {
454
+ 'KeyboardController', 'MouseController', 'SoftwareSerial', 'EthernetServer',
455
+ 'EthernetClient', 'LiquidCrystal', 'RobotControl', 'GSMVoiceCall',
456
+ 'EthernetUDP', 'EsploraTFT', 'HttpClient', 'RobotMotor', 'WiFiClient',
457
+ 'GSMScanner', 'FileSystem', 'Scheduler', 'GSMServer', 'YunClient', 'YunServer',
458
+ 'IPAddress', 'GSMClient', 'GSMModem', 'Keyboard', 'Ethernet', 'Console',
459
+ 'GSMBand', 'Esplora', 'Stepper', 'Process', 'WiFiUDP', 'GSM_SMS', 'Mailbox',
460
+ 'USBHost', 'Firmata', 'PImage', 'Client', 'Server', 'GSMPIN', 'FileIO',
461
+ 'Bridge', 'Serial', 'EEPROM', 'Stream', 'Mouse', 'Audio', 'Servo', 'File',
462
+ 'Task', 'GPRS', 'WiFi', 'Wire', 'TFT', 'GSM', 'SPI', 'SD',
463
+ 'runShellCommandAsynchronously', 'analogWriteResolution',
464
+ 'retrieveCallingNumber', 'printFirmwareVersion', 'analogReadResolution',
465
+ 'sendDigitalPortPair', 'noListenOnLocalhost', 'readJoystickButton',
466
+ 'setFirmwareVersion', 'readJoystickSwitch', 'scrollDisplayRight',
467
+ 'getVoiceCallStatus', 'scrollDisplayLeft', 'writeMicroseconds',
468
+ 'delayMicroseconds', 'beginTransmission', 'getSignalStrength',
469
+ 'runAsynchronously', 'getAsynchronously', 'listenOnLocalhost',
470
+ 'getCurrentCarrier', 'readAccelerometer', 'messageAvailable',
471
+ 'sendDigitalPorts', 'lineFollowConfig', 'countryNameWrite', 'runShellCommand',
472
+ 'readStringUntil', 'rewindDirectory', 'readTemperature', 'setClockDivider',
473
+ 'readLightSensor', 'endTransmission', 'analogReference', 'detachInterrupt',
474
+ 'countryNameRead', 'attachInterrupt', 'encryptionType', 'readBytesUntil',
475
+ 'robotNameWrite', 'readMicrophone', 'robotNameRead', 'cityNameWrite',
476
+ 'userNameWrite', 'readJoystickY', 'readJoystickX', 'mouseReleased',
477
+ 'openNextFile', 'scanNetworks', 'noInterrupts', 'digitalWrite', 'beginSpeaker',
478
+ 'mousePressed', 'isActionDone', 'mouseDragged', 'displayLogos', 'noAutoscroll',
479
+ 'addParameter', 'remoteNumber', 'getModifiers', 'keyboardRead', 'userNameRead',
480
+ 'waitContinue', 'processInput', 'parseCommand', 'printVersion', 'readNetworks',
481
+ 'writeMessage', 'blinkVersion', 'cityNameRead', 'readMessage', 'setDataMode',
482
+ 'parsePacket', 'isListening', 'setBitOrder', 'beginPacket', 'isDirectory',
483
+ 'motorsWrite', 'drawCompass', 'digitalRead', 'clearScreen', 'serialEvent',
484
+ 'rightToLeft', 'setTextSize', 'leftToRight', 'requestFrom', 'keyReleased',
485
+ 'compassRead', 'analogWrite', 'interrupts', 'WiFiServer', 'disconnect',
486
+ 'playMelody', 'parseFloat', 'autoscroll', 'getPINUsed', 'setPINUsed',
487
+ 'setTimeout', 'sendAnalog', 'readSlider', 'analogRead', 'beginWrite',
488
+ 'createChar', 'motorsStop', 'keyPressed', 'tempoWrite', 'readButton',
489
+ 'subnetMask', 'debugPrint', 'macAddress', 'writeGreen', 'randomSeed',
490
+ 'attachGPRS', 'readString', 'sendString', 'remotePort', 'releaseAll',
491
+ 'mouseMoved', 'background', 'getXChange', 'getYChange', 'answerCall',
492
+ 'getResult', 'voiceCall', 'endPacket', 'constrain', 'getSocket', 'writeJSON',
493
+ 'getButton', 'available', 'connected', 'findUntil', 'readBytes', 'exitValue',
494
+ 'readGreen', 'writeBlue', 'startLoop', 'IPAddress', 'isPressed', 'sendSysex',
495
+ 'pauseMode', 'gatewayIP', 'setCursor', 'getOemKey', 'tuneWrite', 'noDisplay',
496
+ 'loadImage', 'switchPIN', 'onRequest', 'onReceive', 'changePIN', 'playFile',
497
+ 'noBuffer', 'parseInt', 'overflow', 'checkPIN', 'knobRead', 'beginTFT',
498
+ 'bitClear', 'updateIR', 'bitWrite', 'position', 'writeRGB', 'highByte',
499
+ 'writeRed', 'setSpeed', 'readBlue', 'noStroke', 'remoteIP', 'transfer',
500
+ 'shutdown', 'hangCall', 'beginSMS', 'endWrite', 'attached', 'maintain',
501
+ 'noCursor', 'checkReg', 'checkPUK', 'shiftOut', 'isValid', 'shiftIn', 'pulseIn',
502
+ 'connect', 'println', 'localIP', 'pinMode', 'getIMEI', 'display', 'noBlink',
503
+ 'process', 'getBand', 'running', 'beginSD', 'drawBMP', 'lowByte', 'setBand',
504
+ 'release', 'bitRead', 'prepare', 'pointTo', 'readRed', 'setMode', 'noFill',
505
+ 'remove', 'listen', 'stroke', 'detach', 'attach', 'noTone', 'exists', 'buffer',
506
+ 'height', 'bitSet', 'circle', 'config', 'cursor', 'random', 'IRread', 'setDNS',
507
+ 'endSMS', 'getKey', 'micros', 'millis', 'begin', 'print', 'write', 'ready',
508
+ 'flush', 'width', 'isPIN', 'blink', 'clear', 'press', 'mkdir', 'rmdir', 'close',
509
+ 'point', 'yield', 'image', 'BSSID', 'click', 'delay', 'read', 'text', 'move',
510
+ 'peek', 'beep', 'rect', 'line', 'open', 'seek', 'fill', 'size', 'turn', 'stop',
511
+ 'home', 'find', 'step', 'tone', 'sqrt', 'RSSI', 'SSID', 'end', 'bit', 'tan',
512
+ 'cos', 'sin', 'pow', 'map', 'abs', 'max', 'min', 'get', 'run', 'put',
513
+ 'isAlphaNumeric', 'isAlpha', 'isAscii', 'isWhitespace', 'isControl', 'isDigit',
514
+ 'isGraph', 'isLowerCase', 'isPrintable', 'isPunct', 'isSpace', 'isUpperCase',
515
+ 'isHexadecimalDigit'}
516
+
517
+ # do not highlight
518
+ suppress_highlight = {
519
+ 'namespace', 'template', 'mutable', 'using', 'asm', 'typeid',
520
+ 'typename', 'this', 'alignof', 'constexpr', 'decltype', 'noexcept',
521
+ 'static_assert', 'thread_local', 'restrict'}
522
+
523
+ def get_tokens_unprocessed(self, text):
524
+ for index, token, value in CppLexer.get_tokens_unprocessed(self, text):
525
+ if value in self.structure:
526
+ yield index, Name.Builtin, value
527
+ elif value in self.operators:
528
+ yield index, Operator, value
529
+ elif value in self.variables:
530
+ yield index, Keyword.Reserved, value
531
+ elif value in self.suppress_highlight:
532
+ yield index, Name, value
533
+ elif value in self.functions:
534
+ yield index, Name.Function, value
535
+ else:
536
+ yield index, token, value
537
+
538
+
539
+ class CharmciLexer(CppLexer):
540
+ """
541
+ For `Charm++ <https://charm.cs.illinois.edu>`_ interface files (.ci).
542
+
543
+ .. versionadded:: 2.4
544
+ """
545
+
546
+ name = 'Charmci'
547
+ aliases = ['charmci']
548
+ filenames = ['*.ci']
549
+
550
+ mimetypes = []
551
+
552
+ tokens = {
553
+ 'statements': [
554
+ (r'(module)(\s+)', bygroups(Keyword, Text), 'classname'),
555
+ (words(('mainmodule', 'mainchare', 'chare', 'array', 'group',
556
+ 'nodegroup', 'message', 'conditional')), Keyword),
557
+ (words(('entry', 'aggregate', 'threaded', 'sync', 'exclusive',
558
+ 'nokeep', 'notrace', 'immediate', 'expedited', 'inline',
559
+ 'local', 'python', 'accel', 'readwrite', 'writeonly',
560
+ 'accelblock', 'memcritical', 'packed', 'varsize',
561
+ 'initproc', 'initnode', 'initcall', 'stacksize',
562
+ 'createhere', 'createhome', 'reductiontarget', 'iget',
563
+ 'nocopy', 'mutable', 'migratable', 'readonly')), Keyword),
564
+ inherit,
565
+ ],
566
+ }