pygments.rb-jruby 0.5.4
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 +7 -0
- data/.gitignore +6 -0
- data/CHANGELOG.md +71 -0
- data/Gemfile +2 -0
- data/LICENSE +17 -0
- data/README.md +118 -0
- data/Rakefile +66 -0
- data/bench.rb +22 -0
- data/cache-lexers.rb +8 -0
- data/lexers +0 -0
- data/lib/pygments.rb +8 -0
- data/lib/pygments/lexer.rb +148 -0
- data/lib/pygments/mentos.py +351 -0
- data/lib/pygments/popen.rb +404 -0
- data/lib/pygments/version.rb +3 -0
- data/pygments.rb.gemspec +24 -0
- data/test/test_data.c +2581 -0
- data/test/test_data.py +514 -0
- data/test/test_data_generated +2582 -0
- data/test/test_pygments.rb +287 -0
- data/vendor/custom_lexers/github.py +565 -0
- data/vendor/pygments-main/AUTHORS +153 -0
- data/vendor/pygments-main/CHANGES +889 -0
- data/vendor/pygments-main/LICENSE +25 -0
- data/vendor/pygments-main/MANIFEST.in +6 -0
- data/vendor/pygments-main/Makefile +59 -0
- data/vendor/pygments-main/REVISION +1 -0
- data/vendor/pygments-main/TODO +15 -0
- data/vendor/pygments-main/docs/generate.py +472 -0
- data/vendor/pygments-main/docs/pygmentize.1 +94 -0
- data/vendor/pygments-main/docs/src/api.txt +270 -0
- data/vendor/pygments-main/docs/src/authors.txt +5 -0
- data/vendor/pygments-main/docs/src/changelog.txt +5 -0
- data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
- data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
- data/vendor/pygments-main/docs/src/filters.txt +42 -0
- data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
- data/vendor/pygments-main/docs/src/formatters.txt +48 -0
- data/vendor/pygments-main/docs/src/index.txt +69 -0
- data/vendor/pygments-main/docs/src/installation.txt +71 -0
- data/vendor/pygments-main/docs/src/integrate.txt +48 -0
- data/vendor/pygments-main/docs/src/java.txt +70 -0
- data/vendor/pygments-main/docs/src/lexerdevelopment.txt +603 -0
- data/vendor/pygments-main/docs/src/lexers.txt +67 -0
- data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
- data/vendor/pygments-main/docs/src/plugins.txt +93 -0
- data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
- data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
- data/vendor/pygments-main/docs/src/styles.txt +143 -0
- data/vendor/pygments-main/docs/src/tokens.txt +349 -0
- data/vendor/pygments-main/docs/src/unicode.txt +49 -0
- data/vendor/pygments-main/external/autopygmentize +64 -0
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
- data/vendor/pygments-main/external/markdown-processor.py +67 -0
- data/vendor/pygments-main/external/moin-parser.py +112 -0
- data/vendor/pygments-main/external/pygments.bashcomp +38 -0
- data/vendor/pygments-main/external/rst-directive-old.py +77 -0
- data/vendor/pygments-main/external/rst-directive.py +83 -0
- data/vendor/pygments-main/ez_setup.py +276 -0
- data/vendor/pygments-main/pygmentize +7 -0
- data/vendor/pygments-main/pygments/__init__.py +91 -0
- data/vendor/pygments-main/pygments/cmdline.py +441 -0
- data/vendor/pygments-main/pygments/console.py +74 -0
- data/vendor/pygments-main/pygments/filter.py +74 -0
- data/vendor/pygments-main/pygments/filters/__init__.py +356 -0
- data/vendor/pygments-main/pygments/formatter.py +95 -0
- data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
- data/vendor/pygments-main/pygments/formatters/_mapping.py +92 -0
- data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
- data/vendor/pygments-main/pygments/formatters/html.py +821 -0
- data/vendor/pygments-main/pygments/formatters/img.py +553 -0
- data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
- data/vendor/pygments-main/pygments/formatters/other.py +115 -0
- data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
- data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
- data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
- data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
- data/vendor/pygments-main/pygments/lexer.py +765 -0
- data/vendor/pygments-main/pygments/lexers/__init__.py +240 -0
- data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
- data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
- data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
- data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
- data/vendor/pygments-main/pygments/lexers/_mapping.py +354 -0
- data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
- data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +233 -0
- data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +40 -0
- data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -0
- data/vendor/pygments-main/pygments/lexers/agile.py +2290 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +398 -0
- data/vendor/pygments-main/pygments/lexers/compiled.py +3723 -0
- data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +671 -0
- data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +2731 -0
- data/vendor/pygments-main/pygments/lexers/github.py +565 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +1112 -0
- data/vendor/pygments-main/pygments/lexers/math.py +1918 -0
- data/vendor/pygments-main/pygments/lexers/other.py +3778 -0
- data/vendor/pygments-main/pygments/lexers/parsers.py +778 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +424 -0
- data/vendor/pygments-main/pygments/lexers/special.py +100 -0
- data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
- data/vendor/pygments-main/pygments/lexers/templates.py +1742 -0
- data/vendor/pygments-main/pygments/lexers/text.py +1893 -0
- data/vendor/pygments-main/pygments/lexers/web.py +4045 -0
- data/vendor/pygments-main/pygments/modeline.py +40 -0
- data/vendor/pygments-main/pygments/plugin.py +74 -0
- data/vendor/pygments-main/pygments/scanner.py +104 -0
- data/vendor/pygments-main/pygments/style.py +117 -0
- data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
- data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
- data/vendor/pygments-main/pygments/styles/borland.py +51 -0
- data/vendor/pygments-main/pygments/styles/bw.py +49 -0
- data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
- data/vendor/pygments-main/pygments/styles/default.py +73 -0
- data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
- data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
- data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
- data/vendor/pygments-main/pygments/styles/manni.py +75 -0
- data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
- data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
- data/vendor/pygments-main/pygments/styles/native.py +65 -0
- data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
- data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
- data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
- data/vendor/pygments-main/pygments/styles/tango.py +141 -0
- data/vendor/pygments-main/pygments/styles/trac.py +63 -0
- data/vendor/pygments-main/pygments/styles/vim.py +63 -0
- data/vendor/pygments-main/pygments/styles/vs.py +38 -0
- data/vendor/pygments-main/pygments/token.py +195 -0
- data/vendor/pygments-main/pygments/unistring.py +140 -0
- data/vendor/pygments-main/pygments/util.py +277 -0
- data/vendor/pygments-main/scripts/check_sources.py +242 -0
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +32 -0
- data/vendor/pygments-main/scripts/epydoc.css +280 -0
- data/vendor/pygments-main/scripts/find_codetags.py +205 -0
- data/vendor/pygments-main/scripts/find_error.py +170 -0
- data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
- data/vendor/pygments-main/scripts/pylintrc +301 -0
- data/vendor/pygments-main/scripts/reindent.py +291 -0
- data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
- data/vendor/pygments-main/setup.cfg +7 -0
- data/vendor/pygments-main/setup.py +90 -0
- data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
- data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
- data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
- data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
- data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
- data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
- data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
- data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
- data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
- data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
- data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
- data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
- data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
- data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
- data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
- data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
- data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
- data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
- data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
- data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
- data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
- data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
- data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
- data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
- data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
- data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
- data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
- data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
- data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
- data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
- data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
- data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
- data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
- data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
- data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
- data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
- data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
- data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
- data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
- data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
- data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
- data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
- data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
- data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
- data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
- data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
- data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
- data/vendor/pygments-main/tests/examplefiles/classes.dylan +125 -0
- data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
- data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
- data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
- data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
- data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
- data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
- data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
- data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
- data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
- data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
- data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
- data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
- data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
- data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
- data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
- data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
- data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
- data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
- data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
- data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
- data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
- data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
- data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
- data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
- data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
- data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
- data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
- data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
- data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
- data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
- data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
- data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
- data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
- data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
- data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
- data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
- data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
- data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
- data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
- data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
- data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
- data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
- data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
- data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
- data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
- data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
- data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
- data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
- data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
- data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
- data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
- data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
- data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
- data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
- data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
- data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
- data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
- data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
- data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
- data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
- data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
- data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
- data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
- data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
- data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
- data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
- data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
- data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
- data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
- data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
- data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
- data/vendor/pygments-main/tests/examplefiles/http_request_example +15 -0
- data/vendor/pygments-main/tests/examplefiles/http_response_example +29 -0
- data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
- data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
- data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
- data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
- data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
- data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
- data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
- data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
- data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
- data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
- data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
- data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
- data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
- data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
- data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
- data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
- data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
- data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
- data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
- data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
- data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
- data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
- data/vendor/pygments-main/tests/examplefiles/matlab_sample +30 -0
- data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
- data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
- data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
- data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
- data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
- data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
- data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
- data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
- data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
- data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
- data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
- data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
- data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example.m +32 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
- data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
- data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
- data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
- data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
- data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
- data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
- data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
- data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
- data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
- data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
- data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
- data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
- data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
- data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
- data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
- data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
- data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
- data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
- data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
- data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
- data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
- data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
- data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
- data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
- data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
- data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
- data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
- data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
- data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
- data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
- data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
- data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
- data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
- data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
- data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
- data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
- data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
- data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
- data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
- data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
- data/vendor/pygments-main/tests/examplefiles/test.R +153 -0
- data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
- data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
- data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
- data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
- data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
- data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
- data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
- data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
- data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
- data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
- data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
- data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
- data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
- data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
- data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
- data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
- data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
- data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
- data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
- data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
- data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
- data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
- data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
- data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
- data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
- data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
- data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
- data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
- data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
- data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
- data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
- data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
- data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
- data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
- data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
- data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
- data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
- data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
- data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
- data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
- data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
- data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
- data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
- data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
- data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
- data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
- data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
- data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
- data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
- data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
- data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
- data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
- data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
- data/vendor/pygments-main/tests/examplefiles/type.lisp +1218 -0
- data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
- data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
- data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
- data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
- data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
- data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
- data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
- data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
- data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
- data/vendor/pygments-main/tests/old_run.py +138 -0
- data/vendor/pygments-main/tests/run.py +49 -0
- data/vendor/pygments-main/tests/support.py +15 -0
- data/vendor/pygments-main/tests/support/tags +36 -0
- data/vendor/pygments-main/tests/test_basic_api.py +295 -0
- data/vendor/pygments-main/tests/test_clexer.py +31 -0
- data/vendor/pygments-main/tests/test_cmdline.py +105 -0
- data/vendor/pygments-main/tests/test_examplefiles.py +99 -0
- data/vendor/pygments-main/tests/test_html_formatter.py +178 -0
- data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
- data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
- data/vendor/pygments-main/tests/test_perllexer.py +137 -0
- data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
- data/vendor/pygments-main/tests/test_token.py +46 -0
- data/vendor/pygments-main/tests/test_using_api.py +40 -0
- data/vendor/pygments-main/tests/test_util.py +135 -0
- data/vendor/simplejson/.gitignore +10 -0
- data/vendor/simplejson/.travis.yml +5 -0
- data/vendor/simplejson/CHANGES.txt +291 -0
- data/vendor/simplejson/LICENSE.txt +19 -0
- data/vendor/simplejson/MANIFEST.in +5 -0
- data/vendor/simplejson/README.rst +19 -0
- data/vendor/simplejson/conf.py +179 -0
- data/vendor/simplejson/index.rst +628 -0
- data/vendor/simplejson/scripts/make_docs.py +18 -0
- data/vendor/simplejson/setup.py +104 -0
- data/vendor/simplejson/simplejson/__init__.py +510 -0
- data/vendor/simplejson/simplejson/_speedups.c +2745 -0
- data/vendor/simplejson/simplejson/decoder.py +425 -0
- data/vendor/simplejson/simplejson/encoder.py +567 -0
- data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
- data/vendor/simplejson/simplejson/scanner.py +77 -0
- data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
- data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
- data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
- data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
- data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
- data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
- data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
- data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
- data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
- data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
- data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
- data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
- data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
- data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
- data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
- data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
- data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
- data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
- data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
- data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
- data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
- data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
- data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
- data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
- data/vendor/simplejson/simplejson/tool.py +39 -0
- metadata +557 -0
@@ -0,0 +1,276 @@
|
|
1
|
+
#!python
|
2
|
+
"""Bootstrap setuptools installation
|
3
|
+
|
4
|
+
If you want to use setuptools in your package's setup.py, just include this
|
5
|
+
file in the same directory with it, and add this to the top of your setup.py::
|
6
|
+
|
7
|
+
from ez_setup import use_setuptools
|
8
|
+
use_setuptools()
|
9
|
+
|
10
|
+
If you want to require a specific version of setuptools, set a download
|
11
|
+
mirror, or use an alternate download directory, you can do so by supplying
|
12
|
+
the appropriate options to ``use_setuptools()``.
|
13
|
+
|
14
|
+
This file can also be run as a script to install or upgrade setuptools.
|
15
|
+
"""
|
16
|
+
import sys
|
17
|
+
DEFAULT_VERSION = "0.6c9"
|
18
|
+
DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
|
19
|
+
|
20
|
+
md5_data = {
|
21
|
+
'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
|
22
|
+
'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
|
23
|
+
'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
|
24
|
+
'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
|
25
|
+
'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
|
26
|
+
'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
|
27
|
+
'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
|
28
|
+
'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
|
29
|
+
'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
|
30
|
+
'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
|
31
|
+
'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
|
32
|
+
'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
|
33
|
+
'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
|
34
|
+
'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
|
35
|
+
'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
|
36
|
+
'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
|
37
|
+
'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
|
38
|
+
'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
|
39
|
+
'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
|
40
|
+
'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
|
41
|
+
'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
|
42
|
+
'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
|
43
|
+
'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
|
44
|
+
'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
|
45
|
+
'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
|
46
|
+
'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
|
47
|
+
'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
|
48
|
+
'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
|
49
|
+
'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
|
50
|
+
'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
|
51
|
+
'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
|
52
|
+
'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
|
53
|
+
'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
|
54
|
+
'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
|
55
|
+
}
|
56
|
+
|
57
|
+
import sys, os
|
58
|
+
try: from hashlib import md5
|
59
|
+
except ImportError: from md5 import md5
|
60
|
+
|
61
|
+
def _validate_md5(egg_name, data):
|
62
|
+
if egg_name in md5_data:
|
63
|
+
digest = md5(data).hexdigest()
|
64
|
+
if digest != md5_data[egg_name]:
|
65
|
+
print >>sys.stderr, (
|
66
|
+
"md5 validation of %s failed! (Possible download problem?)"
|
67
|
+
% egg_name
|
68
|
+
)
|
69
|
+
sys.exit(2)
|
70
|
+
return data
|
71
|
+
|
72
|
+
def use_setuptools(
|
73
|
+
version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
|
74
|
+
download_delay=15
|
75
|
+
):
|
76
|
+
"""Automatically find/download setuptools and make it available on sys.path
|
77
|
+
|
78
|
+
`version` should be a valid setuptools version number that is available
|
79
|
+
as an egg for download under the `download_base` URL (which should end with
|
80
|
+
a '/'). `to_dir` is the directory where setuptools will be downloaded, if
|
81
|
+
it is not already available. If `download_delay` is specified, it should
|
82
|
+
be the number of seconds that will be paused before initiating a download,
|
83
|
+
should one be required. If an older version of setuptools is installed,
|
84
|
+
this routine will print a message to ``sys.stderr`` and raise SystemExit in
|
85
|
+
an attempt to abort the calling script.
|
86
|
+
"""
|
87
|
+
was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
|
88
|
+
def do_download():
|
89
|
+
egg = download_setuptools(version, download_base, to_dir, download_delay)
|
90
|
+
sys.path.insert(0, egg)
|
91
|
+
import setuptools; setuptools.bootstrap_install_from = egg
|
92
|
+
try:
|
93
|
+
import pkg_resources
|
94
|
+
except ImportError:
|
95
|
+
return do_download()
|
96
|
+
try:
|
97
|
+
pkg_resources.require("setuptools>="+version); return
|
98
|
+
except pkg_resources.VersionConflict, e:
|
99
|
+
if was_imported:
|
100
|
+
print >>sys.stderr, (
|
101
|
+
"The required version of setuptools (>=%s) is not available, and\n"
|
102
|
+
"can't be installed while this script is running. Please install\n"
|
103
|
+
" a more recent version first, using 'easy_install -U setuptools'."
|
104
|
+
"\n\n(Currently using %r)"
|
105
|
+
) % (version, e.args[0])
|
106
|
+
sys.exit(2)
|
107
|
+
else:
|
108
|
+
del pkg_resources, sys.modules['pkg_resources'] # reload ok
|
109
|
+
return do_download()
|
110
|
+
except pkg_resources.DistributionNotFound:
|
111
|
+
return do_download()
|
112
|
+
|
113
|
+
def download_setuptools(
|
114
|
+
version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
|
115
|
+
delay = 15
|
116
|
+
):
|
117
|
+
"""Download setuptools from a specified location and return its filename
|
118
|
+
|
119
|
+
`version` should be a valid setuptools version number that is available
|
120
|
+
as an egg for download under the `download_base` URL (which should end
|
121
|
+
with a '/'). `to_dir` is the directory where the egg will be downloaded.
|
122
|
+
`delay` is the number of seconds to pause before an actual download attempt.
|
123
|
+
"""
|
124
|
+
import urllib2, shutil
|
125
|
+
egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
|
126
|
+
url = download_base + egg_name
|
127
|
+
saveto = os.path.join(to_dir, egg_name)
|
128
|
+
src = dst = None
|
129
|
+
if not os.path.exists(saveto): # Avoid repeated downloads
|
130
|
+
try:
|
131
|
+
from distutils import log
|
132
|
+
if delay:
|
133
|
+
log.warn("""
|
134
|
+
---------------------------------------------------------------------------
|
135
|
+
This script requires setuptools version %s to run (even to display
|
136
|
+
help). I will attempt to download it for you (from
|
137
|
+
%s), but
|
138
|
+
you may need to enable firewall access for this script first.
|
139
|
+
I will start the download in %d seconds.
|
140
|
+
|
141
|
+
(Note: if this machine does not have network access, please obtain the file
|
142
|
+
|
143
|
+
%s
|
144
|
+
|
145
|
+
and place it in this directory before rerunning this script.)
|
146
|
+
---------------------------------------------------------------------------""",
|
147
|
+
version, download_base, delay, url
|
148
|
+
); from time import sleep; sleep(delay)
|
149
|
+
log.warn("Downloading %s", url)
|
150
|
+
src = urllib2.urlopen(url)
|
151
|
+
# Read/write all in one block, so we don't create a corrupt file
|
152
|
+
# if the download is interrupted.
|
153
|
+
data = _validate_md5(egg_name, src.read())
|
154
|
+
dst = open(saveto,"wb"); dst.write(data)
|
155
|
+
finally:
|
156
|
+
if src: src.close()
|
157
|
+
if dst: dst.close()
|
158
|
+
return os.path.realpath(saveto)
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
def main(argv, version=DEFAULT_VERSION):
|
196
|
+
"""Install or upgrade setuptools and EasyInstall"""
|
197
|
+
try:
|
198
|
+
import setuptools
|
199
|
+
except ImportError:
|
200
|
+
egg = None
|
201
|
+
try:
|
202
|
+
egg = download_setuptools(version, delay=0)
|
203
|
+
sys.path.insert(0,egg)
|
204
|
+
from setuptools.command.easy_install import main
|
205
|
+
return main(list(argv)+[egg]) # we're done here
|
206
|
+
finally:
|
207
|
+
if egg and os.path.exists(egg):
|
208
|
+
os.unlink(egg)
|
209
|
+
else:
|
210
|
+
if setuptools.__version__ == '0.0.1':
|
211
|
+
print >>sys.stderr, (
|
212
|
+
"You have an obsolete version of setuptools installed. Please\n"
|
213
|
+
"remove it from your system entirely before rerunning this script."
|
214
|
+
)
|
215
|
+
sys.exit(2)
|
216
|
+
|
217
|
+
req = "setuptools>="+version
|
218
|
+
import pkg_resources
|
219
|
+
try:
|
220
|
+
pkg_resources.require(req)
|
221
|
+
except pkg_resources.VersionConflict:
|
222
|
+
try:
|
223
|
+
from setuptools.command.easy_install import main
|
224
|
+
except ImportError:
|
225
|
+
from easy_install import main
|
226
|
+
main(list(argv)+[download_setuptools(delay=0)])
|
227
|
+
sys.exit(0) # try to force an exit
|
228
|
+
else:
|
229
|
+
if argv:
|
230
|
+
from setuptools.command.easy_install import main
|
231
|
+
main(argv)
|
232
|
+
else:
|
233
|
+
print "Setuptools version",version,"or greater has been installed."
|
234
|
+
print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
|
235
|
+
|
236
|
+
def update_md5(filenames):
|
237
|
+
"""Update our built-in md5 registry"""
|
238
|
+
|
239
|
+
import re
|
240
|
+
|
241
|
+
for name in filenames:
|
242
|
+
base = os.path.basename(name)
|
243
|
+
f = open(name,'rb')
|
244
|
+
md5_data[base] = md5(f.read()).hexdigest()
|
245
|
+
f.close()
|
246
|
+
|
247
|
+
data = [" %r: %r,\n" % it for it in md5_data.items()]
|
248
|
+
data.sort()
|
249
|
+
repl = "".join(data)
|
250
|
+
|
251
|
+
import inspect
|
252
|
+
srcfile = inspect.getsourcefile(sys.modules[__name__])
|
253
|
+
f = open(srcfile, 'rb'); src = f.read(); f.close()
|
254
|
+
|
255
|
+
match = re.search("\nmd5_data = {\n([^}]+)}", src)
|
256
|
+
if not match:
|
257
|
+
print >>sys.stderr, "Internal error!"
|
258
|
+
sys.exit(2)
|
259
|
+
|
260
|
+
src = src[:match.start(1)] + repl + src[match.end(1):]
|
261
|
+
f = open(srcfile,'w')
|
262
|
+
f.write(src)
|
263
|
+
f.close()
|
264
|
+
|
265
|
+
|
266
|
+
if __name__=='__main__':
|
267
|
+
if len(sys.argv)>2 and sys.argv[1]=='--md5update':
|
268
|
+
update_md5(sys.argv[2:])
|
269
|
+
else:
|
270
|
+
main(sys.argv[1:])
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
|
276
|
+
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
Pygments
|
4
|
+
~~~~~~~~
|
5
|
+
|
6
|
+
Pygments is a syntax highlighting package written in Python.
|
7
|
+
|
8
|
+
It is a generic syntax highlighter for general use in all kinds of software
|
9
|
+
such as forum systems, wikis or other applications that need to prettify
|
10
|
+
source code. Highlights are:
|
11
|
+
|
12
|
+
* a wide range of common languages and markup formats is supported
|
13
|
+
* special attention is paid to details, increasing quality by a fair amount
|
14
|
+
* support for new languages and formats are added easily
|
15
|
+
* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image
|
16
|
+
formats that PIL supports, and ANSI sequences
|
17
|
+
* it is usable as a command-line tool and as a library
|
18
|
+
* ... and it highlights even Brainfuck!
|
19
|
+
|
20
|
+
The `Pygments tip`_ is installable with ``easy_install Pygments==dev``.
|
21
|
+
|
22
|
+
.. _Pygments tip:
|
23
|
+
http://bitbucket.org/birkenfeld/pygments-main/get/tip.zip#egg=Pygments-dev
|
24
|
+
|
25
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
26
|
+
:license: BSD, see LICENSE for details.
|
27
|
+
"""
|
28
|
+
|
29
|
+
__version__ = '1.6'
|
30
|
+
__docformat__ = 'restructuredtext'
|
31
|
+
|
32
|
+
__all__ = ['lex', 'format', 'highlight']
|
33
|
+
|
34
|
+
|
35
|
+
import sys
|
36
|
+
|
37
|
+
from pygments.util import StringIO, BytesIO
|
38
|
+
|
39
|
+
|
40
|
+
def lex(code, lexer):
|
41
|
+
"""
|
42
|
+
Lex ``code`` with ``lexer`` and return an iterable of tokens.
|
43
|
+
"""
|
44
|
+
try:
|
45
|
+
return lexer.get_tokens(code)
|
46
|
+
except TypeError, err:
|
47
|
+
if isinstance(err.args[0], str) and \
|
48
|
+
'unbound method get_tokens' in err.args[0]:
|
49
|
+
raise TypeError('lex() argument must be a lexer instance, '
|
50
|
+
'not a class')
|
51
|
+
raise
|
52
|
+
|
53
|
+
|
54
|
+
def format(tokens, formatter, outfile=None):
|
55
|
+
"""
|
56
|
+
Format a tokenlist ``tokens`` with the formatter ``formatter``.
|
57
|
+
|
58
|
+
If ``outfile`` is given and a valid file object (an object
|
59
|
+
with a ``write`` method), the result will be written to it, otherwise
|
60
|
+
it is returned as a string.
|
61
|
+
"""
|
62
|
+
try:
|
63
|
+
if not outfile:
|
64
|
+
#print formatter, 'using', formatter.encoding
|
65
|
+
realoutfile = formatter.encoding and BytesIO() or StringIO()
|
66
|
+
formatter.format(tokens, realoutfile)
|
67
|
+
return realoutfile.getvalue()
|
68
|
+
else:
|
69
|
+
formatter.format(tokens, outfile)
|
70
|
+
except TypeError, err:
|
71
|
+
if isinstance(err.args[0], str) and \
|
72
|
+
'unbound method format' in err.args[0]:
|
73
|
+
raise TypeError('format() argument must be a formatter instance, '
|
74
|
+
'not a class')
|
75
|
+
raise
|
76
|
+
|
77
|
+
|
78
|
+
def highlight(code, lexer, formatter, outfile=None):
|
79
|
+
"""
|
80
|
+
Lex ``code`` with ``lexer`` and format it with the formatter ``formatter``.
|
81
|
+
|
82
|
+
If ``outfile`` is given and a valid file object (an object
|
83
|
+
with a ``write`` method), the result will be written to it, otherwise
|
84
|
+
it is returned as a string.
|
85
|
+
"""
|
86
|
+
return format(lex(code, lexer), formatter, outfile)
|
87
|
+
|
88
|
+
|
89
|
+
if __name__ == '__main__':
|
90
|
+
from pygments.cmdline import main
|
91
|
+
sys.exit(main(sys.argv))
|
@@ -0,0 +1,441 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
pygments.cmdline
|
4
|
+
~~~~~~~~~~~~~~~~
|
5
|
+
|
6
|
+
Command line interface.
|
7
|
+
|
8
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
9
|
+
:license: BSD, see LICENSE for details.
|
10
|
+
"""
|
11
|
+
import sys
|
12
|
+
import getopt
|
13
|
+
from textwrap import dedent
|
14
|
+
|
15
|
+
from pygments import __version__, highlight
|
16
|
+
from pygments.util import ClassNotFound, OptionError, docstring_headline
|
17
|
+
from pygments.lexers import get_all_lexers, get_lexer_by_name, get_lexer_for_filename, \
|
18
|
+
find_lexer_class, guess_lexer, TextLexer
|
19
|
+
from pygments.formatters import get_all_formatters, get_formatter_by_name, \
|
20
|
+
get_formatter_for_filename, find_formatter_class, \
|
21
|
+
TerminalFormatter # pylint:disable-msg=E0611
|
22
|
+
from pygments.filters import get_all_filters, find_filter_class
|
23
|
+
from pygments.styles import get_all_styles, get_style_by_name
|
24
|
+
|
25
|
+
|
26
|
+
USAGE = """\
|
27
|
+
Usage: %s [-l <lexer> | -g] [-F <filter>[:<options>]] [-f <formatter>]
|
28
|
+
[-O <options>] [-P <option=value>] [-o <outfile>] [<infile>]
|
29
|
+
|
30
|
+
%s -S <style> -f <formatter> [-a <arg>] [-O <options>] [-P <option=value>]
|
31
|
+
%s -L [<which> ...]
|
32
|
+
%s -N <filename>
|
33
|
+
%s -H <type> <name>
|
34
|
+
%s -h | -V
|
35
|
+
|
36
|
+
Highlight the input file and write the result to <outfile>.
|
37
|
+
|
38
|
+
If no input file is given, use stdin, if -o is not given, use stdout.
|
39
|
+
|
40
|
+
<lexer> is a lexer name (query all lexer names with -L). If -l is not
|
41
|
+
given, the lexer is guessed from the extension of the input file name
|
42
|
+
(this obviously doesn't work if the input is stdin). If -g is passed,
|
43
|
+
attempt to guess the lexer from the file contents, or pass through as
|
44
|
+
plain text if this fails (this can work for stdin).
|
45
|
+
|
46
|
+
Likewise, <formatter> is a formatter name, and will be guessed from
|
47
|
+
the extension of the output file name. If no output file is given,
|
48
|
+
the terminal formatter will be used by default.
|
49
|
+
|
50
|
+
With the -O option, you can give the lexer and formatter a comma-
|
51
|
+
separated list of options, e.g. ``-O bg=light,python=cool``.
|
52
|
+
|
53
|
+
The -P option adds lexer and formatter options like the -O option, but
|
54
|
+
you can only give one option per -P. That way, the option value may
|
55
|
+
contain commas and equals signs, which it can't with -O, e.g.
|
56
|
+
``-P "heading=Pygments, the Python highlighter".
|
57
|
+
|
58
|
+
With the -F option, you can add filters to the token stream, you can
|
59
|
+
give options in the same way as for -O after a colon (note: there must
|
60
|
+
not be spaces around the colon).
|
61
|
+
|
62
|
+
The -O, -P and -F options can be given multiple times.
|
63
|
+
|
64
|
+
With the -S option, print out style definitions for style <style>
|
65
|
+
for formatter <formatter>. The argument given by -a is formatter
|
66
|
+
dependent.
|
67
|
+
|
68
|
+
The -L option lists lexers, formatters, styles or filters -- set
|
69
|
+
`which` to the thing you want to list (e.g. "styles"), or omit it to
|
70
|
+
list everything.
|
71
|
+
|
72
|
+
The -N option guesses and prints out a lexer name based solely on
|
73
|
+
the given filename. It does not take input or highlight anything.
|
74
|
+
If no specific lexer can be determined "text" is returned.
|
75
|
+
|
76
|
+
The -H option prints detailed help for the object <name> of type <type>,
|
77
|
+
where <type> is one of "lexer", "formatter" or "filter".
|
78
|
+
|
79
|
+
The -h option prints this help.
|
80
|
+
The -V option prints the package version.
|
81
|
+
"""
|
82
|
+
|
83
|
+
|
84
|
+
def _parse_options(o_strs):
|
85
|
+
opts = {}
|
86
|
+
if not o_strs:
|
87
|
+
return opts
|
88
|
+
for o_str in o_strs:
|
89
|
+
if not o_str:
|
90
|
+
continue
|
91
|
+
o_args = o_str.split(',')
|
92
|
+
for o_arg in o_args:
|
93
|
+
o_arg = o_arg.strip()
|
94
|
+
try:
|
95
|
+
o_key, o_val = o_arg.split('=')
|
96
|
+
o_key = o_key.strip()
|
97
|
+
o_val = o_val.strip()
|
98
|
+
except ValueError:
|
99
|
+
opts[o_arg] = True
|
100
|
+
else:
|
101
|
+
opts[o_key] = o_val
|
102
|
+
return opts
|
103
|
+
|
104
|
+
|
105
|
+
def _parse_filters(f_strs):
|
106
|
+
filters = []
|
107
|
+
if not f_strs:
|
108
|
+
return filters
|
109
|
+
for f_str in f_strs:
|
110
|
+
if ':' in f_str:
|
111
|
+
fname, fopts = f_str.split(':', 1)
|
112
|
+
filters.append((fname, _parse_options([fopts])))
|
113
|
+
else:
|
114
|
+
filters.append((f_str, {}))
|
115
|
+
return filters
|
116
|
+
|
117
|
+
|
118
|
+
def _print_help(what, name):
|
119
|
+
try:
|
120
|
+
if what == 'lexer':
|
121
|
+
cls = find_lexer_class(name)
|
122
|
+
print "Help on the %s lexer:" % cls.name
|
123
|
+
print dedent(cls.__doc__)
|
124
|
+
elif what == 'formatter':
|
125
|
+
cls = find_formatter_class(name)
|
126
|
+
print "Help on the %s formatter:" % cls.name
|
127
|
+
print dedent(cls.__doc__)
|
128
|
+
elif what == 'filter':
|
129
|
+
cls = find_filter_class(name)
|
130
|
+
print "Help on the %s filter:" % name
|
131
|
+
print dedent(cls.__doc__)
|
132
|
+
except AttributeError:
|
133
|
+
print >>sys.stderr, "%s not found!" % what
|
134
|
+
|
135
|
+
|
136
|
+
def _print_list(what):
|
137
|
+
if what == 'lexer':
|
138
|
+
print
|
139
|
+
print "Lexers:"
|
140
|
+
print "~~~~~~~"
|
141
|
+
|
142
|
+
info = []
|
143
|
+
for fullname, names, exts, _ in get_all_lexers():
|
144
|
+
tup = (', '.join(names)+':', fullname,
|
145
|
+
exts and '(filenames ' + ', '.join(exts) + ')' or '')
|
146
|
+
info.append(tup)
|
147
|
+
info.sort()
|
148
|
+
for i in info:
|
149
|
+
print ('* %s\n %s %s') % i
|
150
|
+
|
151
|
+
elif what == 'formatter':
|
152
|
+
print
|
153
|
+
print "Formatters:"
|
154
|
+
print "~~~~~~~~~~~"
|
155
|
+
|
156
|
+
info = []
|
157
|
+
for cls in get_all_formatters():
|
158
|
+
doc = docstring_headline(cls)
|
159
|
+
tup = (', '.join(cls.aliases) + ':', doc, cls.filenames and
|
160
|
+
'(filenames ' + ', '.join(cls.filenames) + ')' or '')
|
161
|
+
info.append(tup)
|
162
|
+
info.sort()
|
163
|
+
for i in info:
|
164
|
+
print ('* %s\n %s %s') % i
|
165
|
+
|
166
|
+
elif what == 'filter':
|
167
|
+
print
|
168
|
+
print "Filters:"
|
169
|
+
print "~~~~~~~~"
|
170
|
+
|
171
|
+
for name in get_all_filters():
|
172
|
+
cls = find_filter_class(name)
|
173
|
+
print "* " + name + ':'
|
174
|
+
print " %s" % docstring_headline(cls)
|
175
|
+
|
176
|
+
elif what == 'style':
|
177
|
+
print
|
178
|
+
print "Styles:"
|
179
|
+
print "~~~~~~~"
|
180
|
+
|
181
|
+
for name in get_all_styles():
|
182
|
+
cls = get_style_by_name(name)
|
183
|
+
print "* " + name + ':'
|
184
|
+
print " %s" % docstring_headline(cls)
|
185
|
+
|
186
|
+
|
187
|
+
def main(args=sys.argv):
|
188
|
+
"""
|
189
|
+
Main command line entry point.
|
190
|
+
"""
|
191
|
+
# pylint: disable-msg=R0911,R0912,R0915
|
192
|
+
|
193
|
+
usage = USAGE % ((args[0],) * 6)
|
194
|
+
|
195
|
+
if sys.platform in ['win32', 'cygwin']:
|
196
|
+
try:
|
197
|
+
# Provide coloring under Windows, if possible
|
198
|
+
import colorama
|
199
|
+
colorama.init()
|
200
|
+
except ImportError:
|
201
|
+
pass
|
202
|
+
|
203
|
+
try:
|
204
|
+
popts, args = getopt.getopt(args[1:], "l:f:F:o:O:P:LS:a:N:hVHg")
|
205
|
+
except getopt.GetoptError, err:
|
206
|
+
print >>sys.stderr, usage
|
207
|
+
return 2
|
208
|
+
opts = {}
|
209
|
+
O_opts = []
|
210
|
+
P_opts = []
|
211
|
+
F_opts = []
|
212
|
+
for opt, arg in popts:
|
213
|
+
if opt == '-O':
|
214
|
+
O_opts.append(arg)
|
215
|
+
elif opt == '-P':
|
216
|
+
P_opts.append(arg)
|
217
|
+
elif opt == '-F':
|
218
|
+
F_opts.append(arg)
|
219
|
+
opts[opt] = arg
|
220
|
+
|
221
|
+
if not opts and not args:
|
222
|
+
print usage
|
223
|
+
return 0
|
224
|
+
|
225
|
+
if opts.pop('-h', None) is not None:
|
226
|
+
print usage
|
227
|
+
return 0
|
228
|
+
|
229
|
+
if opts.pop('-V', None) is not None:
|
230
|
+
print 'Pygments version %s, (c) 2006-2013 by Georg Brandl.' % __version__
|
231
|
+
return 0
|
232
|
+
|
233
|
+
# handle ``pygmentize -L``
|
234
|
+
L_opt = opts.pop('-L', None)
|
235
|
+
if L_opt is not None:
|
236
|
+
if opts:
|
237
|
+
print >>sys.stderr, usage
|
238
|
+
return 2
|
239
|
+
|
240
|
+
# print version
|
241
|
+
main(['', '-V'])
|
242
|
+
if not args:
|
243
|
+
args = ['lexer', 'formatter', 'filter', 'style']
|
244
|
+
for arg in args:
|
245
|
+
_print_list(arg.rstrip('s'))
|
246
|
+
return 0
|
247
|
+
|
248
|
+
# handle ``pygmentize -H``
|
249
|
+
H_opt = opts.pop('-H', None)
|
250
|
+
if H_opt is not None:
|
251
|
+
if opts or len(args) != 2:
|
252
|
+
print >>sys.stderr, usage
|
253
|
+
return 2
|
254
|
+
|
255
|
+
what, name = args
|
256
|
+
if what not in ('lexer', 'formatter', 'filter'):
|
257
|
+
print >>sys.stderr, usage
|
258
|
+
return 2
|
259
|
+
|
260
|
+
_print_help(what, name)
|
261
|
+
return 0
|
262
|
+
|
263
|
+
# parse -O options
|
264
|
+
parsed_opts = _parse_options(O_opts)
|
265
|
+
opts.pop('-O', None)
|
266
|
+
|
267
|
+
# parse -P options
|
268
|
+
for p_opt in P_opts:
|
269
|
+
try:
|
270
|
+
name, value = p_opt.split('=', 1)
|
271
|
+
except ValueError:
|
272
|
+
parsed_opts[p_opt] = True
|
273
|
+
else:
|
274
|
+
parsed_opts[name] = value
|
275
|
+
opts.pop('-P', None)
|
276
|
+
|
277
|
+
# handle ``pygmentize -N``
|
278
|
+
infn = opts.pop('-N', None)
|
279
|
+
if infn is not None:
|
280
|
+
try:
|
281
|
+
lexer = get_lexer_for_filename(infn, **parsed_opts)
|
282
|
+
except ClassNotFound, err:
|
283
|
+
lexer = TextLexer()
|
284
|
+
except OptionError, err:
|
285
|
+
print >>sys.stderr, 'Error:', err
|
286
|
+
return 1
|
287
|
+
|
288
|
+
print lexer.aliases[0]
|
289
|
+
return 0
|
290
|
+
|
291
|
+
# handle ``pygmentize -S``
|
292
|
+
S_opt = opts.pop('-S', None)
|
293
|
+
a_opt = opts.pop('-a', None)
|
294
|
+
if S_opt is not None:
|
295
|
+
f_opt = opts.pop('-f', None)
|
296
|
+
if not f_opt:
|
297
|
+
print >>sys.stderr, usage
|
298
|
+
return 2
|
299
|
+
if opts or args:
|
300
|
+
print >>sys.stderr, usage
|
301
|
+
return 2
|
302
|
+
|
303
|
+
try:
|
304
|
+
parsed_opts['style'] = S_opt
|
305
|
+
fmter = get_formatter_by_name(f_opt, **parsed_opts)
|
306
|
+
except ClassNotFound, err:
|
307
|
+
print >>sys.stderr, err
|
308
|
+
return 1
|
309
|
+
|
310
|
+
arg = a_opt or ''
|
311
|
+
try:
|
312
|
+
print fmter.get_style_defs(arg)
|
313
|
+
except Exception, err:
|
314
|
+
print >>sys.stderr, 'Error:', err
|
315
|
+
return 1
|
316
|
+
return 0
|
317
|
+
|
318
|
+
# if no -S is given, -a is not allowed
|
319
|
+
if a_opt is not None:
|
320
|
+
print >>sys.stderr, usage
|
321
|
+
return 2
|
322
|
+
|
323
|
+
# parse -F options
|
324
|
+
F_opts = _parse_filters(F_opts)
|
325
|
+
opts.pop('-F', None)
|
326
|
+
|
327
|
+
# select formatter
|
328
|
+
outfn = opts.pop('-o', None)
|
329
|
+
fmter = opts.pop('-f', None)
|
330
|
+
if fmter:
|
331
|
+
try:
|
332
|
+
fmter = get_formatter_by_name(fmter, **parsed_opts)
|
333
|
+
except (OptionError, ClassNotFound), err:
|
334
|
+
print >>sys.stderr, 'Error:', err
|
335
|
+
return 1
|
336
|
+
|
337
|
+
if outfn:
|
338
|
+
if not fmter:
|
339
|
+
try:
|
340
|
+
fmter = get_formatter_for_filename(outfn, **parsed_opts)
|
341
|
+
except (OptionError, ClassNotFound), err:
|
342
|
+
print >>sys.stderr, 'Error:', err
|
343
|
+
return 1
|
344
|
+
try:
|
345
|
+
outfile = open(outfn, 'wb')
|
346
|
+
except Exception, err:
|
347
|
+
print >>sys.stderr, 'Error: cannot open outfile:', err
|
348
|
+
return 1
|
349
|
+
else:
|
350
|
+
if not fmter:
|
351
|
+
fmter = TerminalFormatter(**parsed_opts)
|
352
|
+
outfile = sys.stdout
|
353
|
+
|
354
|
+
# select lexer
|
355
|
+
lexer = opts.pop('-l', None)
|
356
|
+
if lexer:
|
357
|
+
try:
|
358
|
+
lexer = get_lexer_by_name(lexer, **parsed_opts)
|
359
|
+
except (OptionError, ClassNotFound), err:
|
360
|
+
print >>sys.stderr, 'Error:', err
|
361
|
+
return 1
|
362
|
+
|
363
|
+
if args:
|
364
|
+
if len(args) > 1:
|
365
|
+
print >>sys.stderr, usage
|
366
|
+
return 2
|
367
|
+
|
368
|
+
infn = args[0]
|
369
|
+
try:
|
370
|
+
code = open(infn, 'rb').read()
|
371
|
+
except Exception, err:
|
372
|
+
print >>sys.stderr, 'Error: cannot read infile:', err
|
373
|
+
return 1
|
374
|
+
|
375
|
+
if not lexer:
|
376
|
+
try:
|
377
|
+
lexer = get_lexer_for_filename(infn, code, **parsed_opts)
|
378
|
+
except ClassNotFound, err:
|
379
|
+
if '-g' in opts:
|
380
|
+
try:
|
381
|
+
lexer = guess_lexer(code, **parsed_opts)
|
382
|
+
except ClassNotFound:
|
383
|
+
lexer = TextLexer(**parsed_opts)
|
384
|
+
else:
|
385
|
+
print >>sys.stderr, 'Error:', err
|
386
|
+
return 1
|
387
|
+
except OptionError, err:
|
388
|
+
print >>sys.stderr, 'Error:', err
|
389
|
+
return 1
|
390
|
+
|
391
|
+
else:
|
392
|
+
if '-g' in opts:
|
393
|
+
code = sys.stdin.read()
|
394
|
+
try:
|
395
|
+
lexer = guess_lexer(code, **parsed_opts)
|
396
|
+
except ClassNotFound:
|
397
|
+
lexer = TextLexer(**parsed_opts)
|
398
|
+
elif not lexer:
|
399
|
+
print >>sys.stderr, 'Error: no lexer name given and reading ' + \
|
400
|
+
'from stdin (try using -g or -l <lexer>)'
|
401
|
+
return 2
|
402
|
+
else:
|
403
|
+
code = sys.stdin.read()
|
404
|
+
|
405
|
+
# No encoding given? Use latin1 if output file given,
|
406
|
+
# stdin/stdout encoding otherwise.
|
407
|
+
# (This is a compromise, I'm not too happy with it...)
|
408
|
+
if 'encoding' not in parsed_opts and 'outencoding' not in parsed_opts:
|
409
|
+
if outfn:
|
410
|
+
# encoding pass-through
|
411
|
+
fmter.encoding = 'latin1'
|
412
|
+
else:
|
413
|
+
if sys.version_info < (3,):
|
414
|
+
# use terminal encoding; Python 3's terminals already do that
|
415
|
+
lexer.encoding = getattr(sys.stdin, 'encoding',
|
416
|
+
None) or 'ascii'
|
417
|
+
fmter.encoding = getattr(sys.stdout, 'encoding',
|
418
|
+
None) or 'ascii'
|
419
|
+
elif not outfn and sys.version_info > (3,):
|
420
|
+
# output to terminal with encoding -> use .buffer
|
421
|
+
outfile = sys.stdout.buffer
|
422
|
+
|
423
|
+
# ... and do it!
|
424
|
+
try:
|
425
|
+
# process filters
|
426
|
+
for fname, fopts in F_opts:
|
427
|
+
lexer.add_filter(fname, **fopts)
|
428
|
+
highlight(code, lexer, fmter, outfile)
|
429
|
+
except Exception, err:
|
430
|
+
import traceback
|
431
|
+
info = traceback.format_exception(*sys.exc_info())
|
432
|
+
msg = info[-1].strip()
|
433
|
+
if len(info) >= 3:
|
434
|
+
# extract relevant file and position info
|
435
|
+
msg += '\n (f%s)' % info[-2].split('\n')[0].strip()[1:]
|
436
|
+
print >>sys.stderr
|
437
|
+
print >>sys.stderr, '*** Error while highlighting:'
|
438
|
+
print >>sys.stderr, msg
|
439
|
+
return 1
|
440
|
+
|
441
|
+
return 0
|