pygments.rb 1.1.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.github/dependabot.yml +13 -0
- data/.github/workflows/ci.yml +28 -0
- data/.github/workflows/release.yml +24 -0
- data/.gitignore +5 -5
- data/CHANGELOG.adoc +128 -0
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.adoc +160 -0
- data/Rakefile +13 -19
- data/bench.rb +8 -7
- data/cache-lexers.rb +3 -2
- data/lexers +0 -0
- data/lib/pygments.rb +10 -11
- data/lib/pygments/lexer.rb +5 -5
- data/lib/pygments/mentos.py +23 -110
- data/lib/pygments/popen.rb +148 -229
- data/lib/pygments/version.rb +2 -2
- data/pygments.rb.gemspec +12 -11
- data/test/test_pygments.rb +46 -104
- data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +23 -3
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
- data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
- data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
- data/vendor/pygments-main/bin/pygmentize +8 -0
- data/vendor/pygments-main/pygments/__init__.py +6 -11
- data/vendor/pygments-main/pygments/__main__.py +18 -0
- data/vendor/pygments-main/pygments/cmdline.py +94 -41
- data/vendor/pygments-main/pygments/console.py +6 -9
- data/vendor/pygments-main/pygments/filter.py +4 -6
- data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
- data/vendor/pygments-main/pygments/formatter.py +4 -4
- data/vendor/pygments-main/pygments/formatters/__init__.py +42 -6
- data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/html.py +223 -135
- data/vendor/pygments-main/pygments/formatters/img.py +102 -38
- data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
- data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
- data/vendor/pygments-main/pygments/formatters/other.py +12 -8
- data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
- data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
- data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
- data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
- data/vendor/pygments-main/pygments/lexer.py +41 -39
- data/vendor/pygments-main/pygments/lexers/__init__.py +62 -15
- data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -5
- data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -15
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +11 -12
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1338
- data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +8 -1
- data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -4
- data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -33
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -2
- data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -20
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -16
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -2
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -3
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -125
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +6 -4
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
- data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
- data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/actionscript.py +8 -3
- data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
- data/vendor/pygments-main/pygments/lexers/algebra.py +20 -1
- data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
- data/vendor/pygments-main/pygments/lexers/ampl.py +3 -3
- data/vendor/pygments-main/pygments/lexers/apl.py +15 -15
- data/vendor/pygments-main/pygments/lexers/archetype.py +3 -3
- data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +445 -70
- data/vendor/pygments-main/pygments/lexers/automation.py +3 -3
- data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
- data/vendor/pygments-main/pygments/lexers/basic.py +166 -4
- data/vendor/pygments-main/pygments/lexers/bibtex.py +13 -9
- data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
- data/vendor/pygments-main/pygments/lexers/business.py +69 -36
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +137 -45
- data/vendor/pygments-main/pygments/lexers/c_like.py +68 -43
- data/vendor/pygments-main/pygments/lexers/capnproto.py +20 -21
- data/vendor/pygments-main/pygments/lexers/chapel.py +25 -14
- data/vendor/pygments-main/pygments/lexers/clean.py +135 -244
- data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
- data/vendor/pygments-main/pygments/lexers/configs.py +188 -37
- data/vendor/pygments-main/pygments/lexers/console.py +1 -1
- data/vendor/pygments-main/pygments/lexers/crystal.py +31 -23
- data/vendor/pygments-main/pygments/lexers/csound.py +288 -187
- data/vendor/pygments-main/pygments/lexers/css.py +18 -16
- data/vendor/pygments-main/pygments/lexers/d.py +10 -5
- data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
- data/vendor/pygments-main/pygments/lexers/data.py +240 -97
- data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
- data/vendor/pygments-main/pygments/lexers/diff.py +4 -4
- data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -24
- data/vendor/pygments-main/pygments/lexers/dsls.py +147 -65
- data/vendor/pygments-main/pygments/lexers/dylan.py +16 -18
- data/vendor/pygments-main/pygments/lexers/ecl.py +16 -2
- data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
- data/vendor/pygments-main/pygments/lexers/elm.py +5 -5
- data/vendor/pygments-main/pygments/lexers/email.py +151 -0
- data/vendor/pygments-main/pygments/lexers/erlang.py +29 -32
- data/vendor/pygments-main/pygments/lexers/esoteric.py +54 -25
- data/vendor/pygments-main/pygments/lexers/ezhil.py +24 -15
- data/vendor/pygments-main/pygments/lexers/factor.py +1 -1
- data/vendor/pygments-main/pygments/lexers/fantom.py +1 -1
- data/vendor/pygments-main/pygments/lexers/felix.py +1 -1
- data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
- data/vendor/pygments-main/pygments/lexers/forth.py +41 -40
- data/vendor/pygments-main/pygments/lexers/fortran.py +5 -4
- data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
- data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
- data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
- data/vendor/pygments-main/pygments/lexers/go.py +1 -1
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +63 -6
- data/vendor/pygments-main/pygments/lexers/graph.py +14 -9
- data/vendor/pygments-main/pygments/lexers/graphics.py +272 -25
- data/vendor/pygments-main/pygments/lexers/haskell.py +52 -22
- data/vendor/pygments-main/pygments/lexers/haxe.py +6 -6
- data/vendor/pygments-main/pygments/lexers/hdl.py +176 -86
- data/vendor/pygments-main/pygments/lexers/hexdump.py +18 -12
- data/vendor/pygments-main/pygments/lexers/html.py +31 -19
- data/vendor/pygments-main/pygments/lexers/idl.py +20 -9
- data/vendor/pygments-main/pygments/lexers/igor.py +244 -112
- data/vendor/pygments-main/pygments/lexers/inferno.py +2 -2
- data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -15
- data/vendor/pygments-main/pygments/lexers/iolang.py +2 -2
- data/vendor/pygments-main/pygments/lexers/j.py +3 -3
- data/vendor/pygments-main/pygments/lexers/javascript.py +100 -66
- data/vendor/pygments-main/pygments/lexers/julia.py +46 -48
- data/vendor/pygments-main/pygments/lexers/jvm.py +265 -165
- data/vendor/pygments-main/pygments/lexers/lisp.py +882 -804
- data/vendor/pygments-main/pygments/lexers/make.py +10 -6
- data/vendor/pygments-main/pygments/lexers/markup.py +213 -43
- data/vendor/pygments-main/pygments/lexers/math.py +1 -1
- data/vendor/pygments-main/pygments/lexers/matlab.py +98 -41
- data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
- data/vendor/pygments-main/pygments/lexers/ml.py +198 -9
- data/vendor/pygments-main/pygments/lexers/modeling.py +26 -18
- data/vendor/pygments-main/pygments/lexers/modula2.py +25 -6
- data/vendor/pygments-main/pygments/lexers/monte.py +4 -3
- data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
- data/vendor/pygments-main/pygments/lexers/ncl.py +85 -244
- data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -4
- data/vendor/pygments-main/pygments/lexers/nit.py +1 -1
- data/vendor/pygments-main/pygments/lexers/nix.py +1 -1
- data/vendor/pygments-main/pygments/lexers/oberon.py +17 -1
- data/vendor/pygments-main/pygments/lexers/objective.py +16 -16
- data/vendor/pygments-main/pygments/lexers/ooc.py +1 -1
- data/vendor/pygments-main/pygments/lexers/other.py +1 -1
- data/vendor/pygments-main/pygments/lexers/parasail.py +1 -1
- data/vendor/pygments-main/pygments/lexers/parsers.py +23 -58
- data/vendor/pygments-main/pygments/lexers/pascal.py +23 -23
- data/vendor/pygments-main/pygments/lexers/pawn.py +30 -24
- data/vendor/pygments-main/pygments/lexers/perl.py +276 -160
- data/vendor/pygments-main/pygments/lexers/php.py +64 -10
- data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
- data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
- data/vendor/pygments-main/pygments/lexers/praat.py +38 -30
- data/vendor/pygments-main/pygments/lexers/prolog.py +36 -36
- data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
- data/vendor/pygments-main/pygments/lexers/python.py +439 -226
- data/vendor/pygments-main/pygments/lexers/qvt.py +6 -6
- data/vendor/pygments-main/pygments/lexers/r.py +13 -275
- data/vendor/pygments-main/pygments/lexers/rdf.py +232 -39
- data/vendor/pygments-main/pygments/lexers/rebol.py +8 -8
- data/vendor/pygments-main/pygments/lexers/resource.py +2 -2
- data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
- data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
- data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -1
- data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -31
- data/vendor/pygments-main/pygments/lexers/ruby.py +22 -24
- data/vendor/pygments-main/pygments/lexers/rust.py +86 -71
- data/vendor/pygments-main/pygments/lexers/sas.py +7 -7
- data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
- data/vendor/pygments-main/pygments/lexers/scripting.py +75 -13
- data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +175 -51
- data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
- data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -2
- data/vendor/pygments-main/pygments/lexers/smv.py +30 -26
- data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
- data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
- data/vendor/pygments-main/pygments/lexers/special.py +5 -3
- data/vendor/pygments-main/pygments/lexers/sql.py +333 -177
- data/vendor/pygments-main/pygments/lexers/stata.py +107 -42
- data/vendor/pygments-main/pygments/lexers/supercollider.py +6 -1
- data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
- data/vendor/pygments-main/pygments/lexers/templates.py +144 -132
- data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
- data/vendor/pygments-main/pygments/lexers/testing.py +6 -6
- data/vendor/pygments-main/pygments/lexers/text.py +2 -1
- data/vendor/pygments-main/pygments/lexers/textedit.py +4 -4
- data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -13
- data/vendor/pygments-main/pygments/lexers/theorem.py +69 -53
- data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
- data/vendor/pygments-main/pygments/lexers/typoscript.py +8 -14
- data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
- data/vendor/pygments-main/pygments/lexers/urbi.py +14 -1
- data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
- data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
- data/vendor/pygments-main/pygments/lexers/verification.py +15 -12
- data/vendor/pygments-main/pygments/lexers/web.py +1 -1
- data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
- data/vendor/pygments-main/pygments/lexers/webmisc.py +50 -38
- data/vendor/pygments-main/pygments/lexers/whiley.py +11 -12
- data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
- data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
- data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
- data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
- data/vendor/pygments-main/pygments/modeline.py +6 -5
- data/vendor/pygments-main/pygments/plugin.py +14 -18
- data/vendor/pygments-main/pygments/regexopt.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +2 -2
- data/vendor/pygments-main/pygments/sphinxext.py +2 -4
- data/vendor/pygments-main/pygments/style.py +61 -24
- data/vendor/pygments-main/pygments/styles/__init__.py +13 -5
- data/vendor/pygments-main/pygments/styles/abap.py +29 -0
- data/vendor/pygments-main/pygments/styles/algol.py +1 -1
- data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
- data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
- data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
- data/vendor/pygments-main/pygments/styles/borland.py +1 -1
- data/vendor/pygments-main/pygments/styles/bw.py +1 -1
- data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
- data/vendor/pygments-main/pygments/styles/default.py +1 -1
- data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
- data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
- data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
- data/vendor/pygments-main/pygments/styles/igor.py +1 -1
- data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
- data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
- data/vendor/pygments-main/pygments/styles/manni.py +1 -1
- data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
- data/vendor/pygments-main/pygments/styles/native.py +1 -1
- data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
- data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
- data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
- data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
- data/vendor/pygments-main/pygments/styles/rainbow_dash.py +89 -0
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
- data/vendor/pygments-main/pygments/styles/sas.py +3 -0
- data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
- data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
- data/vendor/pygments-main/pygments/styles/stata_light.py +39 -0
- data/vendor/pygments-main/pygments/styles/tango.py +1 -1
- data/vendor/pygments-main/pygments/styles/trac.py +1 -1
- data/vendor/pygments-main/pygments/styles/vim.py +1 -1
- data/vendor/pygments-main/pygments/styles/vs.py +1 -1
- data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
- data/vendor/pygments-main/pygments/token.py +1 -1
- data/vendor/pygments-main/pygments/unistring.py +47 -108
- data/vendor/pygments-main/pygments/util.py +19 -95
- metadata +71 -137
- data/CHANGELOG.md +0 -98
- data/README.md +0 -121
- data/circle.yml +0 -20
- data/test/test_data.c +0 -2581
- data/test/test_data.py +0 -514
- data/test/test_data_generated +0 -2582
- data/vendor/custom_lexers/github.py +0 -565
- data/vendor/pygments-main/CHANGES +0 -1163
- data/vendor/pygments-main/MANIFEST.in +0 -6
- data/vendor/pygments-main/Makefile +0 -65
- data/vendor/pygments-main/README.rst +0 -39
- data/vendor/pygments-main/REVISION +0 -1
- data/vendor/pygments-main/TODO +0 -12
- data/vendor/pygments-main/doc/Makefile +0 -153
- data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
- data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
- data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
- data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
- data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
- data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
- data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
- data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
- data/vendor/pygments-main/doc/conf.py +0 -241
- data/vendor/pygments-main/doc/docs/api.rst +0 -331
- data/vendor/pygments-main/doc/docs/authors.rst +0 -4
- data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
- data/vendor/pygments-main/doc/docs/cmdline.rst +0 -149
- data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
- data/vendor/pygments-main/doc/docs/filters.rst +0 -41
- data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
- data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
- data/vendor/pygments-main/doc/docs/index.rst +0 -66
- data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
- data/vendor/pygments-main/doc/docs/java.rst +0 -70
- data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -689
- data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
- data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
- data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
- data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
- data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
- data/vendor/pygments-main/doc/docs/styles.rst +0 -201
- data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
- data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
- data/vendor/pygments-main/doc/download.rst +0 -41
- data/vendor/pygments-main/doc/faq.rst +0 -139
- data/vendor/pygments-main/doc/index.rst +0 -54
- data/vendor/pygments-main/doc/languages.rst +0 -154
- data/vendor/pygments-main/doc/make.bat +0 -190
- data/vendor/pygments-main/doc/pygmentize.1 +0 -94
- data/vendor/pygments-main/external/autopygmentize +0 -84
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
- data/vendor/pygments-main/external/markdown-processor.py +0 -67
- data/vendor/pygments-main/external/moin-parser.py +0 -112
- data/vendor/pygments-main/external/pygments.bashcomp +0 -38
- data/vendor/pygments-main/external/rst-directive.py +0 -82
- data/vendor/pygments-main/pygmentize +0 -8
- data/vendor/pygments-main/pygments/lexers/github.py +0 -565
- data/vendor/pygments-main/pygments/styles/stata.py +0 -37
- data/vendor/pygments-main/requirements.txt +0 -5
- data/vendor/pygments-main/scripts/check_sources.py +0 -211
- data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
- data/vendor/pygments-main/scripts/epydoc.css +0 -280
- data/vendor/pygments-main/scripts/find_error.py +0 -1
- data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
- data/vendor/pygments-main/scripts/pylintrc +0 -301
- data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
- data/vendor/pygments-main/setup.cfg +0 -10
- data/vendor/pygments-main/setup.py +0 -77
- data/vendor/pygments-main/tox.ini +0 -7
- data/vendor/simplejson/.gitignore +0 -10
- data/vendor/simplejson/.travis.yml +0 -5
- data/vendor/simplejson/CHANGES.txt +0 -291
- data/vendor/simplejson/LICENSE.txt +0 -19
- data/vendor/simplejson/MANIFEST.in +0 -5
- data/vendor/simplejson/README.rst +0 -19
- data/vendor/simplejson/conf.py +0 -179
- data/vendor/simplejson/index.rst +0 -628
- data/vendor/simplejson/scripts/make_docs.py +0 -18
- data/vendor/simplejson/setup.py +0 -104
- data/vendor/simplejson/simplejson/__init__.py +0 -510
- data/vendor/simplejson/simplejson/_speedups.c +0 -2745
- data/vendor/simplejson/simplejson/decoder.py +0 -425
- data/vendor/simplejson/simplejson/encoder.py +0 -567
- data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
- data/vendor/simplejson/simplejson/scanner.py +0 -77
- data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
- data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
- data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
- data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
- data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
- data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
- data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
- data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
- data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
- data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
- data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
- data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
- data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
- data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
- data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
- data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
- data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
- data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
- data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
- data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
- data/vendor/simplejson/simplejson/tool.py +0 -39
|
@@ -5,15 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
Special lexers.
|
|
7
7
|
|
|
8
|
-
:copyright: Copyright 2006-
|
|
8
|
+
:copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
|
|
9
9
|
:license: BSD, see LICENSE for details.
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
12
|
import re
|
|
13
|
+
from io import BytesIO
|
|
13
14
|
|
|
14
15
|
from pygments.lexer import Lexer
|
|
15
16
|
from pygments.token import Token, Error, Text
|
|
16
|
-
from pygments.util import get_choice_opt
|
|
17
|
+
from pygments.util import get_choice_opt
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
__all__ = ['TextLexer', 'RawTokenLexer']
|
|
@@ -35,6 +36,7 @@ class TextLexer(Lexer):
|
|
|
35
36
|
def analyse_text(text):
|
|
36
37
|
return TextLexer.priority
|
|
37
38
|
|
|
39
|
+
|
|
38
40
|
_ttype_cache = {}
|
|
39
41
|
|
|
40
42
|
line_re = re.compile(b'.*?\n')
|
|
@@ -63,7 +65,7 @@ class RawTokenLexer(Lexer):
|
|
|
63
65
|
Lexer.__init__(self, **options)
|
|
64
66
|
|
|
65
67
|
def get_tokens(self, text):
|
|
66
|
-
if isinstance(text,
|
|
68
|
+
if isinstance(text, str):
|
|
67
69
|
# raw token stream never has any non-ASCII characters
|
|
68
70
|
text = text.encode('ascii')
|
|
69
71
|
if self.compress == 'gz':
|
|
@@ -34,20 +34,26 @@
|
|
|
34
34
|
The ``tests/examplefiles`` contains a few test files with data to be
|
|
35
35
|
parsed by these lexers.
|
|
36
36
|
|
|
37
|
-
:copyright: Copyright 2006-
|
|
37
|
+
:copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
|
|
38
38
|
:license: BSD, see LICENSE for details.
|
|
39
39
|
"""
|
|
40
40
|
|
|
41
41
|
import re
|
|
42
42
|
|
|
43
43
|
from pygments.lexer import Lexer, RegexLexer, do_insertions, bygroups, words
|
|
44
|
-
from pygments.token import Punctuation, Whitespace,
|
|
45
|
-
|
|
44
|
+
from pygments.token import Punctuation, Whitespace, Text, Comment, Operator, \
|
|
45
|
+
Keyword, Name, String, Number, Generic, Literal
|
|
46
46
|
from pygments.lexers import get_lexer_by_name, ClassNotFound
|
|
47
|
-
from pygments.util import iteritems
|
|
48
47
|
|
|
49
48
|
from pygments.lexers._postgres_builtins import KEYWORDS, DATATYPES, \
|
|
50
49
|
PSEUDO_TYPES, PLPGSQL_KEYWORDS
|
|
50
|
+
from pygments.lexers._mysql_builtins import \
|
|
51
|
+
MYSQL_CONSTANTS, \
|
|
52
|
+
MYSQL_DATATYPES, \
|
|
53
|
+
MYSQL_FUNCTIONS, \
|
|
54
|
+
MYSQL_KEYWORDS, \
|
|
55
|
+
MYSQL_OPTIMIZER_HINTS
|
|
56
|
+
|
|
51
57
|
from pygments.lexers import _tsql_builtins
|
|
52
58
|
|
|
53
59
|
|
|
@@ -59,7 +65,14 @@ line_re = re.compile('.*?\n')
|
|
|
59
65
|
|
|
60
66
|
language_re = re.compile(r"\s+LANGUAGE\s+'?(\w+)'?", re.IGNORECASE)
|
|
61
67
|
|
|
62
|
-
do_re = re.compile(r'\bDO\b', re.IGNORECASE)
|
|
68
|
+
do_re = re.compile(r'\bDO\b', re.IGNORECASE)
|
|
69
|
+
|
|
70
|
+
# Regular expressions for analyse_text()
|
|
71
|
+
name_between_bracket_re = re.compile(r'\[[a-zA-Z_]\w*\]')
|
|
72
|
+
name_between_backtick_re = re.compile(r'`[a-zA-Z_]\w*`')
|
|
73
|
+
tsql_go_re = re.compile(r'\bgo\b', re.IGNORECASE)
|
|
74
|
+
tsql_declare_re = re.compile(r'\bdeclare\s+@', re.IGNORECASE)
|
|
75
|
+
tsql_variable_re = re.compile(r'@[a-zA-Z_]\w*\b')
|
|
63
76
|
|
|
64
77
|
|
|
65
78
|
def language_callback(lexer, match):
|
|
@@ -68,28 +81,28 @@ def language_callback(lexer, match):
|
|
|
68
81
|
The lexer is chosen looking for a nearby LANGUAGE or assumed as
|
|
69
82
|
plpgsql if inside a DO statement and no LANGUAGE has been found.
|
|
70
83
|
"""
|
|
71
|
-
|
|
84
|
+
lx = None
|
|
72
85
|
m = language_re.match(lexer.text[match.end():match.end()+100])
|
|
73
86
|
if m is not None:
|
|
74
|
-
|
|
87
|
+
lx = lexer._get_lexer(m.group(1))
|
|
75
88
|
else:
|
|
76
89
|
m = list(language_re.finditer(
|
|
77
90
|
lexer.text[max(0, match.start()-100):match.start()]))
|
|
78
91
|
if m:
|
|
79
|
-
|
|
92
|
+
lx = lexer._get_lexer(m[-1].group(1))
|
|
80
93
|
else:
|
|
81
94
|
m = list(do_re.finditer(
|
|
82
95
|
lexer.text[max(0, match.start()-25):match.start()]))
|
|
83
96
|
if m:
|
|
84
|
-
|
|
85
|
-
|
|
97
|
+
lx = lexer._get_lexer('plpgsql')
|
|
98
|
+
|
|
86
99
|
# 1 = $, 2 = delimiter, 3 = $
|
|
87
100
|
yield (match.start(1), String, match.group(1))
|
|
88
101
|
yield (match.start(2), String.Delimiter, match.group(2))
|
|
89
102
|
yield (match.start(3), String, match.group(3))
|
|
90
103
|
# 4 = string contents
|
|
91
|
-
if
|
|
92
|
-
for x in
|
|
104
|
+
if lx:
|
|
105
|
+
for x in lx.get_tokens_unprocessed(match.group(4)):
|
|
93
106
|
yield x
|
|
94
107
|
else:
|
|
95
108
|
yield (match.start(4), String, match.group(4))
|
|
@@ -99,7 +112,7 @@ def language_callback(lexer, match):
|
|
|
99
112
|
yield (match.start(7), String, match.group(7))
|
|
100
113
|
|
|
101
114
|
|
|
102
|
-
class PostgresBase
|
|
115
|
+
class PostgresBase:
|
|
103
116
|
"""Base class for Postgres-related lexers.
|
|
104
117
|
|
|
105
118
|
This is implemented as a mixin to avoid the Lexer metaclass kicking in.
|
|
@@ -111,9 +124,7 @@ class PostgresBase(object):
|
|
|
111
124
|
def get_tokens_unprocessed(self, text, *args):
|
|
112
125
|
# Have a copy of the entire text to be used by `language_callback`.
|
|
113
126
|
self.text = text
|
|
114
|
-
|
|
115
|
-
text, *args):
|
|
116
|
-
yield x
|
|
127
|
+
yield from super().get_tokens_unprocessed(text, *args)
|
|
117
128
|
|
|
118
129
|
def _get_lexer(self, lang):
|
|
119
130
|
if lang.lower() == 'sql':
|
|
@@ -127,9 +138,9 @@ class PostgresBase(object):
|
|
|
127
138
|
if lang.startswith('pl') and lang.endswith('u'):
|
|
128
139
|
tries.append(lang[2:-1])
|
|
129
140
|
|
|
130
|
-
for
|
|
141
|
+
for lx in tries:
|
|
131
142
|
try:
|
|
132
|
-
return get_lexer_by_name(
|
|
143
|
+
return get_lexer_by_name(lx, **self.options)
|
|
133
144
|
except ClassNotFound:
|
|
134
145
|
pass
|
|
135
146
|
else:
|
|
@@ -155,9 +166,9 @@ class PostgresLexer(PostgresBase, RegexLexer):
|
|
|
155
166
|
(r'\s+', Text),
|
|
156
167
|
(r'--.*\n?', Comment.Single),
|
|
157
168
|
(r'/\*', Comment.Multiline, 'multiline-comments'),
|
|
158
|
-
(r'(' + '|'.join(s.replace(" ", "\s+")
|
|
159
|
-
for s in DATATYPES + PSEUDO_TYPES)
|
|
160
|
-
|
|
169
|
+
(r'(' + '|'.join(s.replace(" ", r"\s+")
|
|
170
|
+
for s in DATATYPES + PSEUDO_TYPES) + r')\b',
|
|
171
|
+
Name.Builtin),
|
|
161
172
|
(words(KEYWORDS, suffix=r'\b'), Keyword),
|
|
162
173
|
(r'[+*/<>=~!@#%^&|`?-]+', Operator),
|
|
163
174
|
(r'::', Operator), # cast
|
|
@@ -205,7 +216,7 @@ class PlPgsqlLexer(PostgresBase, RegexLexer):
|
|
|
205
216
|
mimetypes = ['text/x-plpgsql']
|
|
206
217
|
|
|
207
218
|
flags = re.IGNORECASE
|
|
208
|
-
tokens =
|
|
219
|
+
tokens = {k: l[:] for (k, l) in PostgresLexer.tokens.items()}
|
|
209
220
|
|
|
210
221
|
# extend the keywords list
|
|
211
222
|
for i, pattern in enumerate(tokens['root']):
|
|
@@ -239,7 +250,7 @@ class PsqlRegexLexer(PostgresBase, RegexLexer):
|
|
|
239
250
|
aliases = [] # not public
|
|
240
251
|
|
|
241
252
|
flags = re.IGNORECASE
|
|
242
|
-
tokens =
|
|
253
|
+
tokens = {k: l[:] for (k, l) in PostgresLexer.tokens.items()}
|
|
243
254
|
|
|
244
255
|
tokens['root'].append(
|
|
245
256
|
(r'\\[^\s]+', Keyword.Pseudo, 'psql-command'))
|
|
@@ -253,6 +264,7 @@ class PsqlRegexLexer(PostgresBase, RegexLexer):
|
|
|
253
264
|
(r"[^\s]+", String.Symbol),
|
|
254
265
|
]
|
|
255
266
|
|
|
267
|
+
|
|
256
268
|
re_prompt = re.compile(r'^(\S.*?)??[=\-\(\$\'\"][#>]')
|
|
257
269
|
re_psql_command = re.compile(r'\s*\\')
|
|
258
270
|
re_end_command = re.compile(r';\s*(--.*?)?$')
|
|
@@ -263,7 +275,7 @@ re_message = re.compile(
|
|
|
263
275
|
r'FATAL|HINT|DETAIL|CONTEXT|LINE [0-9]+):)(.*?\n)')
|
|
264
276
|
|
|
265
277
|
|
|
266
|
-
class lookahead
|
|
278
|
+
class lookahead:
|
|
267
279
|
"""Wrap an iterator and allow pushing back an item."""
|
|
268
280
|
def __init__(self, x):
|
|
269
281
|
self.iter = iter(x)
|
|
@@ -308,19 +320,11 @@ class PostgresConsoleLexer(Lexer):
|
|
|
308
320
|
# and continue until the end of command is detected
|
|
309
321
|
curcode = ''
|
|
310
322
|
insertions = []
|
|
311
|
-
|
|
312
|
-
try:
|
|
313
|
-
line = next(lines)
|
|
314
|
-
except StopIteration:
|
|
315
|
-
# allow the emission of partially collected items
|
|
316
|
-
# the repl loop will be broken below
|
|
317
|
-
break
|
|
318
|
-
|
|
323
|
+
for line in lines:
|
|
319
324
|
# Identify a shell prompt in case of psql commandline example
|
|
320
325
|
if line.startswith('$') and not curcode:
|
|
321
326
|
lexer = get_lexer_by_name('console', **self.options)
|
|
322
|
-
|
|
323
|
-
yield x
|
|
327
|
+
yield from lexer.get_tokens_unprocessed(line)
|
|
324
328
|
break
|
|
325
329
|
|
|
326
330
|
# Identify a psql prompt
|
|
@@ -340,14 +344,12 @@ class PostgresConsoleLexer(Lexer):
|
|
|
340
344
|
break
|
|
341
345
|
|
|
342
346
|
# Emit the combined stream of command and prompt(s)
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
yield item
|
|
347
|
+
yield from do_insertions(insertions,
|
|
348
|
+
sql.get_tokens_unprocessed(curcode))
|
|
346
349
|
|
|
347
350
|
# Emit the output lines
|
|
348
351
|
out_token = Generic.Output
|
|
349
|
-
|
|
350
|
-
line = next(lines)
|
|
352
|
+
for line in lines:
|
|
351
353
|
mprompt = re_prompt.match(line)
|
|
352
354
|
if mprompt is not None:
|
|
353
355
|
# push the line back to have it processed by the prompt
|
|
@@ -363,6 +365,8 @@ class PostgresConsoleLexer(Lexer):
|
|
|
363
365
|
yield (mmsg.start(2), out_token, mmsg.group(2))
|
|
364
366
|
else:
|
|
365
367
|
yield (0, out_token, line)
|
|
368
|
+
else:
|
|
369
|
+
return
|
|
366
370
|
|
|
367
371
|
|
|
368
372
|
class SqlLexer(RegexLexer):
|
|
@@ -383,86 +387,99 @@ class SqlLexer(RegexLexer):
|
|
|
383
387
|
(r'--.*\n?', Comment.Single),
|
|
384
388
|
(r'/\*', Comment.Multiline, 'multiline-comments'),
|
|
385
389
|
(words((
|
|
386
|
-
'ABORT', 'ABS', 'ABSOLUTE', 'ACCESS', 'ADA', 'ADD', 'ADMIN', 'AFTER',
|
|
387
|
-
'ALIAS', 'ALL', 'ALLOCATE', 'ALTER', 'ANALYSE', 'ANALYZE',
|
|
388
|
-
'
|
|
389
|
-
'
|
|
390
|
-
'
|
|
391
|
-
'
|
|
390
|
+
'ABORT', 'ABS', 'ABSOLUTE', 'ACCESS', 'ADA', 'ADD', 'ADMIN', 'AFTER',
|
|
391
|
+
'AGGREGATE', 'ALIAS', 'ALL', 'ALLOCATE', 'ALTER', 'ANALYSE', 'ANALYZE',
|
|
392
|
+
'AND', 'ANY', 'ARE', 'AS', 'ASC', 'ASENSITIVE', 'ASSERTION', 'ASSIGNMENT',
|
|
393
|
+
'ASYMMETRIC', 'AT', 'ATOMIC', 'AUTHORIZATION', 'AVG', 'BACKWARD',
|
|
394
|
+
'BEFORE', 'BEGIN', 'BETWEEN', 'BITVAR', 'BIT_LENGTH', 'BOTH', 'BREADTH',
|
|
395
|
+
'BY', 'C', 'CACHE', 'CALL', 'CALLED', 'CARDINALITY', 'CASCADE',
|
|
396
|
+
'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CATALOG_NAME', 'CHAIN',
|
|
392
397
|
'CHARACTERISTICS', 'CHARACTER_LENGTH', 'CHARACTER_SET_CATALOG',
|
|
393
398
|
'CHARACTER_SET_NAME', 'CHARACTER_SET_SCHEMA', 'CHAR_LENGTH', 'CHECK',
|
|
394
|
-
'CHECKED', 'CHECKPOINT', 'CLASS', 'CLASS_ORIGIN', 'CLOB', 'CLOSE',
|
|
395
|
-
'COALSECE', 'COBOL', 'COLLATE', 'COLLATION',
|
|
396
|
-
'
|
|
397
|
-
'
|
|
398
|
-
'COMMITTED', 'COMPLETION', 'CONDITION_NUMBER', 'CONNECT',
|
|
399
|
-
'
|
|
400
|
-
'
|
|
401
|
-
'
|
|
402
|
-
'
|
|
403
|
-
'
|
|
404
|
-
'
|
|
399
|
+
'CHECKED', 'CHECKPOINT', 'CLASS', 'CLASS_ORIGIN', 'CLOB', 'CLOSE',
|
|
400
|
+
'CLUSTER', 'COALSECE', 'COBOL', 'COLLATE', 'COLLATION',
|
|
401
|
+
'COLLATION_CATALOG', 'COLLATION_NAME', 'COLLATION_SCHEMA', 'COLUMN',
|
|
402
|
+
'COLUMN_NAME', 'COMMAND_FUNCTION', 'COMMAND_FUNCTION_CODE', 'COMMENT',
|
|
403
|
+
'COMMIT', 'COMMITTED', 'COMPLETION', 'CONDITION_NUMBER', 'CONNECT',
|
|
404
|
+
'CONNECTION', 'CONNECTION_NAME', 'CONSTRAINT', 'CONSTRAINTS',
|
|
405
|
+
'CONSTRAINT_CATALOG', 'CONSTRAINT_NAME', 'CONSTRAINT_SCHEMA',
|
|
406
|
+
'CONSTRUCTOR', 'CONTAINS', 'CONTINUE', 'CONVERSION', 'CONVERT',
|
|
407
|
+
'COPY', 'CORRESPONTING', 'COUNT', 'CREATE', 'CREATEDB', 'CREATEUSER',
|
|
408
|
+
'CROSS', 'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH',
|
|
409
|
+
'CURRENT_ROLE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',
|
|
410
|
+
'CURSOR', 'CURSOR_NAME', 'CYCLE', 'DATA', 'DATABASE',
|
|
405
411
|
'DATETIME_INTERVAL_CODE', 'DATETIME_INTERVAL_PRECISION', 'DAY',
|
|
406
|
-
'DEALLOCATE', 'DECLARE', 'DEFAULT', 'DEFAULTS', 'DEFERRABLE',
|
|
407
|
-
'DEFINED', 'DEFINER', 'DELETE', 'DELIMITER', 'DELIMITERS',
|
|
408
|
-
'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR',
|
|
409
|
-
'DIAGNOSTICS', 'DICTIONARY', 'DISCONNECT', 'DISPATCH',
|
|
410
|
-
'
|
|
411
|
-
'
|
|
412
|
-
'
|
|
413
|
-
'
|
|
414
|
-
'
|
|
415
|
-
'
|
|
416
|
-
'
|
|
417
|
-
'
|
|
418
|
-
'
|
|
419
|
-
'
|
|
420
|
-
'
|
|
421
|
-
'
|
|
422
|
-
'
|
|
423
|
-
'
|
|
424
|
-
'
|
|
425
|
-
'
|
|
426
|
-
'
|
|
427
|
-
'
|
|
428
|
-
'
|
|
429
|
-
'
|
|
430
|
-
'
|
|
431
|
-
'
|
|
432
|
-
'
|
|
433
|
-
'
|
|
434
|
-
'
|
|
435
|
-
'
|
|
436
|
-
'
|
|
437
|
-
'
|
|
438
|
-
'
|
|
439
|
-
'
|
|
440
|
-
'
|
|
441
|
-
'
|
|
442
|
-
'
|
|
443
|
-
'
|
|
444
|
-
'
|
|
445
|
-
'
|
|
446
|
-
'
|
|
447
|
-
'
|
|
448
|
-
'
|
|
449
|
-
'
|
|
450
|
-
'
|
|
451
|
-
'
|
|
452
|
-
'
|
|
453
|
-
'
|
|
454
|
-
'
|
|
455
|
-
'
|
|
456
|
-
'
|
|
457
|
-
'
|
|
458
|
-
'
|
|
459
|
-
'
|
|
460
|
-
'
|
|
412
|
+
'DEALLOCATE', 'DECLARE', 'DEFAULT', 'DEFAULTS', 'DEFERRABLE',
|
|
413
|
+
'DEFERRED', 'DEFINED', 'DEFINER', 'DELETE', 'DELIMITER', 'DELIMITERS',
|
|
414
|
+
'DEREF', 'DESC', 'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR',
|
|
415
|
+
'DETERMINISTIC', 'DIAGNOSTICS', 'DICTIONARY', 'DISCONNECT', 'DISPATCH',
|
|
416
|
+
'DISTINCT', 'DO', 'DOMAIN', 'DROP', 'DYNAMIC', 'DYNAMIC_FUNCTION',
|
|
417
|
+
'DYNAMIC_FUNCTION_CODE', 'EACH', 'ELSE', 'ELSIF', 'ENCODING',
|
|
418
|
+
'ENCRYPTED', 'END', 'END-EXEC', 'EQUALS', 'ESCAPE', 'EVERY', 'EXCEPTION',
|
|
419
|
+
'EXCEPT', 'EXCLUDING', 'EXCLUSIVE', 'EXEC', 'EXECUTE', 'EXISTING',
|
|
420
|
+
'EXISTS', 'EXPLAIN', 'EXTERNAL', 'EXTRACT', 'FALSE', 'FETCH', 'FINAL',
|
|
421
|
+
'FIRST', 'FOR', 'FORCE', 'FOREIGN', 'FORTRAN', 'FORWARD', 'FOUND', 'FREE',
|
|
422
|
+
'FREEZE', 'FROM', 'FULL', 'FUNCTION', 'G', 'GENERAL', 'GENERATED', 'GET',
|
|
423
|
+
'GLOBAL', 'GO', 'GOTO', 'GRANT', 'GRANTED', 'GROUP', 'GROUPING',
|
|
424
|
+
'HANDLER', 'HAVING', 'HIERARCHY', 'HOLD', 'HOST', 'IDENTITY', 'IF',
|
|
425
|
+
'IGNORE', 'ILIKE', 'IMMEDIATE', 'IMMEDIATELY', 'IMMUTABLE', 'IMPLEMENTATION', 'IMPLICIT',
|
|
426
|
+
'IN', 'INCLUDING', 'INCREMENT', 'INDEX', 'INDITCATOR', 'INFIX',
|
|
427
|
+
'INHERITS', 'INITIALIZE', 'INITIALLY', 'INNER', 'INOUT', 'INPUT',
|
|
428
|
+
'INSENSITIVE', 'INSERT', 'INSTANTIABLE', 'INSTEAD', 'INTERSECT', 'INTO',
|
|
429
|
+
'INVOKER', 'IS', 'ISNULL', 'ISOLATION', 'ITERATE', 'JOIN', 'KEY',
|
|
430
|
+
'KEY_MEMBER', 'KEY_TYPE', 'LANCOMPILER', 'LANGUAGE', 'LARGE', 'LAST',
|
|
431
|
+
'LATERAL', 'LEADING', 'LEFT', 'LENGTH', 'LESS', 'LEVEL', 'LIKE', 'LIMIT',
|
|
432
|
+
'LISTEN', 'LOAD', 'LOCAL', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCATION',
|
|
433
|
+
'LOCATOR', 'LOCK', 'LOWER', 'MAP', 'MATCH', 'MAX', 'MAXVALUE',
|
|
434
|
+
'MESSAGE_LENGTH', 'MESSAGE_OCTET_LENGTH', 'MESSAGE_TEXT', 'METHOD', 'MIN',
|
|
435
|
+
'MINUTE', 'MINVALUE', 'MOD', 'MODE', 'MODIFIES', 'MODIFY', 'MONTH',
|
|
436
|
+
'MORE', 'MOVE', 'MUMPS', 'NAMES', 'NATIONAL', 'NATURAL', 'NCHAR', 'NCLOB',
|
|
437
|
+
'NEW', 'NEXT', 'NO', 'NOCREATEDB', 'NOCREATEUSER', 'NONE', 'NOT',
|
|
438
|
+
'NOTHING', 'NOTIFY', 'NOTNULL', 'NULL', 'NULLABLE', 'NULLIF', 'OBJECT',
|
|
439
|
+
'OCTET_LENGTH', 'OF', 'OFF', 'OFFSET', 'OIDS', 'OLD', 'ON', 'ONLY',
|
|
440
|
+
'OPEN', 'OPERATION', 'OPERATOR', 'OPTION', 'OPTIONS', 'OR', 'ORDER',
|
|
441
|
+
'ORDINALITY', 'OUT', 'OUTER', 'OUTPUT', 'OVERLAPS', 'OVERLAY',
|
|
442
|
+
'OVERRIDING', 'OWNER', 'PAD', 'PARAMETER', 'PARAMETERS', 'PARAMETER_MODE',
|
|
443
|
+
'PARAMATER_NAME', 'PARAMATER_ORDINAL_POSITION',
|
|
444
|
+
'PARAMETER_SPECIFIC_CATALOG', 'PARAMETER_SPECIFIC_NAME',
|
|
445
|
+
'PARAMATER_SPECIFIC_SCHEMA', 'PARTIAL', 'PASCAL', 'PENDANT', 'PERIOD', 'PLACING',
|
|
446
|
+
'PLI', 'POSITION', 'POSTFIX', 'PRECEEDS', 'PRECISION', 'PREFIX', 'PREORDER',
|
|
447
|
+
'PREPARE', 'PRESERVE', 'PRIMARY', 'PRIOR', 'PRIVILEGES', 'PROCEDURAL',
|
|
448
|
+
'PROCEDURE', 'PUBLIC', 'READ', 'READS', 'RECHECK', 'RECURSIVE', 'REF',
|
|
449
|
+
'REFERENCES', 'REFERENCING', 'REINDEX', 'RELATIVE', 'RENAME',
|
|
450
|
+
'REPEATABLE', 'REPLACE', 'RESET', 'RESTART', 'RESTRICT', 'RESULT',
|
|
451
|
+
'RETURN', 'RETURNED_LENGTH', 'RETURNED_OCTET_LENGTH', 'RETURNED_SQLSTATE',
|
|
452
|
+
'RETURNS', 'REVOKE', 'RIGHT', 'ROLE', 'ROLLBACK', 'ROLLUP', 'ROUTINE',
|
|
453
|
+
'ROUTINE_CATALOG', 'ROUTINE_NAME', 'ROUTINE_SCHEMA', 'ROW', 'ROWS',
|
|
454
|
+
'ROW_COUNT', 'RULE', 'SAVE_POINT', 'SCALE', 'SCHEMA', 'SCHEMA_NAME',
|
|
455
|
+
'SCOPE', 'SCROLL', 'SEARCH', 'SECOND', 'SECURITY', 'SELECT', 'SELF',
|
|
456
|
+
'SENSITIVE', 'SERIALIZABLE', 'SERVER_NAME', 'SESSION', 'SESSION_USER',
|
|
457
|
+
'SET', 'SETOF', 'SETS', 'SHARE', 'SHOW', 'SIMILAR', 'SIMPLE', 'SIZE',
|
|
458
|
+
'SOME', 'SOURCE', 'SPACE', 'SPECIFIC', 'SPECIFICTYPE', 'SPECIFIC_NAME',
|
|
459
|
+
'SQL', 'SQLCODE', 'SQLERROR', 'SQLEXCEPTION', 'SQLSTATE', 'SQLWARNINIG',
|
|
460
|
+
'STABLE', 'START', 'STATE', 'STATEMENT', 'STATIC', 'STATISTICS', 'STDIN',
|
|
461
|
+
'STDOUT', 'STORAGE', 'STRICT', 'STRUCTURE', 'STYPE', 'SUBCLASS_ORIGIN',
|
|
462
|
+
'SUBLIST', 'SUBSTRING', 'SUCCEEDS', 'SUM', 'SYMMETRIC', 'SYSID', 'SYSTEM',
|
|
463
|
+
'SYSTEM_USER', 'TABLE', 'TABLE_NAME', ' TEMP', 'TEMPLATE', 'TEMPORARY',
|
|
464
|
+
'TERMINATE', 'THAN', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_HOUR',
|
|
465
|
+
'TIMEZONE_MINUTE', 'TO', 'TOAST', 'TRAILING', 'TRANSATION',
|
|
466
|
+
'TRANSACTIONS_COMMITTED', 'TRANSACTIONS_ROLLED_BACK', 'TRANSATION_ACTIVE',
|
|
467
|
+
'TRANSFORM', 'TRANSFORMS', 'TRANSLATE', 'TRANSLATION', 'TREAT', 'TRIGGER',
|
|
468
|
+
'TRIGGER_CATALOG', 'TRIGGER_NAME', 'TRIGGER_SCHEMA', 'TRIM', 'TRUE',
|
|
469
|
+
'TRUNCATE', 'TRUSTED', 'TYPE', 'UNCOMMITTED', 'UNDER', 'UNENCRYPTED',
|
|
470
|
+
'UNION', 'UNIQUE', 'UNKNOWN', 'UNLISTEN', 'UNNAMED', 'UNNEST', 'UNTIL',
|
|
471
|
+
'UPDATE', 'UPPER', 'USAGE', 'USER', 'USER_DEFINED_TYPE_CATALOG',
|
|
472
|
+
'USER_DEFINED_TYPE_NAME', 'USER_DEFINED_TYPE_SCHEMA', 'USING', 'VACUUM',
|
|
473
|
+
'VALID', 'VALIDATOR', 'VALUES', 'VARIABLE', 'VERBOSE',
|
|
474
|
+
'VERSION', 'VERSIONS', 'VERSIONING', 'VIEW',
|
|
475
|
+
'VOLATILE', 'WHEN', 'WHENEVER', 'WHERE', 'WITH', 'WITHOUT', 'WORK',
|
|
476
|
+
'WRITE', 'YEAR', 'ZONE'), suffix=r'\b'),
|
|
461
477
|
Keyword),
|
|
462
478
|
(words((
|
|
463
|
-
'ARRAY', 'BIGINT', 'BINARY', 'BIT', 'BLOB', 'BOOLEAN', 'CHAR',
|
|
464
|
-
'
|
|
465
|
-
'
|
|
479
|
+
'ARRAY', 'BIGINT', 'BINARY', 'BIT', 'BLOB', 'BOOLEAN', 'CHAR',
|
|
480
|
+
'CHARACTER', 'DATE', 'DEC', 'DECIMAL', 'FLOAT', 'INT', 'INTEGER',
|
|
481
|
+
'INTERVAL', 'NUMBER', 'NUMERIC', 'REAL', 'SERIAL', 'SMALLINT',
|
|
482
|
+
'VARCHAR', 'VARYING', 'INT8', 'SERIAL8', 'TEXT'), suffix=r'\b'),
|
|
466
483
|
Name.Builtin),
|
|
467
484
|
(r'[+*/<>=~!@#%^&|`?-]', Operator),
|
|
468
485
|
(r'[0-9]+', Number.Integer),
|
|
@@ -480,6 +497,9 @@ class SqlLexer(RegexLexer):
|
|
|
480
497
|
]
|
|
481
498
|
}
|
|
482
499
|
|
|
500
|
+
def analyse_text(text):
|
|
501
|
+
return 0.01
|
|
502
|
+
|
|
483
503
|
|
|
484
504
|
class TransactSqlLexer(RegexLexer):
|
|
485
505
|
"""
|
|
@@ -499,7 +519,7 @@ class TransactSqlLexer(RegexLexer):
|
|
|
499
519
|
tokens = {
|
|
500
520
|
'root': [
|
|
501
521
|
(r'\s+', Whitespace),
|
|
502
|
-
(r'
|
|
522
|
+
(r'--.*?$\n?', Comment.Single),
|
|
503
523
|
(r'/\*', Comment.Multiline, 'multiline-comments'),
|
|
504
524
|
(words(_tsql_builtins.OPERATORS), Operator),
|
|
505
525
|
(words(_tsql_builtins.OPERATOR_WORDS, suffix=r'\b'), Operator.Word),
|
|
@@ -536,10 +556,42 @@ class TransactSqlLexer(RegexLexer):
|
|
|
536
556
|
]
|
|
537
557
|
}
|
|
538
558
|
|
|
559
|
+
def analyse_text(text):
|
|
560
|
+
rating = 0
|
|
561
|
+
if tsql_declare_re.search(text):
|
|
562
|
+
# Found T-SQL variable declaration.
|
|
563
|
+
rating = 1.0
|
|
564
|
+
else:
|
|
565
|
+
name_between_backtick_count = len(
|
|
566
|
+
name_between_backtick_re.findall(text))
|
|
567
|
+
name_between_bracket_count = len(
|
|
568
|
+
name_between_bracket_re.findall(text))
|
|
569
|
+
# We need to check if there are any names using
|
|
570
|
+
# backticks or brackets, as otherwise both are 0
|
|
571
|
+
# and 0 >= 2 * 0, so we would always assume it's true
|
|
572
|
+
dialect_name_count = name_between_backtick_count + name_between_bracket_count
|
|
573
|
+
if dialect_name_count >= 1 and \
|
|
574
|
+
name_between_bracket_count >= 2 * name_between_backtick_count:
|
|
575
|
+
# Found at least twice as many [name] as `name`.
|
|
576
|
+
rating += 0.5
|
|
577
|
+
elif name_between_bracket_count > name_between_backtick_count:
|
|
578
|
+
rating += 0.2
|
|
579
|
+
elif name_between_bracket_count > 0:
|
|
580
|
+
rating += 0.1
|
|
581
|
+
if tsql_variable_re.search(text) is not None:
|
|
582
|
+
rating += 0.1
|
|
583
|
+
if tsql_go_re.search(text) is not None:
|
|
584
|
+
rating += 0.1
|
|
585
|
+
return rating
|
|
586
|
+
|
|
539
587
|
|
|
540
588
|
class MySqlLexer(RegexLexer):
|
|
541
|
-
"""
|
|
542
|
-
|
|
589
|
+
"""The Oracle MySQL lexer.
|
|
590
|
+
|
|
591
|
+
This lexer does not attempt to maintain strict compatibility with
|
|
592
|
+
MariaDB syntax or keywords. Although MySQL and MariaDB's common code
|
|
593
|
+
history suggests there may be significant overlap between the two,
|
|
594
|
+
compatibility between the two is not a target for this lexer.
|
|
543
595
|
"""
|
|
544
596
|
|
|
545
597
|
name = 'MySQL'
|
|
@@ -550,65 +602,171 @@ class MySqlLexer(RegexLexer):
|
|
|
550
602
|
tokens = {
|
|
551
603
|
'root': [
|
|
552
604
|
(r'\s+', Text),
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
(r'
|
|
556
|
-
(r'
|
|
557
|
-
(r
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
(r'[
|
|
561
|
-
(r'
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
#
|
|
596
|
-
(r'
|
|
597
|
-
(r'
|
|
598
|
-
(r'
|
|
605
|
+
|
|
606
|
+
# Comments
|
|
607
|
+
(r'(?:#|--\s+).*', Comment.Single),
|
|
608
|
+
(r'/\*\+', Comment.Special, 'optimizer-hints'),
|
|
609
|
+
(r'/\*', Comment.Multiline, 'multiline-comment'),
|
|
610
|
+
|
|
611
|
+
# Hexadecimal literals
|
|
612
|
+
(r"x'([0-9a-f]{2})+'", Number.Hex), # MySQL requires paired hex characters in this form.
|
|
613
|
+
(r'0x[0-9a-f]+', Number.Hex),
|
|
614
|
+
|
|
615
|
+
# Binary literals
|
|
616
|
+
(r"b'[01]+'", Number.Bin),
|
|
617
|
+
(r'0b[01]+', Number.Bin),
|
|
618
|
+
|
|
619
|
+
# Numeric literals
|
|
620
|
+
(r'[0-9]+\.[0-9]*(e[+-]?[0-9]+)?', Number.Float), # Mandatory integer, optional fraction and exponent
|
|
621
|
+
(r'[0-9]*\.[0-9]+(e[+-]?[0-9]+)?', Number.Float), # Mandatory fraction, optional integer and exponent
|
|
622
|
+
(r'[0-9]+e[+-]?[0-9]+', Number.Float), # Exponents with integer significands are still floats
|
|
623
|
+
(r'[0-9]+(?=[^0-9a-z$_\u0080-\uffff])', Number.Integer), # Integers that are not in a schema object name
|
|
624
|
+
|
|
625
|
+
# Date literals
|
|
626
|
+
(r"\{\s*d\s*(?P<quote>['\"])\s*\d{2}(\d{2})?.?\d{2}.?\d{2}\s*(?P=quote)\s*\}",
|
|
627
|
+
Literal.Date),
|
|
628
|
+
|
|
629
|
+
# Time literals
|
|
630
|
+
(r"\{\s*t\s*(?P<quote>['\"])\s*(?:\d+\s+)?\d{1,2}.?\d{1,2}.?\d{1,2}(\.\d*)?\s*(?P=quote)\s*\}",
|
|
631
|
+
Literal.Date),
|
|
632
|
+
|
|
633
|
+
# Timestamp literals
|
|
634
|
+
(
|
|
635
|
+
r"\{\s*ts\s*(?P<quote>['\"])\s*"
|
|
636
|
+
r"\d{2}(?:\d{2})?.?\d{2}.?\d{2}" # Date part
|
|
637
|
+
r"\s+" # Whitespace between date and time
|
|
638
|
+
r"\d{1,2}.?\d{1,2}.?\d{1,2}(\.\d*)?" # Time part
|
|
639
|
+
r"\s*(?P=quote)\s*\}",
|
|
640
|
+
Literal.Date
|
|
641
|
+
),
|
|
642
|
+
|
|
643
|
+
# String literals
|
|
644
|
+
(r"'", String.Single, 'single-quoted-string'),
|
|
645
|
+
(r'"', String.Double, 'double-quoted-string'),
|
|
646
|
+
|
|
647
|
+
# Variables
|
|
648
|
+
(r'@@(?:global\.|persist\.|persist_only\.|session\.)?[a-z_]+', Name.Variable),
|
|
649
|
+
(r'@[a-z0-9_$.]+', Name.Variable),
|
|
650
|
+
(r"@'", Name.Variable, 'single-quoted-variable'),
|
|
651
|
+
(r'@"', Name.Variable, 'double-quoted-variable'),
|
|
652
|
+
(r"@`", Name.Variable, 'backtick-quoted-variable'),
|
|
653
|
+
(r'\?', Name.Variable), # For demonstrating prepared statements
|
|
654
|
+
|
|
655
|
+
# Operators
|
|
656
|
+
(r'[!%&*+/:<=>^|~-]+', Operator),
|
|
657
|
+
|
|
658
|
+
# Exceptions; these words tokenize differently in different contexts.
|
|
659
|
+
(r'\b(set)(?!\s*\()', Keyword),
|
|
660
|
+
(r'\b(character)(\s+)(set)\b', bygroups(Keyword, Text, Keyword)),
|
|
661
|
+
# In all other known cases, "SET" is tokenized by MYSQL_DATATYPES.
|
|
662
|
+
|
|
663
|
+
(words(MYSQL_CONSTANTS, prefix=r'\b', suffix=r'\b'), Name.Constant),
|
|
664
|
+
(words(MYSQL_DATATYPES, prefix=r'\b', suffix=r'\b'), Keyword.Type),
|
|
665
|
+
(words(MYSQL_KEYWORDS, prefix=r'\b', suffix=r'\b'), Keyword),
|
|
666
|
+
(words(MYSQL_FUNCTIONS, prefix=r'\b', suffix=r'\b(\s*)(\()'),
|
|
599
667
|
bygroups(Name.Function, Text, Punctuation)),
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
668
|
+
|
|
669
|
+
# Schema object names
|
|
670
|
+
#
|
|
671
|
+
# Note: Although the first regex supports unquoted all-numeric
|
|
672
|
+
# identifiers, this will not be a problem in practice because
|
|
673
|
+
# numeric literals have already been handled above.
|
|
674
|
+
#
|
|
675
|
+
('[0-9a-z$_\u0080-\uffff]+', Name),
|
|
676
|
+
(r'`', Name.Quoted, 'schema-object-name'),
|
|
677
|
+
|
|
678
|
+
# Punctuation
|
|
679
|
+
(r'[(),.;]', Punctuation),
|
|
603
680
|
],
|
|
604
|
-
|
|
605
|
-
|
|
681
|
+
|
|
682
|
+
# Multiline comment substates
|
|
683
|
+
# ---------------------------
|
|
684
|
+
|
|
685
|
+
'optimizer-hints': [
|
|
686
|
+
(r'[^*a-z]+', Comment.Special),
|
|
687
|
+
(r'\*/', Comment.Special, '#pop'),
|
|
688
|
+
(words(MYSQL_OPTIMIZER_HINTS, suffix=r'\b'), Comment.Preproc),
|
|
689
|
+
('[a-z]+', Comment.Special),
|
|
690
|
+
(r'\*', Comment.Special),
|
|
691
|
+
],
|
|
692
|
+
|
|
693
|
+
'multiline-comment': [
|
|
694
|
+
(r'[^*]+', Comment.Multiline),
|
|
606
695
|
(r'\*/', Comment.Multiline, '#pop'),
|
|
607
|
-
(r'
|
|
608
|
-
|
|
609
|
-
|
|
696
|
+
(r'\*', Comment.Multiline),
|
|
697
|
+
],
|
|
698
|
+
|
|
699
|
+
# String substates
|
|
700
|
+
# ----------------
|
|
701
|
+
|
|
702
|
+
'single-quoted-string': [
|
|
703
|
+
(r"[^'\\]+", String.Single),
|
|
704
|
+
(r"''", String.Escape),
|
|
705
|
+
(r"""\\[0'"bnrtZ\\%_]""", String.Escape),
|
|
706
|
+
(r"'", String.Single, '#pop'),
|
|
707
|
+
],
|
|
708
|
+
|
|
709
|
+
'double-quoted-string': [
|
|
710
|
+
(r'[^"\\]+', String.Double),
|
|
711
|
+
(r'""', String.Escape),
|
|
712
|
+
(r"""\\[0'"bnrtZ\\%_]""", String.Escape),
|
|
713
|
+
(r'"', String.Double, '#pop'),
|
|
714
|
+
],
|
|
715
|
+
|
|
716
|
+
# Variable substates
|
|
717
|
+
# ------------------
|
|
718
|
+
|
|
719
|
+
'single-quoted-variable': [
|
|
720
|
+
(r"[^']+", Name.Variable),
|
|
721
|
+
(r"''", Name.Variable),
|
|
722
|
+
(r"'", Name.Variable, '#pop'),
|
|
723
|
+
],
|
|
724
|
+
|
|
725
|
+
'double-quoted-variable': [
|
|
726
|
+
(r'[^"]+', Name.Variable),
|
|
727
|
+
(r'""', Name.Variable),
|
|
728
|
+
(r'"', Name.Variable, '#pop'),
|
|
729
|
+
],
|
|
730
|
+
|
|
731
|
+
'backtick-quoted-variable': [
|
|
732
|
+
(r'[^`]+', Name.Variable),
|
|
733
|
+
(r'``', Name.Variable),
|
|
734
|
+
(r'`', Name.Variable, '#pop'),
|
|
735
|
+
],
|
|
736
|
+
|
|
737
|
+
# Schema object name substates
|
|
738
|
+
# ----------------------------
|
|
739
|
+
#
|
|
740
|
+
# "Name.Quoted" and "Name.Quoted.Escape" are non-standard but
|
|
741
|
+
# formatters will style them as "Name" by default but add
|
|
742
|
+
# additional styles based on the token name. This gives users
|
|
743
|
+
# flexibility to add custom styles as desired.
|
|
744
|
+
#
|
|
745
|
+
'schema-object-name': [
|
|
746
|
+
(r'[^`]+', Name.Quoted),
|
|
747
|
+
(r'``', Name.Quoted.Escape),
|
|
748
|
+
(r'`', Name.Quoted, '#pop'),
|
|
749
|
+
],
|
|
610
750
|
}
|
|
611
751
|
|
|
752
|
+
def analyse_text(text):
|
|
753
|
+
rating = 0
|
|
754
|
+
name_between_backtick_count = len(
|
|
755
|
+
name_between_backtick_re.findall(text))
|
|
756
|
+
name_between_bracket_count = len(
|
|
757
|
+
name_between_bracket_re.findall(text))
|
|
758
|
+
# Same logic as above in the TSQL analysis
|
|
759
|
+
dialect_name_count = name_between_backtick_count + name_between_bracket_count
|
|
760
|
+
if dialect_name_count >= 1 and \
|
|
761
|
+
name_between_backtick_count >= 2 * name_between_bracket_count:
|
|
762
|
+
# Found at least twice as many `name` as [name].
|
|
763
|
+
rating += 0.5
|
|
764
|
+
elif name_between_backtick_count > name_between_bracket_count:
|
|
765
|
+
rating += 0.2
|
|
766
|
+
elif name_between_backtick_count > 0:
|
|
767
|
+
rating += 0.1
|
|
768
|
+
return rating
|
|
769
|
+
|
|
612
770
|
|
|
613
771
|
class SqliteConsoleLexer(Lexer):
|
|
614
772
|
"""
|
|
@@ -635,9 +793,8 @@ class SqliteConsoleLexer(Lexer):
|
|
|
635
793
|
curcode += line[8:]
|
|
636
794
|
else:
|
|
637
795
|
if curcode:
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
yield item
|
|
796
|
+
yield from do_insertions(insertions,
|
|
797
|
+
sql.get_tokens_unprocessed(curcode))
|
|
641
798
|
curcode = ''
|
|
642
799
|
insertions = []
|
|
643
800
|
if line.startswith('SQL error: '):
|
|
@@ -645,9 +802,8 @@ class SqliteConsoleLexer(Lexer):
|
|
|
645
802
|
else:
|
|
646
803
|
yield (match.start(), Generic.Output, line)
|
|
647
804
|
if curcode:
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
yield item
|
|
805
|
+
yield from do_insertions(insertions,
|
|
806
|
+
sql.get_tokens_unprocessed(curcode))
|
|
651
807
|
|
|
652
808
|
|
|
653
809
|
class RqlLexer(RegexLexer):
|