mortar-pygments.rb 0.5.5
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.
- data/.gitignore +6 -0
- data/CHANGELOG.md +71 -0
- data/Gemfile +2 -0
- data/LICENSE +17 -0
- data/README.md +121 -0
- data/Rakefile +66 -0
- data/bench.rb +22 -0
- data/cache-lexers.rb +8 -0
- data/lexers +0 -0
- data/lib/pygments/lexer.rb +148 -0
- data/lib/pygments/mentos.py +351 -0
- data/lib/pygments/popen.rb +406 -0
- data/lib/pygments/version.rb +3 -0
- data/lib/pygments.rb +8 -0
- data/pygments.rb.gemspec +25 -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 +355 -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 +609 -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/tags +36 -0
- data/vendor/pygments-main/tests/support.py +15 -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 +566 -0
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.filters
|
|
4
|
+
~~~~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
Module containing filter lookup functions and default
|
|
7
|
+
filters.
|
|
8
|
+
|
|
9
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
|
10
|
+
:license: BSD, see LICENSE for details.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import re
|
|
14
|
+
|
|
15
|
+
from pygments.token import String, Comment, Keyword, Name, Error, Whitespace, \
|
|
16
|
+
string_to_tokentype
|
|
17
|
+
from pygments.filter import Filter
|
|
18
|
+
from pygments.util import get_list_opt, get_int_opt, get_bool_opt, \
|
|
19
|
+
get_choice_opt, ClassNotFound, OptionError
|
|
20
|
+
from pygments.plugin import find_plugin_filters
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def find_filter_class(filtername):
|
|
24
|
+
"""
|
|
25
|
+
Lookup a filter by name. Return None if not found.
|
|
26
|
+
"""
|
|
27
|
+
if filtername in FILTERS:
|
|
28
|
+
return FILTERS[filtername]
|
|
29
|
+
for name, cls in find_plugin_filters():
|
|
30
|
+
if name == filtername:
|
|
31
|
+
return cls
|
|
32
|
+
return None
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def get_filter_by_name(filtername, **options):
|
|
36
|
+
"""
|
|
37
|
+
Return an instantiated filter. Options are passed to the filter
|
|
38
|
+
initializer if wanted. Raise a ClassNotFound if not found.
|
|
39
|
+
"""
|
|
40
|
+
cls = find_filter_class(filtername)
|
|
41
|
+
if cls:
|
|
42
|
+
return cls(**options)
|
|
43
|
+
else:
|
|
44
|
+
raise ClassNotFound('filter %r not found' % filtername)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_all_filters():
|
|
48
|
+
"""
|
|
49
|
+
Return a generator of all filter names.
|
|
50
|
+
"""
|
|
51
|
+
for name in FILTERS:
|
|
52
|
+
yield name
|
|
53
|
+
for name, _ in find_plugin_filters():
|
|
54
|
+
yield name
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def _replace_special(ttype, value, regex, specialttype,
|
|
58
|
+
replacefunc=lambda x: x):
|
|
59
|
+
last = 0
|
|
60
|
+
for match in regex.finditer(value):
|
|
61
|
+
start, end = match.start(), match.end()
|
|
62
|
+
if start != last:
|
|
63
|
+
yield ttype, value[last:start]
|
|
64
|
+
yield specialttype, replacefunc(value[start:end])
|
|
65
|
+
last = end
|
|
66
|
+
if last != len(value):
|
|
67
|
+
yield ttype, value[last:]
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class CodeTagFilter(Filter):
|
|
71
|
+
"""
|
|
72
|
+
Highlight special code tags in comments and docstrings.
|
|
73
|
+
|
|
74
|
+
Options accepted:
|
|
75
|
+
|
|
76
|
+
`codetags` : list of strings
|
|
77
|
+
A list of strings that are flagged as code tags. The default is to
|
|
78
|
+
highlight ``XXX``, ``TODO``, ``BUG`` and ``NOTE``.
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
def __init__(self, **options):
|
|
82
|
+
Filter.__init__(self, **options)
|
|
83
|
+
tags = get_list_opt(options, 'codetags',
|
|
84
|
+
['XXX', 'TODO', 'BUG', 'NOTE'])
|
|
85
|
+
self.tag_re = re.compile(r'\b(%s)\b' % '|'.join([
|
|
86
|
+
re.escape(tag) for tag in tags if tag
|
|
87
|
+
]))
|
|
88
|
+
|
|
89
|
+
def filter(self, lexer, stream):
|
|
90
|
+
regex = self.tag_re
|
|
91
|
+
for ttype, value in stream:
|
|
92
|
+
if ttype in String.Doc or \
|
|
93
|
+
ttype in Comment and \
|
|
94
|
+
ttype not in Comment.Preproc:
|
|
95
|
+
for sttype, svalue in _replace_special(ttype, value, regex,
|
|
96
|
+
Comment.Special):
|
|
97
|
+
yield sttype, svalue
|
|
98
|
+
else:
|
|
99
|
+
yield ttype, value
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class KeywordCaseFilter(Filter):
|
|
103
|
+
"""
|
|
104
|
+
Convert keywords to lowercase or uppercase or capitalize them, which
|
|
105
|
+
means first letter uppercase, rest lowercase.
|
|
106
|
+
|
|
107
|
+
This can be useful e.g. if you highlight Pascal code and want to adapt the
|
|
108
|
+
code to your styleguide.
|
|
109
|
+
|
|
110
|
+
Options accepted:
|
|
111
|
+
|
|
112
|
+
`case` : string
|
|
113
|
+
The casing to convert keywords to. Must be one of ``'lower'``,
|
|
114
|
+
``'upper'`` or ``'capitalize'``. The default is ``'lower'``.
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
def __init__(self, **options):
|
|
118
|
+
Filter.__init__(self, **options)
|
|
119
|
+
case = get_choice_opt(options, 'case', ['lower', 'upper', 'capitalize'], 'lower')
|
|
120
|
+
self.convert = getattr(unicode, case)
|
|
121
|
+
|
|
122
|
+
def filter(self, lexer, stream):
|
|
123
|
+
for ttype, value in stream:
|
|
124
|
+
if ttype in Keyword:
|
|
125
|
+
yield ttype, self.convert(value)
|
|
126
|
+
else:
|
|
127
|
+
yield ttype, value
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
class NameHighlightFilter(Filter):
|
|
131
|
+
"""
|
|
132
|
+
Highlight a normal Name (and Name.*) token with a different token type.
|
|
133
|
+
|
|
134
|
+
Example::
|
|
135
|
+
|
|
136
|
+
filter = NameHighlightFilter(
|
|
137
|
+
names=['foo', 'bar', 'baz'],
|
|
138
|
+
tokentype=Name.Function,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
This would highlight the names "foo", "bar" and "baz"
|
|
142
|
+
as functions. `Name.Function` is the default token type.
|
|
143
|
+
|
|
144
|
+
Options accepted:
|
|
145
|
+
|
|
146
|
+
`names` : list of strings
|
|
147
|
+
A list of names that should be given the different token type.
|
|
148
|
+
There is no default.
|
|
149
|
+
`tokentype` : TokenType or string
|
|
150
|
+
A token type or a string containing a token type name that is
|
|
151
|
+
used for highlighting the strings in `names`. The default is
|
|
152
|
+
`Name.Function`.
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
def __init__(self, **options):
|
|
156
|
+
Filter.__init__(self, **options)
|
|
157
|
+
self.names = set(get_list_opt(options, 'names', []))
|
|
158
|
+
tokentype = options.get('tokentype')
|
|
159
|
+
if tokentype:
|
|
160
|
+
self.tokentype = string_to_tokentype(tokentype)
|
|
161
|
+
else:
|
|
162
|
+
self.tokentype = Name.Function
|
|
163
|
+
|
|
164
|
+
def filter(self, lexer, stream):
|
|
165
|
+
for ttype, value in stream:
|
|
166
|
+
if ttype in Name and value in self.names:
|
|
167
|
+
yield self.tokentype, value
|
|
168
|
+
else:
|
|
169
|
+
yield ttype, value
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
class ErrorToken(Exception):
|
|
173
|
+
pass
|
|
174
|
+
|
|
175
|
+
class RaiseOnErrorTokenFilter(Filter):
|
|
176
|
+
"""
|
|
177
|
+
Raise an exception when the lexer generates an error token.
|
|
178
|
+
|
|
179
|
+
Options accepted:
|
|
180
|
+
|
|
181
|
+
`excclass` : Exception class
|
|
182
|
+
The exception class to raise.
|
|
183
|
+
The default is `pygments.filters.ErrorToken`.
|
|
184
|
+
|
|
185
|
+
*New in Pygments 0.8.*
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
def __init__(self, **options):
|
|
189
|
+
Filter.__init__(self, **options)
|
|
190
|
+
self.exception = options.get('excclass', ErrorToken)
|
|
191
|
+
try:
|
|
192
|
+
# issubclass() will raise TypeError if first argument is not a class
|
|
193
|
+
if not issubclass(self.exception, Exception):
|
|
194
|
+
raise TypeError
|
|
195
|
+
except TypeError:
|
|
196
|
+
raise OptionError('excclass option is not an exception class')
|
|
197
|
+
|
|
198
|
+
def filter(self, lexer, stream):
|
|
199
|
+
for ttype, value in stream:
|
|
200
|
+
if ttype is Error:
|
|
201
|
+
raise self.exception(value)
|
|
202
|
+
yield ttype, value
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
class VisibleWhitespaceFilter(Filter):
|
|
206
|
+
"""
|
|
207
|
+
Convert tabs, newlines and/or spaces to visible characters.
|
|
208
|
+
|
|
209
|
+
Options accepted:
|
|
210
|
+
|
|
211
|
+
`spaces` : string or bool
|
|
212
|
+
If this is a one-character string, spaces will be replaces by this string.
|
|
213
|
+
If it is another true value, spaces will be replaced by ``·`` (unicode
|
|
214
|
+
MIDDLE DOT). If it is a false value, spaces will not be replaced. The
|
|
215
|
+
default is ``False``.
|
|
216
|
+
`tabs` : string or bool
|
|
217
|
+
The same as for `spaces`, but the default replacement character is ``»``
|
|
218
|
+
(unicode RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK). The default value
|
|
219
|
+
is ``False``. Note: this will not work if the `tabsize` option for the
|
|
220
|
+
lexer is nonzero, as tabs will already have been expanded then.
|
|
221
|
+
`tabsize` : int
|
|
222
|
+
If tabs are to be replaced by this filter (see the `tabs` option), this
|
|
223
|
+
is the total number of characters that a tab should be expanded to.
|
|
224
|
+
The default is ``8``.
|
|
225
|
+
`newlines` : string or bool
|
|
226
|
+
The same as for `spaces`, but the default replacement character is ``¶``
|
|
227
|
+
(unicode PILCROW SIGN). The default value is ``False``.
|
|
228
|
+
`wstokentype` : bool
|
|
229
|
+
If true, give whitespace the special `Whitespace` token type. This allows
|
|
230
|
+
styling the visible whitespace differently (e.g. greyed out), but it can
|
|
231
|
+
disrupt background colors. The default is ``True``.
|
|
232
|
+
|
|
233
|
+
*New in Pygments 0.8.*
|
|
234
|
+
"""
|
|
235
|
+
|
|
236
|
+
def __init__(self, **options):
|
|
237
|
+
Filter.__init__(self, **options)
|
|
238
|
+
for name, default in {'spaces': u'·', 'tabs': u'»', 'newlines': u'¶'}.items():
|
|
239
|
+
opt = options.get(name, False)
|
|
240
|
+
if isinstance(opt, basestring) and len(opt) == 1:
|
|
241
|
+
setattr(self, name, opt)
|
|
242
|
+
else:
|
|
243
|
+
setattr(self, name, (opt and default or ''))
|
|
244
|
+
tabsize = get_int_opt(options, 'tabsize', 8)
|
|
245
|
+
if self.tabs:
|
|
246
|
+
self.tabs += ' '*(tabsize-1)
|
|
247
|
+
if self.newlines:
|
|
248
|
+
self.newlines += '\n'
|
|
249
|
+
self.wstt = get_bool_opt(options, 'wstokentype', True)
|
|
250
|
+
|
|
251
|
+
def filter(self, lexer, stream):
|
|
252
|
+
if self.wstt:
|
|
253
|
+
spaces = self.spaces or ' '
|
|
254
|
+
tabs = self.tabs or '\t'
|
|
255
|
+
newlines = self.newlines or '\n'
|
|
256
|
+
regex = re.compile(r'\s')
|
|
257
|
+
def replacefunc(wschar):
|
|
258
|
+
if wschar == ' ':
|
|
259
|
+
return spaces
|
|
260
|
+
elif wschar == '\t':
|
|
261
|
+
return tabs
|
|
262
|
+
elif wschar == '\n':
|
|
263
|
+
return newlines
|
|
264
|
+
return wschar
|
|
265
|
+
|
|
266
|
+
for ttype, value in stream:
|
|
267
|
+
for sttype, svalue in _replace_special(ttype, value, regex,
|
|
268
|
+
Whitespace, replacefunc):
|
|
269
|
+
yield sttype, svalue
|
|
270
|
+
else:
|
|
271
|
+
spaces, tabs, newlines = self.spaces, self.tabs, self.newlines
|
|
272
|
+
# simpler processing
|
|
273
|
+
for ttype, value in stream:
|
|
274
|
+
if spaces:
|
|
275
|
+
value = value.replace(' ', spaces)
|
|
276
|
+
if tabs:
|
|
277
|
+
value = value.replace('\t', tabs)
|
|
278
|
+
if newlines:
|
|
279
|
+
value = value.replace('\n', newlines)
|
|
280
|
+
yield ttype, value
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
class GobbleFilter(Filter):
|
|
284
|
+
"""
|
|
285
|
+
Gobbles source code lines (eats initial characters).
|
|
286
|
+
|
|
287
|
+
This filter drops the first ``n`` characters off every line of code. This
|
|
288
|
+
may be useful when the source code fed to the lexer is indented by a fixed
|
|
289
|
+
amount of space that isn't desired in the output.
|
|
290
|
+
|
|
291
|
+
Options accepted:
|
|
292
|
+
|
|
293
|
+
`n` : int
|
|
294
|
+
The number of characters to gobble.
|
|
295
|
+
|
|
296
|
+
*New in Pygments 1.2.*
|
|
297
|
+
"""
|
|
298
|
+
def __init__(self, **options):
|
|
299
|
+
Filter.__init__(self, **options)
|
|
300
|
+
self.n = get_int_opt(options, 'n', 0)
|
|
301
|
+
|
|
302
|
+
def gobble(self, value, left):
|
|
303
|
+
if left < len(value):
|
|
304
|
+
return value[left:], 0
|
|
305
|
+
else:
|
|
306
|
+
return '', left - len(value)
|
|
307
|
+
|
|
308
|
+
def filter(self, lexer, stream):
|
|
309
|
+
n = self.n
|
|
310
|
+
left = n # How many characters left to gobble.
|
|
311
|
+
for ttype, value in stream:
|
|
312
|
+
# Remove ``left`` tokens from first line, ``n`` from all others.
|
|
313
|
+
parts = value.split('\n')
|
|
314
|
+
(parts[0], left) = self.gobble(parts[0], left)
|
|
315
|
+
for i in range(1, len(parts)):
|
|
316
|
+
(parts[i], left) = self.gobble(parts[i], n)
|
|
317
|
+
value = '\n'.join(parts)
|
|
318
|
+
|
|
319
|
+
if value != '':
|
|
320
|
+
yield ttype, value
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
class TokenMergeFilter(Filter):
|
|
324
|
+
"""
|
|
325
|
+
Merges consecutive tokens with the same token type in the output stream of a
|
|
326
|
+
lexer.
|
|
327
|
+
|
|
328
|
+
*New in Pygments 1.2.*
|
|
329
|
+
"""
|
|
330
|
+
def __init__(self, **options):
|
|
331
|
+
Filter.__init__(self, **options)
|
|
332
|
+
|
|
333
|
+
def filter(self, lexer, stream):
|
|
334
|
+
current_type = None
|
|
335
|
+
current_value = None
|
|
336
|
+
for ttype, value in stream:
|
|
337
|
+
if ttype is current_type:
|
|
338
|
+
current_value += value
|
|
339
|
+
else:
|
|
340
|
+
if current_type is not None:
|
|
341
|
+
yield current_type, current_value
|
|
342
|
+
current_type = ttype
|
|
343
|
+
current_value = value
|
|
344
|
+
if current_type is not None:
|
|
345
|
+
yield current_type, current_value
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
FILTERS = {
|
|
349
|
+
'codetagify': CodeTagFilter,
|
|
350
|
+
'keywordcase': KeywordCaseFilter,
|
|
351
|
+
'highlight': NameHighlightFilter,
|
|
352
|
+
'raiseonerror': RaiseOnErrorTokenFilter,
|
|
353
|
+
'whitespace': VisibleWhitespaceFilter,
|
|
354
|
+
'gobble': GobbleFilter,
|
|
355
|
+
'tokenmerge': TokenMergeFilter,
|
|
356
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.formatter
|
|
4
|
+
~~~~~~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
Base formatter class.
|
|
7
|
+
|
|
8
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
|
9
|
+
:license: BSD, see LICENSE for details.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import codecs
|
|
13
|
+
|
|
14
|
+
from pygments.util import get_bool_opt
|
|
15
|
+
from pygments.styles import get_style_by_name
|
|
16
|
+
|
|
17
|
+
__all__ = ['Formatter']
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _lookup_style(style):
|
|
21
|
+
if isinstance(style, basestring):
|
|
22
|
+
return get_style_by_name(style)
|
|
23
|
+
return style
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Formatter(object):
|
|
27
|
+
"""
|
|
28
|
+
Converts a token stream to text.
|
|
29
|
+
|
|
30
|
+
Options accepted:
|
|
31
|
+
|
|
32
|
+
``style``
|
|
33
|
+
The style to use, can be a string or a Style subclass
|
|
34
|
+
(default: "default"). Not used by e.g. the
|
|
35
|
+
TerminalFormatter.
|
|
36
|
+
``full``
|
|
37
|
+
Tells the formatter to output a "full" document, i.e.
|
|
38
|
+
a complete self-contained document. This doesn't have
|
|
39
|
+
any effect for some formatters (default: false).
|
|
40
|
+
``title``
|
|
41
|
+
If ``full`` is true, the title that should be used to
|
|
42
|
+
caption the document (default: '').
|
|
43
|
+
``encoding``
|
|
44
|
+
If given, must be an encoding name. This will be used to
|
|
45
|
+
convert the Unicode token strings to byte strings in the
|
|
46
|
+
output. If it is "" or None, Unicode strings will be written
|
|
47
|
+
to the output file, which most file-like objects do not
|
|
48
|
+
support (default: None).
|
|
49
|
+
``outencoding``
|
|
50
|
+
Overrides ``encoding`` if given.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
#: Name of the formatter
|
|
54
|
+
name = None
|
|
55
|
+
|
|
56
|
+
#: Shortcuts for the formatter
|
|
57
|
+
aliases = []
|
|
58
|
+
|
|
59
|
+
#: fn match rules
|
|
60
|
+
filenames = []
|
|
61
|
+
|
|
62
|
+
#: If True, this formatter outputs Unicode strings when no encoding
|
|
63
|
+
#: option is given.
|
|
64
|
+
unicodeoutput = True
|
|
65
|
+
|
|
66
|
+
def __init__(self, **options):
|
|
67
|
+
self.style = _lookup_style(options.get('style', 'default'))
|
|
68
|
+
self.full = get_bool_opt(options, 'full', False)
|
|
69
|
+
self.title = options.get('title', '')
|
|
70
|
+
self.encoding = options.get('encoding', None) or None
|
|
71
|
+
if self.encoding == 'guess':
|
|
72
|
+
# can happen for pygmentize -O encoding=guess
|
|
73
|
+
self.encoding = 'utf-8'
|
|
74
|
+
self.encoding = options.get('outencoding', None) or self.encoding
|
|
75
|
+
self.options = options
|
|
76
|
+
|
|
77
|
+
def get_style_defs(self, arg=''):
|
|
78
|
+
"""
|
|
79
|
+
Return the style definitions for the current style as a string.
|
|
80
|
+
|
|
81
|
+
``arg`` is an additional argument whose meaning depends on the
|
|
82
|
+
formatter used. Note that ``arg`` can also be a list or tuple
|
|
83
|
+
for some formatters like the html formatter.
|
|
84
|
+
"""
|
|
85
|
+
return ''
|
|
86
|
+
|
|
87
|
+
def format(self, tokensource, outfile):
|
|
88
|
+
"""
|
|
89
|
+
Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
|
|
90
|
+
tuples and write it into ``outfile``.
|
|
91
|
+
"""
|
|
92
|
+
if self.encoding:
|
|
93
|
+
# wrap the outfile in a StreamWriter
|
|
94
|
+
outfile = codecs.lookup(self.encoding)[3](outfile)
|
|
95
|
+
return self.format_unencoded(tokensource, outfile)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.formatters
|
|
4
|
+
~~~~~~~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
Pygments formatters.
|
|
7
|
+
|
|
8
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
|
9
|
+
:license: BSD, see LICENSE for details.
|
|
10
|
+
"""
|
|
11
|
+
import os.path
|
|
12
|
+
import fnmatch
|
|
13
|
+
|
|
14
|
+
from pygments.formatters._mapping import FORMATTERS
|
|
15
|
+
from pygments.plugin import find_plugin_formatters
|
|
16
|
+
from pygments.util import ClassNotFound
|
|
17
|
+
|
|
18
|
+
ns = globals()
|
|
19
|
+
for fcls in FORMATTERS:
|
|
20
|
+
ns[fcls.__name__] = fcls
|
|
21
|
+
del fcls
|
|
22
|
+
|
|
23
|
+
__all__ = ['get_formatter_by_name', 'get_formatter_for_filename',
|
|
24
|
+
'get_all_formatters'] + [cls.__name__ for cls in FORMATTERS]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
_formatter_alias_cache = {}
|
|
28
|
+
_formatter_filename_cache = []
|
|
29
|
+
|
|
30
|
+
def _init_formatter_cache():
|
|
31
|
+
if _formatter_alias_cache:
|
|
32
|
+
return
|
|
33
|
+
for cls in get_all_formatters():
|
|
34
|
+
for alias in cls.aliases:
|
|
35
|
+
_formatter_alias_cache[alias] = cls
|
|
36
|
+
for fn in cls.filenames:
|
|
37
|
+
_formatter_filename_cache.append((fn, cls))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def find_formatter_class(name):
|
|
41
|
+
_init_formatter_cache()
|
|
42
|
+
cls = _formatter_alias_cache.get(name, None)
|
|
43
|
+
return cls
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def get_formatter_by_name(name, **options):
|
|
47
|
+
_init_formatter_cache()
|
|
48
|
+
cls = _formatter_alias_cache.get(name, None)
|
|
49
|
+
if not cls:
|
|
50
|
+
raise ClassNotFound("No formatter found for name %r" % name)
|
|
51
|
+
return cls(**options)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def get_formatter_for_filename(fn, **options):
|
|
55
|
+
_init_formatter_cache()
|
|
56
|
+
fn = os.path.basename(fn)
|
|
57
|
+
for pattern, cls in _formatter_filename_cache:
|
|
58
|
+
if fnmatch.fnmatch(fn, pattern):
|
|
59
|
+
return cls(**options)
|
|
60
|
+
raise ClassNotFound("No formatter found for file name %r" % fn)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def get_all_formatters():
|
|
64
|
+
"""Return a generator for all formatters."""
|
|
65
|
+
for formatter in FORMATTERS:
|
|
66
|
+
yield formatter
|
|
67
|
+
for _, formatter in find_plugin_formatters():
|
|
68
|
+
yield formatter
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.formatters._mapping
|
|
4
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
Formatter mapping defintions. This file is generated by itself. Everytime
|
|
7
|
+
you change something on a builtin formatter defintion, run this script from
|
|
8
|
+
the formatters folder to update it.
|
|
9
|
+
|
|
10
|
+
Do not alter the FORMATTERS dictionary by hand.
|
|
11
|
+
|
|
12
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
|
13
|
+
:license: BSD, see LICENSE for details.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
# start
|
|
17
|
+
from pygments.formatters.bbcode import BBCodeFormatter
|
|
18
|
+
from pygments.formatters.html import HtmlFormatter
|
|
19
|
+
from pygments.formatters.img import BmpImageFormatter
|
|
20
|
+
from pygments.formatters.img import GifImageFormatter
|
|
21
|
+
from pygments.formatters.img import ImageFormatter
|
|
22
|
+
from pygments.formatters.img import JpgImageFormatter
|
|
23
|
+
from pygments.formatters.latex import LatexFormatter
|
|
24
|
+
from pygments.formatters.other import NullFormatter
|
|
25
|
+
from pygments.formatters.other import RawTokenFormatter
|
|
26
|
+
from pygments.formatters.rtf import RtfFormatter
|
|
27
|
+
from pygments.formatters.svg import SvgFormatter
|
|
28
|
+
from pygments.formatters.terminal import TerminalFormatter
|
|
29
|
+
from pygments.formatters.terminal256 import Terminal256Formatter
|
|
30
|
+
|
|
31
|
+
FORMATTERS = {
|
|
32
|
+
BBCodeFormatter: ('BBCode', ('bbcode', 'bb'), (), 'Format tokens with BBcodes. These formatting codes are used by many bulletin boards, so you can highlight your sourcecode with pygments before posting it there.'),
|
|
33
|
+
BmpImageFormatter: ('img_bmp', ('bmp', 'bitmap'), ('*.bmp',), 'Create a bitmap image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
|
34
|
+
GifImageFormatter: ('img_gif', ('gif',), ('*.gif',), 'Create a GIF image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
|
35
|
+
HtmlFormatter: ('HTML', ('html',), ('*.html', '*.htm'), "Format tokens as HTML 4 ``<span>`` tags within a ``<pre>`` tag, wrapped in a ``<div>`` tag. The ``<div>``'s CSS class can be set by the `cssclass` option."),
|
|
36
|
+
ImageFormatter: ('img', ('img', 'IMG', 'png'), ('*.png',), 'Create a PNG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
|
37
|
+
JpgImageFormatter: ('img_jpg', ('jpg', 'jpeg'), ('*.jpg',), 'Create a JPEG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
|
38
|
+
LatexFormatter: ('LaTeX', ('latex', 'tex'), ('*.tex',), 'Format tokens as LaTeX code. This needs the `fancyvrb` and `color` standard packages.'),
|
|
39
|
+
NullFormatter: ('Text only', ('text', 'null'), ('*.txt',), 'Output the text unchanged without any formatting.'),
|
|
40
|
+
RawTokenFormatter: ('Raw tokens', ('raw', 'tokens'), ('*.raw',), 'Format tokens as a raw representation for storing token streams.'),
|
|
41
|
+
RtfFormatter: ('RTF', ('rtf',), ('*.rtf',), 'Format tokens as RTF markup. This formatter automatically outputs full RTF documents with color information and other useful stuff. Perfect for Copy and Paste into Microsoft\xc2\xae Word\xc2\xae documents.'),
|
|
42
|
+
SvgFormatter: ('SVG', ('svg',), ('*.svg',), 'Format tokens as an SVG graphics file. This formatter is still experimental. Each line of code is a ``<text>`` element with explicit ``x`` and ``y`` coordinates containing ``<tspan>`` elements with the individual token styles.'),
|
|
43
|
+
Terminal256Formatter: ('Terminal256', ('terminal256', 'console256', '256'), (), 'Format tokens with ANSI color sequences, for output in a 256-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'),
|
|
44
|
+
TerminalFormatter: ('Terminal', ('terminal', 'console'), (), 'Format tokens with ANSI color sequences, for output in a text console. Color sequences are terminated at newlines, so that paging the output works correctly.')
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if __name__ == '__main__':
|
|
48
|
+
import sys
|
|
49
|
+
import os
|
|
50
|
+
|
|
51
|
+
# lookup formatters
|
|
52
|
+
found_formatters = []
|
|
53
|
+
imports = []
|
|
54
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
|
|
55
|
+
from pygments.util import docstring_headline
|
|
56
|
+
|
|
57
|
+
for filename in os.listdir('.'):
|
|
58
|
+
if filename.endswith('.py') and not filename.startswith('_'):
|
|
59
|
+
module_name = 'pygments.formatters.%s' % filename[:-3]
|
|
60
|
+
print module_name
|
|
61
|
+
module = __import__(module_name, None, None, [''])
|
|
62
|
+
for formatter_name in module.__all__:
|
|
63
|
+
imports.append((module_name, formatter_name))
|
|
64
|
+
formatter = getattr(module, formatter_name)
|
|
65
|
+
found_formatters.append(
|
|
66
|
+
'%s: %r' % (formatter_name,
|
|
67
|
+
(formatter.name,
|
|
68
|
+
tuple(formatter.aliases),
|
|
69
|
+
tuple(formatter.filenames),
|
|
70
|
+
docstring_headline(formatter))))
|
|
71
|
+
# sort them, that should make the diff files for svn smaller
|
|
72
|
+
found_formatters.sort()
|
|
73
|
+
imports.sort()
|
|
74
|
+
|
|
75
|
+
# extract useful sourcecode from this file
|
|
76
|
+
f = open(__file__)
|
|
77
|
+
try:
|
|
78
|
+
content = f.read()
|
|
79
|
+
finally:
|
|
80
|
+
f.close()
|
|
81
|
+
header = content[:content.find('# start')]
|
|
82
|
+
footer = content[content.find("if __name__ == '__main__':"):]
|
|
83
|
+
|
|
84
|
+
# write new file
|
|
85
|
+
f = open(__file__, 'w')
|
|
86
|
+
f.write(header)
|
|
87
|
+
f.write('# start\n')
|
|
88
|
+
f.write('\n'.join(['from %s import %s' % imp for imp in imports]))
|
|
89
|
+
f.write('\n\n')
|
|
90
|
+
f.write('FORMATTERS = {\n %s\n}\n\n' % ',\n '.join(found_formatters))
|
|
91
|
+
f.write(footer)
|
|
92
|
+
f.close()
|