pygments.rb 0.6.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +11 -0
- data/README.md +6 -6
- data/Rakefile +2 -1
- data/cache-lexers.rb +1 -1
- data/circle.yml +7 -0
- data/lib/pygments/lexer.rb +3 -3
- data/lib/pygments/popen.rb +67 -30
- data/lib/pygments/version.rb +1 -1
- data/pygments.rb.gemspec +2 -1
- data/test/test_pygments.rb +16 -16
- data/vendor/pygments-main/AUTHORS +54 -8
- data/vendor/pygments-main/CHANGES +247 -25
- data/vendor/pygments-main/LICENSE +1 -1
- data/vendor/pygments-main/Makefile +15 -6
- data/vendor/pygments-main/README.rst +39 -0
- data/vendor/pygments-main/REVISION +1 -1
- data/vendor/pygments-main/TODO +0 -3
- data/vendor/pygments-main/doc/_themes/pygments14/layout.html +1 -1
- data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +1 -1
- data/vendor/pygments-main/doc/conf.py +3 -11
- data/vendor/pygments-main/doc/docs/api.rst +15 -0
- data/vendor/pygments-main/doc/docs/cmdline.rst +6 -2
- data/vendor/pygments-main/doc/docs/filterdevelopment.rst +4 -3
- data/vendor/pygments-main/doc/docs/integrate.rst +11 -15
- data/vendor/pygments-main/doc/docs/java.rst +7 -7
- data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +258 -171
- data/vendor/pygments-main/doc/docs/lexers.rst +2 -2
- data/vendor/pygments-main/doc/docs/styles.rst +58 -0
- data/vendor/pygments-main/doc/docs/tokens.rst +22 -2
- data/vendor/pygments-main/doc/docs/unicode.rst +15 -7
- data/vendor/pygments-main/doc/faq.rst +17 -21
- data/vendor/pygments-main/doc/index.rst +12 -11
- data/vendor/pygments-main/doc/languages.rst +10 -7
- data/vendor/pygments-main/external/autopygmentize +9 -6
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +70 -52
- data/vendor/pygments-main/external/markdown-processor.py +1 -1
- data/vendor/pygments-main/external/moin-parser.py +1 -1
- data/vendor/pygments-main/external/rst-directive.py +1 -1
- data/vendor/pygments-main/pygmentize +2 -1
- data/vendor/pygments-main/pygments/__init__.py +14 -15
- data/vendor/pygments-main/pygments/cmdline.py +188 -113
- data/vendor/pygments-main/pygments/console.py +13 -13
- data/vendor/pygments-main/pygments/filter.py +7 -7
- data/vendor/pygments-main/pygments/filters/__init__.py +24 -32
- data/vendor/pygments-main/pygments/formatter.py +5 -5
- data/vendor/pygments-main/pygments/formatters/__init__.py +92 -44
- data/vendor/pygments-main/pygments/formatters/_mapping.py +51 -69
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/html.py +63 -51
- data/vendor/pygments-main/pygments/formatters/img.py +25 -22
- data/vendor/pygments-main/pygments/formatters/irc.py +182 -0
- data/vendor/pygments-main/pygments/formatters/latex.py +34 -22
- data/vendor/pygments-main/pygments/formatters/other.py +5 -7
- data/vendor/pygments-main/pygments/formatters/rtf.py +28 -31
- data/vendor/pygments-main/pygments/formatters/svg.py +1 -2
- data/vendor/pygments-main/pygments/formatters/terminal.py +29 -45
- data/vendor/pygments-main/pygments/formatters/terminal256.py +118 -31
- data/vendor/pygments-main/pygments/lexer.py +120 -34
- data/vendor/pygments-main/pygments/lexers/__init__.py +85 -53
- data/vendor/pygments-main/pygments/lexers/{_asybuiltins.py → _asy_builtins.py} +7 -7
- data/vendor/pygments-main/pygments/lexers/{_clbuiltins.py → _cl_builtins.py} +17 -17
- data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +72 -0
- data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1346 -0
- data/vendor/pygments-main/pygments/lexers/{_lassobuiltins.py → _lasso_builtins.py} +4699 -4561
- data/vendor/pygments-main/pygments/lexers/{_luabuiltins.py → _lua_builtins.py} +91 -51
- data/vendor/pygments-main/pygments/lexers/_mapping.py +342 -242
- data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1172 -0
- data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2547 -0
- data/vendor/pygments-main/pygments/lexers/{_phpbuiltins.py → _php_builtins.py} +350 -353
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +600 -212
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3084 -30
- data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1163 -0
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +91 -13
- data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +419 -0
- data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1004 -0
- data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1939 -0
- data/vendor/pygments-main/pygments/lexers/actionscript.py +240 -0
- data/vendor/pygments-main/pygments/lexers/agile.py +14 -2542
- data/vendor/pygments-main/pygments/lexers/algebra.py +221 -0
- data/vendor/pygments-main/pygments/lexers/ambient.py +76 -0
- data/vendor/pygments-main/pygments/lexers/ampl.py +87 -0
- data/vendor/pygments-main/pygments/lexers/apl.py +101 -0
- data/vendor/pygments-main/pygments/lexers/archetype.py +318 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +276 -81
- data/vendor/pygments-main/pygments/lexers/automation.py +374 -0
- data/vendor/pygments-main/pygments/lexers/basic.py +500 -0
- data/vendor/pygments-main/pygments/lexers/bibtex.py +156 -0
- data/vendor/pygments-main/pygments/lexers/business.py +594 -0
- data/vendor/pygments-main/pygments/lexers/c_cpp.py +252 -0
- data/vendor/pygments-main/pygments/lexers/c_like.py +541 -0
- data/vendor/pygments-main/pygments/lexers/capnproto.py +79 -0
- data/vendor/pygments-main/pygments/lexers/chapel.py +101 -0
- data/vendor/pygments-main/pygments/lexers/clean.py +288 -0
- data/vendor/pygments-main/pygments/lexers/compiled.py +24 -5182
- data/vendor/pygments-main/pygments/lexers/configs.py +833 -0
- data/vendor/pygments-main/pygments/lexers/console.py +114 -0
- data/vendor/pygments-main/pygments/lexers/crystal.py +384 -0
- data/vendor/pygments-main/pygments/lexers/csound.py +366 -0
- data/vendor/pygments-main/pygments/lexers/css.py +689 -0
- data/vendor/pygments-main/pygments/lexers/d.py +251 -0
- data/vendor/pygments-main/pygments/lexers/dalvik.py +6 -6
- data/vendor/pygments-main/pygments/lexers/data.py +555 -0
- data/vendor/pygments-main/pygments/lexers/diff.py +165 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +96 -88
- data/vendor/pygments-main/pygments/lexers/dsls.py +878 -0
- data/vendor/pygments-main/pygments/lexers/dylan.py +289 -0
- data/vendor/pygments-main/pygments/lexers/ecl.py +125 -0
- data/vendor/pygments-main/pygments/lexers/eiffel.py +65 -0
- data/vendor/pygments-main/pygments/lexers/elm.py +121 -0
- data/vendor/pygments-main/pygments/lexers/erlang.py +533 -0
- data/vendor/pygments-main/pygments/lexers/esoteric.py +275 -0
- data/vendor/pygments-main/pygments/lexers/ezhil.py +68 -0
- data/vendor/pygments-main/pygments/lexers/factor.py +344 -0
- data/vendor/pygments-main/pygments/lexers/fantom.py +250 -0
- data/vendor/pygments-main/pygments/lexers/felix.py +273 -0
- data/vendor/pygments-main/pygments/lexers/forth.py +177 -0
- data/vendor/pygments-main/pygments/lexers/fortran.py +205 -0
- data/vendor/pygments-main/pygments/lexers/foxpro.py +1 -1
- data/vendor/pygments-main/pygments/lexers/functional.py +11 -3661
- data/vendor/pygments-main/pygments/lexers/go.py +101 -0
- data/vendor/pygments-main/pygments/lexers/grammar_notation.py +213 -0
- data/vendor/pygments-main/pygments/lexers/graph.py +7 -8
- data/vendor/pygments-main/pygments/lexers/graphics.py +553 -0
- data/vendor/pygments-main/pygments/lexers/haskell.py +840 -0
- data/vendor/pygments-main/pygments/lexers/haxe.py +936 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +172 -145
- data/vendor/pygments-main/pygments/lexers/hexdump.py +97 -0
- data/vendor/pygments-main/pygments/lexers/html.py +602 -0
- data/vendor/pygments-main/pygments/lexers/idl.py +270 -0
- data/vendor/pygments-main/pygments/lexers/igor.py +288 -0
- data/vendor/pygments-main/pygments/lexers/inferno.py +3 -3
- data/vendor/pygments-main/pygments/lexers/installers.py +322 -0
- data/vendor/pygments-main/pygments/lexers/int_fiction.py +1343 -0
- data/vendor/pygments-main/pygments/lexers/iolang.py +63 -0
- data/vendor/pygments-main/pygments/lexers/j.py +146 -0
- data/vendor/pygments-main/pygments/lexers/javascript.py +1506 -0
- data/vendor/pygments-main/pygments/lexers/julia.py +333 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +232 -186
- data/vendor/pygments-main/pygments/lexers/lisp.py +2621 -0
- data/vendor/pygments-main/pygments/lexers/make.py +202 -0
- data/vendor/pygments-main/pygments/lexers/markup.py +595 -0
- data/vendor/pygments-main/pygments/lexers/math.py +11 -2276
- data/vendor/pygments-main/pygments/lexers/matlab.py +663 -0
- data/vendor/pygments-main/pygments/lexers/ml.py +769 -0
- data/vendor/pygments-main/pygments/lexers/modeling.py +358 -0
- data/vendor/pygments-main/pygments/lexers/modula2.py +1561 -0
- data/vendor/pygments-main/pygments/lexers/monte.py +203 -0
- data/vendor/pygments-main/pygments/lexers/ncl.py +1053 -0
- data/vendor/pygments-main/pygments/lexers/nimrod.py +159 -0
- data/vendor/pygments-main/pygments/lexers/nit.py +64 -0
- data/vendor/pygments-main/pygments/lexers/nix.py +136 -0
- data/vendor/pygments-main/pygments/lexers/oberon.py +105 -0
- data/vendor/pygments-main/pygments/lexers/objective.py +504 -0
- data/vendor/pygments-main/pygments/lexers/ooc.py +85 -0
- data/vendor/pygments-main/pygments/lexers/other.py +30 -4481
- data/vendor/pygments-main/pygments/lexers/parasail.py +79 -0
- data/vendor/pygments-main/pygments/lexers/parsers.py +171 -114
- data/vendor/pygments-main/pygments/lexers/pascal.py +644 -0
- data/vendor/pygments-main/pygments/lexers/pawn.py +199 -0
- data/vendor/pygments-main/pygments/lexers/perl.py +616 -0
- data/vendor/pygments-main/pygments/lexers/php.py +267 -0
- data/vendor/pygments-main/pygments/lexers/praat.py +294 -0
- data/vendor/pygments-main/pygments/lexers/prolog.py +306 -0
- data/vendor/pygments-main/pygments/lexers/python.py +938 -0
- data/vendor/pygments-main/pygments/lexers/qvt.py +152 -0
- data/vendor/pygments-main/pygments/lexers/r.py +453 -0
- data/vendor/pygments-main/pygments/lexers/rdf.py +195 -24
- data/vendor/pygments-main/pygments/lexers/rebol.py +431 -0
- data/vendor/pygments-main/pygments/lexers/resource.py +85 -0
- data/vendor/pygments-main/pygments/lexers/rnc.py +67 -0
- data/vendor/pygments-main/pygments/lexers/roboconf.py +82 -0
- data/vendor/pygments-main/pygments/lexers/{_robotframeworklexer.py → robotframework.py} +20 -18
- data/vendor/pygments-main/pygments/lexers/ruby.py +519 -0
- data/vendor/pygments-main/pygments/lexers/rust.py +209 -0
- data/vendor/pygments-main/pygments/lexers/sas.py +228 -0
- data/vendor/pygments-main/pygments/lexers/scripting.py +1222 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +478 -115
- data/vendor/pygments-main/pygments/lexers/smalltalk.py +195 -0
- data/vendor/pygments-main/pygments/lexers/smv.py +75 -0
- data/vendor/pygments-main/pygments/lexers/snobol.py +83 -0
- data/vendor/pygments-main/pygments/lexers/special.py +6 -2
- data/vendor/pygments-main/pygments/lexers/sql.py +209 -120
- data/vendor/pygments-main/pygments/lexers/stata.py +106 -0
- data/vendor/pygments-main/pygments/lexers/supercollider.py +90 -0
- data/vendor/pygments-main/pygments/lexers/tcl.py +145 -0
- data/vendor/pygments-main/pygments/lexers/templates.py +282 -90
- data/vendor/pygments-main/pygments/lexers/testing.py +207 -0
- data/vendor/pygments-main/pygments/lexers/text.py +15 -2045
- data/vendor/pygments-main/pygments/lexers/textedit.py +169 -0
- data/vendor/pygments-main/pygments/lexers/textfmts.py +297 -0
- data/vendor/pygments-main/pygments/lexers/theorem.py +458 -0
- data/vendor/pygments-main/pygments/lexers/trafficscript.py +54 -0
- data/vendor/pygments-main/pygments/lexers/typoscript.py +225 -0
- data/vendor/pygments-main/pygments/lexers/urbi.py +133 -0
- data/vendor/pygments-main/pygments/lexers/varnish.py +190 -0
- data/vendor/pygments-main/pygments/lexers/verification.py +111 -0
- data/vendor/pygments-main/pygments/lexers/web.py +13 -4499
- data/vendor/pygments-main/pygments/lexers/webmisc.py +979 -0
- data/vendor/pygments-main/pygments/lexers/whiley.py +117 -0
- data/vendor/pygments-main/pygments/lexers/x10.py +69 -0
- data/vendor/pygments-main/pygments/modeline.py +5 -2
- data/vendor/pygments-main/pygments/plugin.py +1 -1
- data/vendor/pygments-main/pygments/regexopt.py +92 -0
- data/vendor/pygments-main/pygments/scanner.py +3 -2
- data/vendor/pygments-main/pygments/sphinxext.py +11 -6
- data/vendor/pygments-main/pygments/style.py +41 -4
- data/vendor/pygments-main/pygments/styles/__init__.py +5 -1
- data/vendor/pygments-main/pygments/styles/algol.py +63 -0
- data/vendor/pygments-main/pygments/styles/algol_nu.py +63 -0
- data/vendor/pygments-main/pygments/styles/arduino.py +98 -0
- 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/lovelace.py +97 -0
- data/vendor/pygments-main/pygments/styles/manni.py +1 -1
- data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
- 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 +2 -2
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
- data/vendor/pygments-main/pygments/styles/sas.py +41 -0
- data/vendor/pygments-main/pygments/styles/stata.py +37 -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 +31 -16
- data/vendor/pygments-main/pygments/unistring.py +141 -65
- data/vendor/pygments-main/pygments/util.py +129 -33
- data/vendor/pygments-main/requirements.txt +5 -0
- data/vendor/pygments-main/scripts/check_sources.py +25 -40
- data/vendor/pygments-main/scripts/debug_lexer.py +246 -0
- data/vendor/pygments-main/scripts/find_error.py +1 -0
- data/vendor/pygments-main/scripts/get_vimkw.py +35 -4
- data/vendor/pygments-main/setup.cfg +3 -0
- data/vendor/pygments-main/setup.py +17 -30
- data/vendor/pygments-main/tox.ini +7 -0
- metadata +159 -387
- data/vendor/pygments-main/ez_setup.py +0 -382
- data/vendor/pygments-main/pygments/lexers/_cocoabuiltins.py +0 -73
- data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +0 -562
- data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +0 -1077
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +0 -13
- data/vendor/pygments-main/pygments/lexers/qbasic.py +0 -157
- data/vendor/pygments-main/scripts/find_codetags.py +0 -213
- data/vendor/pygments-main/scripts/find_error.py +0 -173
- data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +0 -37
- data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +0 -869
- data/vendor/pygments-main/tests/dtds/HTML4.dcl +0 -88
- data/vendor/pygments-main/tests/dtds/HTML4.dtd +0 -1092
- data/vendor/pygments-main/tests/dtds/HTML4.soc +0 -9
- data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +0 -195
- data/vendor/pygments-main/tests/dtds/HTMLspec.ent +0 -77
- data/vendor/pygments-main/tests/dtds/HTMLsym.ent +0 -241
- data/vendor/pygments-main/tests/examplefiles/99_bottles_of_beer.chpl +0 -118
- data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +0 -209
- data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +0 -102
- data/vendor/pygments-main/tests/examplefiles/BOM.js +0 -1
- data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +0 -611
- data/vendor/pygments-main/tests/examplefiles/Config.in.cache +0 -1973
- data/vendor/pygments-main/tests/examplefiles/Constants.mo +0 -158
- data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +0 -411
- data/vendor/pygments-main/tests/examplefiles/Deflate.fs +0 -578
- data/vendor/pygments-main/tests/examplefiles/Error.pmod +0 -38
- data/vendor/pygments-main/tests/examplefiles/Errors.scala +0 -18
- data/vendor/pygments-main/tests/examplefiles/FakeFile.pike +0 -360
- data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +0 -66
- data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +0 -104
- data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +0 -671
- data/vendor/pygments-main/tests/examplefiles/Intro.java +0 -1660
- data/vendor/pygments-main/tests/examplefiles/Makefile +0 -1131
- data/vendor/pygments-main/tests/examplefiles/Object.st +0 -4394
- data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +0 -584
- data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +0 -23
- data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +0 -378
- data/vendor/pygments-main/tests/examplefiles/Sorting.mod +0 -470
- data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +0 -382
- data/vendor/pygments-main/tests/examplefiles/addressbook.proto +0 -30
- data/vendor/pygments-main/tests/examplefiles/antlr_ANTLRv3.g +0 -608
- data/vendor/pygments-main/tests/examplefiles/antlr_throws +0 -1
- data/vendor/pygments-main/tests/examplefiles/apache2.conf +0 -393
- data/vendor/pygments-main/tests/examplefiles/as3_test.as +0 -143
- data/vendor/pygments-main/tests/examplefiles/as3_test2.as +0 -46
- data/vendor/pygments-main/tests/examplefiles/as3_test3.as +0 -3
- data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +0 -27
- data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +0 -25
- data/vendor/pygments-main/tests/examplefiles/badcase.java +0 -2
- data/vendor/pygments-main/tests/examplefiles/batchfile.bat +0 -49
- data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +0 -308
- data/vendor/pygments-main/tests/examplefiles/boot-9.scm +0 -1557
- data/vendor/pygments-main/tests/examplefiles/ca65_example +0 -284
- data/vendor/pygments-main/tests/examplefiles/cbmbas_example +0 -9
- data/vendor/pygments-main/tests/examplefiles/cells.ps +0 -515
- data/vendor/pygments-main/tests/examplefiles/ceval.c +0 -2604
- data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +0 -13
- data/vendor/pygments-main/tests/examplefiles/classes.dylan +0 -125
- data/vendor/pygments-main/tests/examplefiles/clojure-weird-keywords.clj +0 -5
- data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +0 -10
- data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +0 -447
- data/vendor/pygments-main/tests/examplefiles/core.cljs +0 -52
- data/vendor/pygments-main/tests/examplefiles/database.pytb +0 -20
- data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +0 -2461
- data/vendor/pygments-main/tests/examplefiles/demo.ahk +0 -181
- data/vendor/pygments-main/tests/examplefiles/demo.cfm +0 -50
- data/vendor/pygments-main/tests/examplefiles/demo.hbs +0 -12
- data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +0 -68
- data/vendor/pygments-main/tests/examplefiles/dwarf.cw +0 -17
- data/vendor/pygments-main/tests/examplefiles/ember.handlebars +0 -33
- data/vendor/pygments-main/tests/examplefiles/erl_session +0 -10
- data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +0 -1
- data/vendor/pygments-main/tests/examplefiles/evil_regex.js +0 -48
- data/vendor/pygments-main/tests/examplefiles/example.Rd +0 -78
- data/vendor/pygments-main/tests/examplefiles/example.als +0 -217
- data/vendor/pygments-main/tests/examplefiles/example.bug +0 -54
- data/vendor/pygments-main/tests/examplefiles/example.c +0 -2080
- data/vendor/pygments-main/tests/examplefiles/example.ceylon +0 -52
- data/vendor/pygments-main/tests/examplefiles/example.chai +0 -6
- data/vendor/pygments-main/tests/examplefiles/example.clay +0 -33
- data/vendor/pygments-main/tests/examplefiles/example.cls +0 -15
- data/vendor/pygments-main/tests/examplefiles/example.cob +0 -3556
- data/vendor/pygments-main/tests/examplefiles/example.coffee +0 -27
- data/vendor/pygments-main/tests/examplefiles/example.cpp +0 -2363
- data/vendor/pygments-main/tests/examplefiles/example.e +0 -124
- data/vendor/pygments-main/tests/examplefiles/example.f90 +0 -8
- data/vendor/pygments-main/tests/examplefiles/example.feature +0 -16
- data/vendor/pygments-main/tests/examplefiles/example.gd +0 -23
- data/vendor/pygments-main/tests/examplefiles/example.gi +0 -64
- data/vendor/pygments-main/tests/examplefiles/example.groovy +0 -2
- data/vendor/pygments-main/tests/examplefiles/example.gs +0 -106
- data/vendor/pygments-main/tests/examplefiles/example.gst +0 -7
- data/vendor/pygments-main/tests/examplefiles/example.hs +0 -27
- data/vendor/pygments-main/tests/examplefiles/example.hx +0 -185
- data/vendor/pygments-main/tests/examplefiles/example.i6t +0 -32
- data/vendor/pygments-main/tests/examplefiles/example.i7x +0 -45
- data/vendor/pygments-main/tests/examplefiles/example.inf +0 -374
- data/vendor/pygments-main/tests/examplefiles/example.j +0 -564
- data/vendor/pygments-main/tests/examplefiles/example.jag +0 -48
- data/vendor/pygments-main/tests/examplefiles/example.java +0 -16
- data/vendor/pygments-main/tests/examplefiles/example.kal +0 -75
- data/vendor/pygments-main/tests/examplefiles/example.kt +0 -47
- data/vendor/pygments-main/tests/examplefiles/example.lagda +0 -19
- data/vendor/pygments-main/tests/examplefiles/example.liquid +0 -42
- data/vendor/pygments-main/tests/examplefiles/example.lua +0 -250
- data/vendor/pygments-main/tests/examplefiles/example.ma +0 -8
- data/vendor/pygments-main/tests/examplefiles/example.monkey +0 -152
- data/vendor/pygments-main/tests/examplefiles/example.moo +0 -26
- data/vendor/pygments-main/tests/examplefiles/example.moon +0 -629
- data/vendor/pygments-main/tests/examplefiles/example.mq4 +0 -187
- data/vendor/pygments-main/tests/examplefiles/example.mqh +0 -123
- data/vendor/pygments-main/tests/examplefiles/example.msc +0 -43
- data/vendor/pygments-main/tests/examplefiles/example.ni +0 -57
- data/vendor/pygments-main/tests/examplefiles/example.nim +0 -1010
- data/vendor/pygments-main/tests/examplefiles/example.nix +0 -80
- data/vendor/pygments-main/tests/examplefiles/example.ns2 +0 -69
- data/vendor/pygments-main/tests/examplefiles/example.pas +0 -2708
- data/vendor/pygments-main/tests/examplefiles/example.pp +0 -8
- data/vendor/pygments-main/tests/examplefiles/example.prg +0 -161
- data/vendor/pygments-main/tests/examplefiles/example.rb +0 -1852
- data/vendor/pygments-main/tests/examplefiles/example.red +0 -257
- data/vendor/pygments-main/tests/examplefiles/example.reds +0 -150
- data/vendor/pygments-main/tests/examplefiles/example.reg +0 -19
- data/vendor/pygments-main/tests/examplefiles/example.rexx +0 -50
- data/vendor/pygments-main/tests/examplefiles/example.rhtml +0 -561
- data/vendor/pygments-main/tests/examplefiles/example.rkt +0 -743
- data/vendor/pygments-main/tests/examplefiles/example.rpf +0 -4
- data/vendor/pygments-main/tests/examplefiles/example.sh +0 -22
- data/vendor/pygments-main/tests/examplefiles/example.sh-session +0 -19
- data/vendor/pygments-main/tests/examplefiles/example.shell-session +0 -45
- data/vendor/pygments-main/tests/examplefiles/example.slim +0 -31
- data/vendor/pygments-main/tests/examplefiles/example.sls +0 -51
- data/vendor/pygments-main/tests/examplefiles/example.sml +0 -156
- data/vendor/pygments-main/tests/examplefiles/example.snobol +0 -15
- data/vendor/pygments-main/tests/examplefiles/example.stan +0 -110
- data/vendor/pygments-main/tests/examplefiles/example.tea +0 -34
- data/vendor/pygments-main/tests/examplefiles/example.todotxt +0 -9
- data/vendor/pygments-main/tests/examplefiles/example.ts +0 -28
- data/vendor/pygments-main/tests/examplefiles/example.u +0 -548
- data/vendor/pygments-main/tests/examplefiles/example.weechatlog +0 -9
- data/vendor/pygments-main/tests/examplefiles/example.xhtml +0 -376
- data/vendor/pygments-main/tests/examplefiles/example.xtend +0 -34
- data/vendor/pygments-main/tests/examplefiles/example.yaml +0 -302
- data/vendor/pygments-main/tests/examplefiles/example2.aspx +0 -29
- data/vendor/pygments-main/tests/examplefiles/example2.msc +0 -79
- data/vendor/pygments-main/tests/examplefiles/exampleScript.cfc +0 -241
- data/vendor/pygments-main/tests/examplefiles/exampleTag.cfc +0 -18
- data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +0 -205
- data/vendor/pygments-main/tests/examplefiles/example_file.fy +0 -128
- data/vendor/pygments-main/tests/examplefiles/firefox.mak +0 -586
- data/vendor/pygments-main/tests/examplefiles/flipflop.sv +0 -19
- data/vendor/pygments-main/tests/examplefiles/foo.sce +0 -6
- data/vendor/pygments-main/tests/examplefiles/format.ml +0 -1213
- data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +0 -77
- data/vendor/pygments-main/tests/examplefiles/function.mu +0 -1
- data/vendor/pygments-main/tests/examplefiles/functional.rst +0 -1472
- data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +0 -133
- data/vendor/pygments-main/tests/examplefiles/genclass.clj +0 -510
- data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +0 -193
- data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +0 -33
- data/vendor/pygments-main/tests/examplefiles/glsl.frag +0 -7
- data/vendor/pygments-main/tests/examplefiles/glsl.vert +0 -13
- data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +0 -22
- data/vendor/pygments-main/tests/examplefiles/hash_syntax.rb +0 -5
- data/vendor/pygments-main/tests/examplefiles/hello.at +0 -6
- data/vendor/pygments-main/tests/examplefiles/hello.golo +0 -5
- data/vendor/pygments-main/tests/examplefiles/hello.lsl +0 -12
- data/vendor/pygments-main/tests/examplefiles/hello.smali +0 -40
- data/vendor/pygments-main/tests/examplefiles/hello.sp +0 -9
- data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +0 -1
- data/vendor/pygments-main/tests/examplefiles/http_request_example +0 -15
- data/vendor/pygments-main/tests/examplefiles/http_response_example +0 -29
- data/vendor/pygments-main/tests/examplefiles/hybris_File.hy +0 -174
- data/vendor/pygments-main/tests/examplefiles/idl_sample.pro +0 -73
- data/vendor/pygments-main/tests/examplefiles/iex_example +0 -23
- data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +0 -71
- data/vendor/pygments-main/tests/examplefiles/intro.ik +0 -24
- data/vendor/pygments-main/tests/examplefiles/ints.php +0 -10
- data/vendor/pygments-main/tests/examplefiles/intsyn.fun +0 -675
- data/vendor/pygments-main/tests/examplefiles/intsyn.sig +0 -286
- data/vendor/pygments-main/tests/examplefiles/irb_heredoc +0 -8
- data/vendor/pygments-main/tests/examplefiles/irc.lsp +0 -214
- data/vendor/pygments-main/tests/examplefiles/java.properties +0 -16
- data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +0 -28
- data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +0 -45
- data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +0 -713
- data/vendor/pygments-main/tests/examplefiles/json.lasso +0 -301
- data/vendor/pygments-main/tests/examplefiles/json.lasso9 +0 -213
- data/vendor/pygments-main/tests/examplefiles/language.hy +0 -165
- data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +0 -13
- data/vendor/pygments-main/tests/examplefiles/limbo.b +0 -456
- data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +0 -47
- data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +0 -43
- data/vendor/pygments-main/tests/examplefiles/logos_example.xm +0 -28
- data/vendor/pygments-main/tests/examplefiles/ltmain.sh +0 -2849
- data/vendor/pygments-main/tests/examplefiles/main.cmake +0 -44
- data/vendor/pygments-main/tests/examplefiles/markdown.lsp +0 -679
- data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +0 -3
- data/vendor/pygments-main/tests/examplefiles/matlab_sample +0 -30
- data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +0 -37
- data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +0 -455
- data/vendor/pygments-main/tests/examplefiles/minehunt.qml +0 -112
- data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +0 -4
- data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +0 -340
- data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +0 -38
- data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +0 -95
- data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +0 -96
- data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +0 -30
- data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +0 -87
- data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +0 -118
- data/vendor/pygments-main/tests/examplefiles/numbers.c +0 -12
- data/vendor/pygments-main/tests/examplefiles/objc_example.m +0 -179
- data/vendor/pygments-main/tests/examplefiles/openedge_example +0 -34
- data/vendor/pygments-main/tests/examplefiles/pawn_example +0 -25
- data/vendor/pygments-main/tests/examplefiles/perl_misc +0 -62
- data/vendor/pygments-main/tests/examplefiles/perl_perl5db +0 -998
- data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +0 -120
- data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +0 -856
- data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +0 -163
- data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +0 -567
- data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +0 -1223
- data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +0 -47
- data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +0 -10
- data/vendor/pygments-main/tests/examplefiles/psql_session.txt +0 -122
- data/vendor/pygments-main/tests/examplefiles/py3_test.txt +0 -2
- data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +0 -4
- data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +0 -14
- data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +0 -2
- data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +0 -4
- data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +0 -234
- data/vendor/pygments-main/tests/examplefiles/qbasic_example +0 -2
- data/vendor/pygments-main/tests/examplefiles/qsort.prolog +0 -13
- data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +0 -38
- data/vendor/pygments-main/tests/examplefiles/r6rs-comments.scm +0 -23
- data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +0 -280
- data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +0 -2
- data/vendor/pygments-main/tests/examplefiles/regex.js +0 -22
- data/vendor/pygments-main/tests/examplefiles/reversi.lsp +0 -427
- data/vendor/pygments-main/tests/examplefiles/robotframework_test.txt +0 -39
- data/vendor/pygments-main/tests/examplefiles/rql-queries.rql +0 -34
- data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +0 -11
- data/vendor/pygments-main/tests/examplefiles/rust_example.rs +0 -233
- data/vendor/pygments-main/tests/examplefiles/scilab.sci +0 -30
- data/vendor/pygments-main/tests/examplefiles/scope.cirru +0 -43
- data/vendor/pygments-main/tests/examplefiles/session.dylan-console +0 -9
- data/vendor/pygments-main/tests/examplefiles/sibling.prolog +0 -19
- data/vendor/pygments-main/tests/examplefiles/simple.md +0 -747
- data/vendor/pygments-main/tests/examplefiles/smarty_example.html +0 -209
- data/vendor/pygments-main/tests/examplefiles/source.lgt +0 -343
- data/vendor/pygments-main/tests/examplefiles/sources.list +0 -62
- data/vendor/pygments-main/tests/examplefiles/sparql.rq +0 -23
- data/vendor/pygments-main/tests/examplefiles/sphere.pov +0 -18
- data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +0 -27
- data/vendor/pygments-main/tests/examplefiles/squid.conf +0 -30
- data/vendor/pygments-main/tests/examplefiles/string.jl +0 -1031
- data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +0 -21
- data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +0 -3
- data/vendor/pygments-main/tests/examplefiles/swig_java.swg +0 -1329
- data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +0 -225
- data/vendor/pygments-main/tests/examplefiles/test.R +0 -185
- data/vendor/pygments-main/tests/examplefiles/test.adb +0 -211
- data/vendor/pygments-main/tests/examplefiles/test.agda +0 -102
- data/vendor/pygments-main/tests/examplefiles/test.apl +0 -26
- data/vendor/pygments-main/tests/examplefiles/test.asy +0 -131
- data/vendor/pygments-main/tests/examplefiles/test.awk +0 -121
- data/vendor/pygments-main/tests/examplefiles/test.bb +0 -95
- data/vendor/pygments-main/tests/examplefiles/test.bmx +0 -145
- data/vendor/pygments-main/tests/examplefiles/test.boo +0 -39
- data/vendor/pygments-main/tests/examplefiles/test.bro +0 -250
- data/vendor/pygments-main/tests/examplefiles/test.cs +0 -374
- data/vendor/pygments-main/tests/examplefiles/test.css +0 -54
- data/vendor/pygments-main/tests/examplefiles/test.cu +0 -36
- data/vendor/pygments-main/tests/examplefiles/test.cyp +0 -123
- data/vendor/pygments-main/tests/examplefiles/test.d +0 -135
- data/vendor/pygments-main/tests/examplefiles/test.dart +0 -23
- data/vendor/pygments-main/tests/examplefiles/test.dtd +0 -89
- data/vendor/pygments-main/tests/examplefiles/test.ebnf +0 -31
- data/vendor/pygments-main/tests/examplefiles/test.ec +0 -605
- data/vendor/pygments-main/tests/examplefiles/test.ecl +0 -58
- data/vendor/pygments-main/tests/examplefiles/test.eh +0 -315
- data/vendor/pygments-main/tests/examplefiles/test.erl +0 -169
- data/vendor/pygments-main/tests/examplefiles/test.evoque +0 -33
- data/vendor/pygments-main/tests/examplefiles/test.fan +0 -818
- data/vendor/pygments-main/tests/examplefiles/test.flx +0 -57
- data/vendor/pygments-main/tests/examplefiles/test.gdc +0 -13
- data/vendor/pygments-main/tests/examplefiles/test.groovy +0 -97
- data/vendor/pygments-main/tests/examplefiles/test.html +0 -339
- data/vendor/pygments-main/tests/examplefiles/test.idr +0 -93
- data/vendor/pygments-main/tests/examplefiles/test.ini +0 -10
- data/vendor/pygments-main/tests/examplefiles/test.java +0 -653
- data/vendor/pygments-main/tests/examplefiles/test.jsp +0 -24
- data/vendor/pygments-main/tests/examplefiles/test.maql +0 -45
- data/vendor/pygments-main/tests/examplefiles/test.mask +0 -41
- data/vendor/pygments-main/tests/examplefiles/test.mod +0 -374
- data/vendor/pygments-main/tests/examplefiles/test.moo +0 -51
- data/vendor/pygments-main/tests/examplefiles/test.myt +0 -166
- data/vendor/pygments-main/tests/examplefiles/test.nim +0 -93
- data/vendor/pygments-main/tests/examplefiles/test.opa +0 -10
- data/vendor/pygments-main/tests/examplefiles/test.p6 +0 -252
- data/vendor/pygments-main/tests/examplefiles/test.pan +0 -54
- data/vendor/pygments-main/tests/examplefiles/test.pas +0 -743
- data/vendor/pygments-main/tests/examplefiles/test.php +0 -507
- data/vendor/pygments-main/tests/examplefiles/test.pig +0 -148
- data/vendor/pygments-main/tests/examplefiles/test.plot +0 -333
- data/vendor/pygments-main/tests/examplefiles/test.ps1 +0 -108
- data/vendor/pygments-main/tests/examplefiles/test.pwn +0 -253
- data/vendor/pygments-main/tests/examplefiles/test.pypylog +0 -1839
- data/vendor/pygments-main/tests/examplefiles/test.r3 +0 -114
- data/vendor/pygments-main/tests/examplefiles/test.rb +0 -177
- data/vendor/pygments-main/tests/examplefiles/test.rhtml +0 -43
- data/vendor/pygments-main/tests/examplefiles/test.rsl +0 -111
- data/vendor/pygments-main/tests/examplefiles/test.scaml +0 -8
- data/vendor/pygments-main/tests/examplefiles/test.ssp +0 -12
- data/vendor/pygments-main/tests/examplefiles/test.swift +0 -65
- data/vendor/pygments-main/tests/examplefiles/test.tcsh +0 -830
- data/vendor/pygments-main/tests/examplefiles/test.vb +0 -407
- data/vendor/pygments-main/tests/examplefiles/test.vhdl +0 -161
- data/vendor/pygments-main/tests/examplefiles/test.xqy +0 -138
- data/vendor/pygments-main/tests/examplefiles/test.xsl +0 -23
- data/vendor/pygments-main/tests/examplefiles/test.zep +0 -33
- data/vendor/pygments-main/tests/examplefiles/test2.pypylog +0 -120
- data/vendor/pygments-main/tests/examplefiles/truncated.pytb +0 -15
- data/vendor/pygments-main/tests/examplefiles/type.lisp +0 -1218
- data/vendor/pygments-main/tests/examplefiles/underscore.coffee +0 -603
- data/vendor/pygments-main/tests/examplefiles/unicode.applescript +0 -5
- data/vendor/pygments-main/tests/examplefiles/unicode.go +0 -10
- data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +0 -11
- data/vendor/pygments-main/tests/examplefiles/unix-io.lid +0 -37
- data/vendor/pygments-main/tests/examplefiles/vbnet_test.bas +0 -29
- data/vendor/pygments-main/tests/examplefiles/vctreestatus_hg +0 -4
- data/vendor/pygments-main/tests/examplefiles/vimrc +0 -21
- data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +0 -3
- data/vendor/pygments-main/tests/examplefiles/while.pov +0 -13
- data/vendor/pygments-main/tests/examplefiles/wiki.factor +0 -384
- data/vendor/pygments-main/tests/examplefiles/xml_example +0 -1897
- data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +0 -798
- data/vendor/pygments-main/tests/run.py +0 -44
- data/vendor/pygments-main/tests/string_asserts.py +0 -22
- data/vendor/pygments-main/tests/support.py +0 -15
- data/vendor/pygments-main/tests/support/tags +0 -36
- data/vendor/pygments-main/tests/test_basic_api.py +0 -309
- data/vendor/pygments-main/tests/test_cfm.py +0 -46
- data/vendor/pygments-main/tests/test_clexer.py +0 -236
- data/vendor/pygments-main/tests/test_cmdline.py +0 -106
- data/vendor/pygments-main/tests/test_examplefiles.py +0 -110
- data/vendor/pygments-main/tests/test_html_formatter.py +0 -180
- data/vendor/pygments-main/tests/test_latex_formatter.py +0 -57
- data/vendor/pygments-main/tests/test_lexers_other.py +0 -68
- data/vendor/pygments-main/tests/test_objectiveclexer.py +0 -81
- data/vendor/pygments-main/tests/test_perllexer.py +0 -137
- data/vendor/pygments-main/tests/test_qbasiclexer.py +0 -43
- data/vendor/pygments-main/tests/test_regexlexer.py +0 -54
- data/vendor/pygments-main/tests/test_rtf_formatter.py +0 -109
- data/vendor/pygments-main/tests/test_string_asserts.py +0 -39
- data/vendor/pygments-main/tests/test_token.py +0 -46
- data/vendor/pygments-main/tests/test_using_api.py +0 -40
- data/vendor/pygments-main/tests/test_util.py +0 -135
@@ -5,20 +5,26 @@
|
|
5
5
|
|
6
6
|
Base lexer classes.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
|
-
|
11
|
+
|
12
|
+
from __future__ import print_function
|
13
|
+
|
14
|
+
import re
|
15
|
+
import sys
|
16
|
+
import time
|
12
17
|
|
13
18
|
from pygments.filter import apply_filters, Filter
|
14
19
|
from pygments.filters import get_filter_by_name
|
15
20
|
from pygments.token import Error, Text, Other, _TokenType
|
16
21
|
from pygments.util import get_bool_opt, get_int_opt, get_list_opt, \
|
17
|
-
|
18
|
-
|
22
|
+
make_analysator, text_type, add_metaclass, iteritems, Future, guess_decode
|
23
|
+
from pygments.regexopt import regex_opt
|
19
24
|
|
20
25
|
__all__ = ['Lexer', 'RegexLexer', 'ExtendedRegexLexer', 'DelegatingLexer',
|
21
|
-
'LexerContext', 'include', 'inherit', 'bygroups', 'using', 'this',
|
26
|
+
'LexerContext', 'include', 'inherit', 'bygroups', 'using', 'this',
|
27
|
+
'default', 'words']
|
22
28
|
|
23
29
|
|
24
30
|
_encoding_map = [(b'\xef\xbb\xbf', 'utf-8'),
|
@@ -36,10 +42,10 @@ class LexerMeta(type):
|
|
36
42
|
static methods which always return float values.
|
37
43
|
"""
|
38
44
|
|
39
|
-
def __new__(
|
45
|
+
def __new__(mcs, name, bases, d):
|
40
46
|
if 'analyse_text' in d:
|
41
47
|
d['analyse_text'] = make_analysator(d['analyse_text'])
|
42
|
-
return type.__new__(
|
48
|
+
return type.__new__(mcs, name, bases, d)
|
43
49
|
|
44
50
|
|
45
51
|
@add_metaclass(LexerMeta)
|
@@ -64,9 +70,11 @@ class Lexer(object):
|
|
64
70
|
``encoding``
|
65
71
|
If given, must be an encoding name. This encoding will be used to
|
66
72
|
convert the input string to Unicode, if it is not already a Unicode
|
67
|
-
string (default: ``'
|
68
|
-
Can also be ``'
|
69
|
-
|
73
|
+
string (default: ``'guess'``, which uses a simple UTF-8 / Locale /
|
74
|
+
Latin1 detection. Can also be ``'chardet'`` to use the chardet
|
75
|
+
library, if it is installed.
|
76
|
+
``inencoding``
|
77
|
+
Overrides the ``encoding`` if given.
|
70
78
|
"""
|
71
79
|
|
72
80
|
#: Name of the lexer
|
@@ -93,8 +101,8 @@ class Lexer(object):
|
|
93
101
|
self.stripall = get_bool_opt(options, 'stripall', False)
|
94
102
|
self.ensurenl = get_bool_opt(options, 'ensurenl', True)
|
95
103
|
self.tabsize = get_int_opt(options, 'tabsize', 0)
|
96
|
-
self.encoding = options.get('encoding', '
|
97
|
-
|
104
|
+
self.encoding = options.get('encoding', 'guess')
|
105
|
+
self.encoding = options.get('inencoding') or self.encoding
|
98
106
|
self.filters = []
|
99
107
|
for filter_ in get_list_opt(options, 'filters', ()):
|
100
108
|
self.add_filter(filter_)
|
@@ -139,12 +147,7 @@ class Lexer(object):
|
|
139
147
|
"""
|
140
148
|
if not isinstance(text, text_type):
|
141
149
|
if self.encoding == 'guess':
|
142
|
-
|
143
|
-
text = text.decode('utf-8')
|
144
|
-
if text.startswith(u'\ufeff'):
|
145
|
-
text = text[len(u'\ufeff'):]
|
146
|
-
except UnicodeDecodeError:
|
147
|
-
text = text.decode('latin1')
|
150
|
+
text, _ = guess_decode(text)
|
148
151
|
elif self.encoding == 'chardet':
|
149
152
|
try:
|
150
153
|
import chardet
|
@@ -160,7 +163,7 @@ class Lexer(object):
|
|
160
163
|
break
|
161
164
|
# no BOM found, so use chardet
|
162
165
|
if decoded is None:
|
163
|
-
enc = chardet.detect(text[:1024])
|
166
|
+
enc = chardet.detect(text[:1024]) # Guess using first 1KB
|
164
167
|
decoded = text.decode(enc.get('encoding') or 'utf-8',
|
165
168
|
'replace')
|
166
169
|
text = decoded
|
@@ -185,7 +188,7 @@ class Lexer(object):
|
|
185
188
|
text += '\n'
|
186
189
|
|
187
190
|
def streamer():
|
188
|
-
for
|
191
|
+
for _, t, v in self.get_tokens_unprocessed(text):
|
189
192
|
yield t, v
|
190
193
|
stream = streamer()
|
191
194
|
if not unfiltered:
|
@@ -237,12 +240,12 @@ class DelegatingLexer(Lexer):
|
|
237
240
|
self.root_lexer.get_tokens_unprocessed(buffered))
|
238
241
|
|
239
242
|
|
240
|
-
|
243
|
+
# ------------------------------------------------------------------------------
|
241
244
|
# RegexLexer and ExtendedRegexLexer
|
242
245
|
#
|
243
246
|
|
244
247
|
|
245
|
-
class include(str):
|
248
|
+
class include(str): # pylint: disable=invalid-name
|
246
249
|
"""
|
247
250
|
Indicates that a state should include rules from another state.
|
248
251
|
"""
|
@@ -256,10 +259,10 @@ class _inherit(object):
|
|
256
259
|
def __repr__(self):
|
257
260
|
return 'inherit'
|
258
261
|
|
259
|
-
inherit = _inherit()
|
262
|
+
inherit = _inherit() # pylint: disable=invalid-name
|
260
263
|
|
261
264
|
|
262
|
-
class combined(tuple):
|
265
|
+
class combined(tuple): # pylint: disable=invalid-name
|
263
266
|
"""
|
264
267
|
Indicates a state combined from multiple states.
|
265
268
|
"""
|
@@ -316,8 +319,8 @@ def bygroups(*args):
|
|
316
319
|
if data is not None:
|
317
320
|
if ctx:
|
318
321
|
ctx.pos = match.start(i + 1)
|
319
|
-
for item in action(lexer,
|
320
|
-
data), ctx):
|
322
|
+
for item in action(lexer,
|
323
|
+
_PseudoMatch(match.start(i + 1), data), ctx):
|
321
324
|
if item:
|
322
325
|
yield item
|
323
326
|
if ctx:
|
@@ -387,26 +390,46 @@ class default:
|
|
387
390
|
"""
|
388
391
|
Indicates a state or state action (e.g. #pop) to apply.
|
389
392
|
For example default('#pop') is equivalent to ('', Token, '#pop')
|
390
|
-
Note that state tuples may be used as well
|
393
|
+
Note that state tuples may be used as well.
|
394
|
+
|
395
|
+
.. versionadded:: 2.0
|
391
396
|
"""
|
392
397
|
def __init__(self, state):
|
393
398
|
self.state = state
|
394
399
|
|
395
400
|
|
401
|
+
class words(Future):
|
402
|
+
"""
|
403
|
+
Indicates a list of literal words that is transformed into an optimized
|
404
|
+
regex that matches any of the words.
|
405
|
+
|
406
|
+
.. versionadded:: 2.0
|
407
|
+
"""
|
408
|
+
def __init__(self, words, prefix='', suffix=''):
|
409
|
+
self.words = words
|
410
|
+
self.prefix = prefix
|
411
|
+
self.suffix = suffix
|
412
|
+
|
413
|
+
def get(self):
|
414
|
+
return regex_opt(self.words, prefix=self.prefix, suffix=self.suffix)
|
415
|
+
|
416
|
+
|
396
417
|
class RegexLexerMeta(LexerMeta):
|
397
418
|
"""
|
398
419
|
Metaclass for RegexLexer, creates the self._tokens attribute from
|
399
420
|
self.tokens on the first instantiation.
|
400
421
|
"""
|
401
422
|
|
402
|
-
def _process_regex(cls, regex, rflags):
|
423
|
+
def _process_regex(cls, regex, rflags, state):
|
403
424
|
"""Preprocess the regular expression component of a token definition."""
|
425
|
+
if isinstance(regex, Future):
|
426
|
+
regex = regex.get()
|
404
427
|
return re.compile(regex, rflags).match
|
405
428
|
|
406
429
|
def _process_token(cls, token):
|
407
430
|
"""Preprocess the token component of a token definition."""
|
408
431
|
assert type(token) is _TokenType or callable(token), \
|
409
|
-
|
432
|
+
'token type must be simple type or callable, not %r' % (token,)
|
410
433
|
return token
|
411
434
|
|
412
435
|
def _process_new_state(cls, new_state, unprocessed, processed):
|
@@ -439,7 +462,7 @@ class RegexLexerMeta(LexerMeta):
|
|
439
462
|
for istate in new_state:
|
440
463
|
assert (istate in unprocessed or
|
441
464
|
istate in ('#pop', '#push')), \
|
442
|
-
|
465
|
+
'unknown new state ' + istate
|
443
466
|
return new_state
|
444
467
|
else:
|
445
468
|
assert False, 'unknown new state def %r' % new_state
|
@@ -460,7 +483,9 @@ class RegexLexerMeta(LexerMeta):
|
|
460
483
|
str(tdef)))
|
461
484
|
continue
|
462
485
|
if isinstance(tdef, _inherit):
|
463
|
-
# processed already
|
486
|
+
# should be processed already, but may not in the case of:
|
487
|
+
# 1. the state has no counterpart in any parent
|
488
|
+
# 2. the state includes more than one 'inherit'
|
464
489
|
continue
|
465
490
|
if isinstance(tdef, default):
|
466
491
|
new_state = cls._process_new_state(tdef.state, unprocessed, processed)
|
@@ -470,7 +495,7 @@ class RegexLexerMeta(LexerMeta):
|
|
470
495
|
assert type(tdef) is tuple, "wrong rule def %r" % tdef
|
471
496
|
|
472
497
|
try:
|
473
|
-
rex = cls._process_regex(tdef[0], rflags)
|
498
|
+
rex = cls._process_regex(tdef[0], rflags, state)
|
474
499
|
except Exception as err:
|
475
500
|
raise ValueError("uncompilable regex %r in state %r of %r: %s" %
|
476
501
|
(tdef[0], state, cls, err))
|
@@ -508,12 +533,16 @@ class RegexLexerMeta(LexerMeta):
|
|
508
533
|
"""
|
509
534
|
tokens = {}
|
510
535
|
inheritable = {}
|
511
|
-
for c in
|
536
|
+
for c in cls.__mro__:
|
512
537
|
toks = c.__dict__.get('tokens', {})
|
513
538
|
|
514
539
|
for state, items in iteritems(toks):
|
515
540
|
curitems = tokens.get(state)
|
516
541
|
if curitems is None:
|
542
|
+
# N.b. because this is assigned by reference, sufficiently
|
543
|
+
# deep hierarchies are processed incrementally (e.g. for
|
544
|
+
# A(B), B(C), C(RegexLexer), B will be premodified so X(B)
|
545
|
+
# will not see any inherits in B).
|
517
546
|
tokens[state] = items
|
518
547
|
try:
|
519
548
|
inherit_ndx = items.index(inherit)
|
@@ -529,6 +558,8 @@ class RegexLexerMeta(LexerMeta):
|
|
529
558
|
# Replace the "inherit" value with the items
|
530
559
|
curitems[inherit_ndx:inherit_ndx+1] = items
|
531
560
|
try:
|
561
|
+
# N.b. this is the index in items (that is, the superclass
|
562
|
+
# copy), so offset required when storing below.
|
532
563
|
new_inh_ndx = items.index(inherit)
|
533
564
|
except ValueError:
|
534
565
|
pass
|
@@ -623,6 +654,8 @@ class RegexLexer(Lexer):
|
|
623
654
|
statetokens = tokendefs[statestack[-1]]
|
624
655
|
break
|
625
656
|
else:
|
657
|
+
# We are here only if all state tokens have been considered
|
658
|
+
# and there was not a match on any of them.
|
626
659
|
try:
|
627
660
|
if text[pos] == '\n':
|
628
661
|
# at EOL, reset state to "root"
|
@@ -645,7 +678,7 @@ class LexerContext(object):
|
|
645
678
|
def __init__(self, text, pos, stack=None, end=None):
|
646
679
|
self.text = text
|
647
680
|
self.pos = pos
|
648
|
-
self.end = end or len(text)
|
681
|
+
self.end = end or len(text) # end=0 not supported ;-)
|
649
682
|
self.stack = stack or ['root']
|
650
683
|
|
651
684
|
def __repr__(self):
|
@@ -783,3 +816,56 @@ def do_insertions(insertions, tokens):
|
|
783
816
|
except StopIteration:
|
784
817
|
insleft = False
|
785
818
|
break # not strictly necessary
|
819
|
+
|
820
|
+
|
821
|
+
class ProfilingRegexLexerMeta(RegexLexerMeta):
|
822
|
+
"""Metaclass for ProfilingRegexLexer, collects regex timing info."""
|
823
|
+
|
824
|
+
def _process_regex(cls, regex, rflags, state):
|
825
|
+
if isinstance(regex, words):
|
826
|
+
rex = regex_opt(regex.words, prefix=regex.prefix,
|
827
|
+
suffix=regex.suffix)
|
828
|
+
else:
|
829
|
+
rex = regex
|
830
|
+
compiled = re.compile(rex, rflags)
|
831
|
+
|
832
|
+
def match_func(text, pos, endpos=sys.maxsize):
|
833
|
+
info = cls._prof_data[-1].setdefault((state, rex), [0, 0.0])
|
834
|
+
t0 = time.time()
|
835
|
+
res = compiled.match(text, pos, endpos)
|
836
|
+
t1 = time.time()
|
837
|
+
info[0] += 1
|
838
|
+
info[1] += t1 - t0
|
839
|
+
return res
|
840
|
+
return match_func
|
841
|
+
|
842
|
+
|
843
|
+
@add_metaclass(ProfilingRegexLexerMeta)
|
844
|
+
class ProfilingRegexLexer(RegexLexer):
|
845
|
+
"""Drop-in replacement for RegexLexer that does profiling of its regexes."""
|
846
|
+
|
847
|
+
_prof_data = []
|
848
|
+
_prof_sort_index = 4 # defaults to time per call
|
849
|
+
|
850
|
+
def get_tokens_unprocessed(self, text, stack=('root',)):
|
851
|
+
# this needs to be a stack, since using(this) will produce nested calls
|
852
|
+
self.__class__._prof_data.append({})
|
853
|
+
for tok in RegexLexer.get_tokens_unprocessed(self, text, stack):
|
854
|
+
yield tok
|
855
|
+
rawdata = self.__class__._prof_data.pop()
|
856
|
+
data = sorted(((s, repr(r).strip('u\'').replace('\\\\', '\\')[:65],
|
857
|
+
n, 1000 * t, 1000 * t / n)
|
858
|
+
for ((s, r), (n, t)) in rawdata.items()),
|
859
|
+
key=lambda x: x[self._prof_sort_index],
|
860
|
+
reverse=True)
|
861
|
+
sum_total = sum(x[3] for x in data)
|
862
|
+
|
863
|
+
print()
|
864
|
+
print('Profiling result for %s lexing %d chars in %.3f ms' %
|
865
|
+
(self.__class__.__name__, len(text), sum_total))
|
866
|
+
print('=' * 110)
|
867
|
+
print('%-20s %-64s ncalls tottime percall' % ('state', 'regex'))
|
868
|
+
print('-' * 110)
|
869
|
+
for d in data:
|
870
|
+
print('%-20s %-65s %5d %8.4f %8.4f' % d)
|
871
|
+
print('=' * 110)
|
@@ -5,20 +5,20 @@
|
|
5
5
|
|
6
6
|
Pygments lexers.
|
7
7
|
|
8
|
-
:copyright: Copyright 2006-
|
8
|
+
:copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
|
9
9
|
:license: BSD, see LICENSE for details.
|
10
10
|
"""
|
11
11
|
|
12
|
+
import re
|
12
13
|
import sys
|
13
14
|
import types
|
14
15
|
import fnmatch
|
15
|
-
import re
|
16
16
|
from os.path import basename
|
17
17
|
|
18
18
|
from pygments.lexers._mapping import LEXERS
|
19
19
|
from pygments.modeline import get_filetype_from_buffer
|
20
20
|
from pygments.plugin import find_plugin_lexers
|
21
|
-
from pygments.util import ClassNotFound, itervalues
|
21
|
+
from pygments.util import ClassNotFound, itervalues, guess_decode
|
22
22
|
|
23
23
|
|
24
24
|
__all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class',
|
@@ -27,23 +27,17 @@ __all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class',
|
|
27
27
|
_lexer_cache = {}
|
28
28
|
_pattern_cache = {}
|
29
29
|
|
30
|
+
|
30
31
|
def _fn_matches(fn, glob):
|
31
|
-
"""
|
32
|
-
Return whether the supplied file name fn matches pattern filename
|
33
|
-
"""
|
32
|
+
"""Return whether the supplied file name fn matches pattern filename."""
|
34
33
|
if glob not in _pattern_cache:
|
35
|
-
pattern = re.compile(fnmatch.translate(glob))
|
36
|
-
|
37
|
-
|
38
|
-
pattern = _pattern_cache[glob]
|
39
|
-
|
40
|
-
return pattern.match(fn)
|
34
|
+
pattern = _pattern_cache[glob] = re.compile(fnmatch.translate(glob))
|
35
|
+
return pattern.match(fn)
|
36
|
+
return _pattern_cache[glob].match(fn)
|
41
37
|
|
42
38
|
|
43
39
|
def _load_lexers(module_name):
|
44
|
-
"""
|
45
|
-
Load a lexer (and all others in the module too).
|
46
|
-
"""
|
40
|
+
"""Load a lexer (and all others in the module too)."""
|
47
41
|
mod = __import__(module_name, None, None, ['__all__'])
|
48
42
|
for lexer_name in mod.__all__:
|
49
43
|
cls = getattr(mod, lexer_name)
|
@@ -51,8 +45,7 @@ def _load_lexers(module_name):
|
|
51
45
|
|
52
46
|
|
53
47
|
def get_all_lexers():
|
54
|
-
"""
|
55
|
-
Return a generator of tuples in the form ``(name, aliases,
|
48
|
+
"""Return a generator of tuples in the form ``(name, aliases,
|
56
49
|
filenames, mimetypes)`` of all know lexers.
|
57
50
|
"""
|
58
51
|
for item in itervalues(LEXERS):
|
@@ -62,8 +55,9 @@ def get_all_lexers():
|
|
62
55
|
|
63
56
|
|
64
57
|
def find_lexer_class(name):
|
65
|
-
"""
|
66
|
-
|
58
|
+
"""Lookup a lexer class by name.
|
59
|
+
|
60
|
+
Return None if not found.
|
67
61
|
"""
|
68
62
|
if name in _lexer_cache:
|
69
63
|
return _lexer_cache[name]
|
@@ -78,9 +72,32 @@ def find_lexer_class(name):
|
|
78
72
|
return cls
|
79
73
|
|
80
74
|
|
81
|
-
def
|
75
|
+
def find_lexer_class_by_name(alias):
|
76
|
+
"""Lookup a lexer class by alias.
|
77
|
+
|
78
|
+
Like `get_lexer_by_name`, but does not instantiate the class.
|
79
|
+
|
80
|
+
.. versionadded:: 2.2
|
82
81
|
"""
|
83
|
-
|
82
|
+
if not _alias:
|
83
|
+
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
84
|
+
# lookup builtin lexers
|
85
|
+
for module_name, name, aliases, _, _ in itervalues(LEXERS):
|
86
|
+
if _alias.lower() in aliases:
|
87
|
+
if name not in _lexer_cache:
|
88
|
+
_load_lexers(module_name)
|
89
|
+
return _lexer_cache[name]
|
90
|
+
# continue with lexers from setuptools entrypoints
|
91
|
+
for cls in find_plugin_lexers():
|
92
|
+
if _alias.lower() in cls.aliases:
|
93
|
+
return cls
|
94
|
+
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
95
|
+
|
96
|
+
|
97
|
+
def get_lexer_by_name(_alias, **options):
|
98
|
+
"""Get a lexer by an alias.
|
99
|
+
|
100
|
+
Raises ClassNotFound if not found.
|
84
101
|
"""
|
85
102
|
if not _alias:
|
86
103
|
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
@@ -93,16 +110,18 @@ def get_lexer_by_name(_alias, **options):
|
|
93
110
|
return _lexer_cache[name](**options)
|
94
111
|
# continue with lexers from setuptools entrypoints
|
95
112
|
for cls in find_plugin_lexers():
|
96
|
-
if _alias in cls.aliases:
|
113
|
+
if _alias.lower() in cls.aliases:
|
97
114
|
return cls(**options)
|
98
115
|
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
99
116
|
|
100
117
|
|
101
|
-
def
|
102
|
-
"""
|
103
|
-
|
104
|
-
pattern, use ``analyse_text()`` to
|
105
|
-
appropriate.
|
118
|
+
def find_lexer_class_for_filename(_fn, code=None):
|
119
|
+
"""Get a lexer for a filename.
|
120
|
+
|
121
|
+
If multiple lexers match the filename pattern, use ``analyse_text()`` to
|
122
|
+
figure out which one is more appropriate.
|
123
|
+
|
124
|
+
Returns None if not found.
|
106
125
|
"""
|
107
126
|
matches = []
|
108
127
|
fn = basename(_fn)
|
@@ -119,7 +138,7 @@ def get_lexer_for_filename(_fn, code=None, **options):
|
|
119
138
|
|
120
139
|
if sys.version_info > (3,) and isinstance(code, bytes):
|
121
140
|
# decode it, since all analyse_text functions expect unicode
|
122
|
-
code = code
|
141
|
+
code = guess_decode(code)
|
123
142
|
|
124
143
|
def get_rating(info):
|
125
144
|
cls, filename = info
|
@@ -135,14 +154,28 @@ def get_lexer_for_filename(_fn, code=None, **options):
|
|
135
154
|
|
136
155
|
if matches:
|
137
156
|
matches.sort(key=get_rating)
|
138
|
-
#print "Possible lexers, after sort:", matches
|
139
|
-
return matches[-1][0]
|
140
|
-
raise ClassNotFound('no lexer for filename %r found' % _fn)
|
157
|
+
# print "Possible lexers, after sort:", matches
|
158
|
+
return matches[-1][0]
|
141
159
|
|
142
160
|
|
143
|
-
def
|
161
|
+
def get_lexer_for_filename(_fn, code=None, **options):
|
162
|
+
"""Get a lexer for a filename.
|
163
|
+
|
164
|
+
If multiple lexers match the filename pattern, use ``analyse_text()`` to
|
165
|
+
figure out which one is more appropriate.
|
166
|
+
|
167
|
+
Raises ClassNotFound if not found.
|
144
168
|
"""
|
145
|
-
|
169
|
+
res = find_lexer_class_for_filename(_fn, code)
|
170
|
+
if not res:
|
171
|
+
raise ClassNotFound('no lexer for filename %r found' % _fn)
|
172
|
+
return res(**options)
|
173
|
+
|
174
|
+
|
175
|
+
def get_lexer_for_mimetype(_mime, **options):
|
176
|
+
"""Get a lexer for a mimetype.
|
177
|
+
|
178
|
+
Raises ClassNotFound if not found.
|
146
179
|
"""
|
147
180
|
for modname, name, _, _, mimetypes in itervalues(LEXERS):
|
148
181
|
if _mime in mimetypes:
|
@@ -155,17 +188,16 @@ def get_lexer_for_mimetype(_mime, **options):
|
|
155
188
|
raise ClassNotFound('no lexer for mimetype %r found' % _mime)
|
156
189
|
|
157
190
|
|
158
|
-
def _iter_lexerclasses():
|
159
|
-
"""
|
160
|
-
Return an iterator over all lexer classes.
|
161
|
-
"""
|
191
|
+
def _iter_lexerclasses(plugins=True):
|
192
|
+
"""Return an iterator over all lexer classes."""
|
162
193
|
for key in sorted(LEXERS):
|
163
194
|
module_name, name = LEXERS[key][:2]
|
164
195
|
if name not in _lexer_cache:
|
165
196
|
_load_lexers(module_name)
|
166
197
|
yield _lexer_cache[name]
|
167
|
-
|
168
|
-
|
198
|
+
if plugins:
|
199
|
+
for lexer in find_plugin_lexers():
|
200
|
+
yield lexer
|
169
201
|
|
170
202
|
|
171
203
|
def guess_lexer_for_filename(_fn, _text, **options):
|
@@ -185,16 +217,17 @@ def guess_lexer_for_filename(_fn, _text, **options):
|
|
185
217
|
<pygments.lexers.templates.CssPhpLexer object at 0xb7ba518c>
|
186
218
|
"""
|
187
219
|
fn = basename(_fn)
|
188
|
-
primary =
|
220
|
+
primary = {}
|
189
221
|
matching_lexers = set()
|
190
222
|
for lexer in _iter_lexerclasses():
|
191
223
|
for filename in lexer.filenames:
|
192
224
|
if _fn_matches(fn, filename):
|
193
225
|
matching_lexers.add(lexer)
|
194
|
-
primary =
|
226
|
+
primary[lexer] = True
|
195
227
|
for filename in lexer.alias_filenames:
|
196
228
|
if _fn_matches(fn, filename):
|
197
229
|
matching_lexers.add(lexer)
|
230
|
+
primary[lexer] = False
|
198
231
|
if not matching_lexers:
|
199
232
|
raise ClassNotFound('no lexer for filename %r found' % fn)
|
200
233
|
if len(matching_lexers) == 1:
|
@@ -206,21 +239,20 @@ def guess_lexer_for_filename(_fn, _text, **options):
|
|
206
239
|
return lexer(**options)
|
207
240
|
result.append((rv, lexer))
|
208
241
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
242
|
+
def type_sort(t):
|
243
|
+
# sort by:
|
244
|
+
# - analyse score
|
245
|
+
# - is primary filename pattern?
|
246
|
+
# - priority
|
247
|
+
# - last resort: class name
|
248
|
+
return (t[0], primary[t[1]], t[1].priority, t[1].__name__)
|
213
249
|
result.sort(key=type_sort)
|
214
250
|
|
215
|
-
if not result[-1][0] and primary is not None:
|
216
|
-
return primary(**options)
|
217
251
|
return result[-1][1](**options)
|
218
252
|
|
219
253
|
|
220
254
|
def guess_lexer(_text, **options):
|
221
|
-
"""
|
222
|
-
Guess a lexer by strong distinctions in the text (eg, shebang).
|
223
|
-
"""
|
255
|
+
"""Guess a lexer by strong distinctions in the text (eg, shebang)."""
|
224
256
|
|
225
257
|
# try to get a vim modeline first
|
226
258
|
ft = get_filetype_from_buffer(_text)
|
@@ -256,8 +288,8 @@ class _automodule(types.ModuleType):
|
|
256
288
|
raise AttributeError(name)
|
257
289
|
|
258
290
|
|
259
|
-
oldmod = sys.modules[
|
260
|
-
newmod = _automodule(
|
291
|
+
oldmod = sys.modules[__name__]
|
292
|
+
newmod = _automodule(__name__)
|
261
293
|
newmod.__dict__.update(oldmod.__dict__)
|
262
|
-
sys.modules[
|
294
|
+
sys.modules[__name__] = newmod
|
263
295
|
del newmod.newmod, newmod.oldmod, newmod.sys, newmod.types
|