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,553 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
pygments.formatters.img
|
4
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
5
|
+
|
6
|
+
Formatter for Pixmap output.
|
7
|
+
|
8
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
9
|
+
:license: BSD, see LICENSE for details.
|
10
|
+
"""
|
11
|
+
|
12
|
+
import sys
|
13
|
+
|
14
|
+
from pygments.formatter import Formatter
|
15
|
+
from pygments.util import get_bool_opt, get_int_opt, \
|
16
|
+
get_list_opt, get_choice_opt
|
17
|
+
|
18
|
+
# Import this carefully
|
19
|
+
try:
|
20
|
+
from PIL import Image, ImageDraw, ImageFont
|
21
|
+
pil_available = True
|
22
|
+
except ImportError:
|
23
|
+
pil_available = False
|
24
|
+
|
25
|
+
try:
|
26
|
+
import _winreg
|
27
|
+
except ImportError:
|
28
|
+
_winreg = None
|
29
|
+
|
30
|
+
__all__ = ['ImageFormatter', 'GifImageFormatter', 'JpgImageFormatter',
|
31
|
+
'BmpImageFormatter']
|
32
|
+
|
33
|
+
|
34
|
+
# For some unknown reason every font calls it something different
|
35
|
+
STYLES = {
|
36
|
+
'NORMAL': ['', 'Roman', 'Book', 'Normal', 'Regular', 'Medium'],
|
37
|
+
'ITALIC': ['Oblique', 'Italic'],
|
38
|
+
'BOLD': ['Bold'],
|
39
|
+
'BOLDITALIC': ['Bold Oblique', 'Bold Italic'],
|
40
|
+
}
|
41
|
+
|
42
|
+
# A sane default for modern systems
|
43
|
+
DEFAULT_FONT_NAME_NIX = 'Bitstream Vera Sans Mono'
|
44
|
+
DEFAULT_FONT_NAME_WIN = 'Courier New'
|
45
|
+
|
46
|
+
|
47
|
+
class PilNotAvailable(ImportError):
|
48
|
+
"""When Python imaging library is not available"""
|
49
|
+
|
50
|
+
|
51
|
+
class FontNotFound(Exception):
|
52
|
+
"""When there are no usable fonts specified"""
|
53
|
+
|
54
|
+
|
55
|
+
class FontManager(object):
|
56
|
+
"""
|
57
|
+
Manages a set of fonts: normal, italic, bold, etc...
|
58
|
+
"""
|
59
|
+
|
60
|
+
def __init__(self, font_name, font_size=14):
|
61
|
+
self.font_name = font_name
|
62
|
+
self.font_size = font_size
|
63
|
+
self.fonts = {}
|
64
|
+
self.encoding = None
|
65
|
+
if sys.platform.startswith('win'):
|
66
|
+
if not font_name:
|
67
|
+
self.font_name = DEFAULT_FONT_NAME_WIN
|
68
|
+
self._create_win()
|
69
|
+
else:
|
70
|
+
if not font_name:
|
71
|
+
self.font_name = DEFAULT_FONT_NAME_NIX
|
72
|
+
self._create_nix()
|
73
|
+
|
74
|
+
def _get_nix_font_path(self, name, style):
|
75
|
+
from commands import getstatusoutput
|
76
|
+
exit, out = getstatusoutput('fc-list "%s:style=%s" file' %
|
77
|
+
(name, style))
|
78
|
+
if not exit:
|
79
|
+
lines = out.splitlines()
|
80
|
+
if lines:
|
81
|
+
path = lines[0].strip().strip(':')
|
82
|
+
return path
|
83
|
+
|
84
|
+
def _create_nix(self):
|
85
|
+
for name in STYLES['NORMAL']:
|
86
|
+
path = self._get_nix_font_path(self.font_name, name)
|
87
|
+
if path is not None:
|
88
|
+
self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
|
89
|
+
break
|
90
|
+
else:
|
91
|
+
raise FontNotFound('No usable fonts named: "%s"' %
|
92
|
+
self.font_name)
|
93
|
+
for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
|
94
|
+
for stylename in STYLES[style]:
|
95
|
+
path = self._get_nix_font_path(self.font_name, stylename)
|
96
|
+
if path is not None:
|
97
|
+
self.fonts[style] = ImageFont.truetype(path, self.font_size)
|
98
|
+
break
|
99
|
+
else:
|
100
|
+
if style == 'BOLDITALIC':
|
101
|
+
self.fonts[style] = self.fonts['BOLD']
|
102
|
+
else:
|
103
|
+
self.fonts[style] = self.fonts['NORMAL']
|
104
|
+
|
105
|
+
def _lookup_win(self, key, basename, styles, fail=False):
|
106
|
+
for suffix in ('', ' (TrueType)'):
|
107
|
+
for style in styles:
|
108
|
+
try:
|
109
|
+
valname = '%s%s%s' % (basename, style and ' '+style, suffix)
|
110
|
+
val, _ = _winreg.QueryValueEx(key, valname)
|
111
|
+
return val
|
112
|
+
except EnvironmentError:
|
113
|
+
continue
|
114
|
+
else:
|
115
|
+
if fail:
|
116
|
+
raise FontNotFound('Font %s (%s) not found in registry' %
|
117
|
+
(basename, styles[0]))
|
118
|
+
return None
|
119
|
+
|
120
|
+
def _create_win(self):
|
121
|
+
try:
|
122
|
+
key = _winreg.OpenKey(
|
123
|
+
_winreg.HKEY_LOCAL_MACHINE,
|
124
|
+
r'Software\Microsoft\Windows NT\CurrentVersion\Fonts')
|
125
|
+
except EnvironmentError:
|
126
|
+
try:
|
127
|
+
key = _winreg.OpenKey(
|
128
|
+
_winreg.HKEY_LOCAL_MACHINE,
|
129
|
+
r'Software\Microsoft\Windows\CurrentVersion\Fonts')
|
130
|
+
except EnvironmentError:
|
131
|
+
raise FontNotFound('Can\'t open Windows font registry key')
|
132
|
+
try:
|
133
|
+
path = self._lookup_win(key, self.font_name, STYLES['NORMAL'], True)
|
134
|
+
self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
|
135
|
+
for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
|
136
|
+
path = self._lookup_win(key, self.font_name, STYLES[style])
|
137
|
+
if path:
|
138
|
+
self.fonts[style] = ImageFont.truetype(path, self.font_size)
|
139
|
+
else:
|
140
|
+
if style == 'BOLDITALIC':
|
141
|
+
self.fonts[style] = self.fonts['BOLD']
|
142
|
+
else:
|
143
|
+
self.fonts[style] = self.fonts['NORMAL']
|
144
|
+
finally:
|
145
|
+
_winreg.CloseKey(key)
|
146
|
+
|
147
|
+
def get_char_size(self):
|
148
|
+
"""
|
149
|
+
Get the character size.
|
150
|
+
"""
|
151
|
+
return self.fonts['NORMAL'].getsize('M')
|
152
|
+
|
153
|
+
def get_font(self, bold, oblique):
|
154
|
+
"""
|
155
|
+
Get the font based on bold and italic flags.
|
156
|
+
"""
|
157
|
+
if bold and oblique:
|
158
|
+
return self.fonts['BOLDITALIC']
|
159
|
+
elif bold:
|
160
|
+
return self.fonts['BOLD']
|
161
|
+
elif oblique:
|
162
|
+
return self.fonts['ITALIC']
|
163
|
+
else:
|
164
|
+
return self.fonts['NORMAL']
|
165
|
+
|
166
|
+
|
167
|
+
class ImageFormatter(Formatter):
|
168
|
+
"""
|
169
|
+
Create a PNG image from source code. This uses the Python Imaging Library to
|
170
|
+
generate a pixmap from the source code.
|
171
|
+
|
172
|
+
*New in Pygments 0.10.*
|
173
|
+
|
174
|
+
Additional options accepted:
|
175
|
+
|
176
|
+
`image_format`
|
177
|
+
An image format to output to that is recognised by PIL, these include:
|
178
|
+
|
179
|
+
* "PNG" (default)
|
180
|
+
* "JPEG"
|
181
|
+
* "BMP"
|
182
|
+
* "GIF"
|
183
|
+
|
184
|
+
`line_pad`
|
185
|
+
The extra spacing (in pixels) between each line of text.
|
186
|
+
|
187
|
+
Default: 2
|
188
|
+
|
189
|
+
`font_name`
|
190
|
+
The font name to be used as the base font from which others, such as
|
191
|
+
bold and italic fonts will be generated. This really should be a
|
192
|
+
monospace font to look sane.
|
193
|
+
|
194
|
+
Default: "Bitstream Vera Sans Mono"
|
195
|
+
|
196
|
+
`font_size`
|
197
|
+
The font size in points to be used.
|
198
|
+
|
199
|
+
Default: 14
|
200
|
+
|
201
|
+
`image_pad`
|
202
|
+
The padding, in pixels to be used at each edge of the resulting image.
|
203
|
+
|
204
|
+
Default: 10
|
205
|
+
|
206
|
+
`line_numbers`
|
207
|
+
Whether line numbers should be shown: True/False
|
208
|
+
|
209
|
+
Default: True
|
210
|
+
|
211
|
+
`line_number_start`
|
212
|
+
The line number of the first line.
|
213
|
+
|
214
|
+
Default: 1
|
215
|
+
|
216
|
+
`line_number_step`
|
217
|
+
The step used when printing line numbers.
|
218
|
+
|
219
|
+
Default: 1
|
220
|
+
|
221
|
+
`line_number_bg`
|
222
|
+
The background colour (in "#123456" format) of the line number bar, or
|
223
|
+
None to use the style background color.
|
224
|
+
|
225
|
+
Default: "#eed"
|
226
|
+
|
227
|
+
`line_number_fg`
|
228
|
+
The text color of the line numbers (in "#123456"-like format).
|
229
|
+
|
230
|
+
Default: "#886"
|
231
|
+
|
232
|
+
`line_number_chars`
|
233
|
+
The number of columns of line numbers allowable in the line number
|
234
|
+
margin.
|
235
|
+
|
236
|
+
Default: 2
|
237
|
+
|
238
|
+
`line_number_bold`
|
239
|
+
Whether line numbers will be bold: True/False
|
240
|
+
|
241
|
+
Default: False
|
242
|
+
|
243
|
+
`line_number_italic`
|
244
|
+
Whether line numbers will be italicized: True/False
|
245
|
+
|
246
|
+
Default: False
|
247
|
+
|
248
|
+
`line_number_separator`
|
249
|
+
Whether a line will be drawn between the line number area and the
|
250
|
+
source code area: True/False
|
251
|
+
|
252
|
+
Default: True
|
253
|
+
|
254
|
+
`line_number_pad`
|
255
|
+
The horizontal padding (in pixels) between the line number margin, and
|
256
|
+
the source code area.
|
257
|
+
|
258
|
+
Default: 6
|
259
|
+
|
260
|
+
`hl_lines`
|
261
|
+
Specify a list of lines to be highlighted. *New in Pygments 1.2.*
|
262
|
+
|
263
|
+
Default: empty list
|
264
|
+
|
265
|
+
`hl_color`
|
266
|
+
Specify the color for highlighting lines. *New in Pygments 1.2.*
|
267
|
+
|
268
|
+
Default: highlight color of the selected style
|
269
|
+
"""
|
270
|
+
|
271
|
+
# Required by the pygments mapper
|
272
|
+
name = 'img'
|
273
|
+
aliases = ['img', 'IMG', 'png']
|
274
|
+
filenames = ['*.png']
|
275
|
+
|
276
|
+
unicodeoutput = False
|
277
|
+
|
278
|
+
default_image_format = 'png'
|
279
|
+
|
280
|
+
def __init__(self, **options):
|
281
|
+
"""
|
282
|
+
See the class docstring for explanation of options.
|
283
|
+
"""
|
284
|
+
if not pil_available:
|
285
|
+
raise PilNotAvailable(
|
286
|
+
'Python Imaging Library is required for this formatter')
|
287
|
+
Formatter.__init__(self, **options)
|
288
|
+
# Read the style
|
289
|
+
self.styles = dict(self.style)
|
290
|
+
if self.style.background_color is None:
|
291
|
+
self.background_color = '#fff'
|
292
|
+
else:
|
293
|
+
self.background_color = self.style.background_color
|
294
|
+
# Image options
|
295
|
+
self.image_format = get_choice_opt(
|
296
|
+
options, 'image_format', ['png', 'jpeg', 'gif', 'bmp'],
|
297
|
+
self.default_image_format, normcase=True)
|
298
|
+
self.image_pad = get_int_opt(options, 'image_pad', 10)
|
299
|
+
self.line_pad = get_int_opt(options, 'line_pad', 2)
|
300
|
+
# The fonts
|
301
|
+
fontsize = get_int_opt(options, 'font_size', 14)
|
302
|
+
self.fonts = FontManager(options.get('font_name', ''), fontsize)
|
303
|
+
self.fontw, self.fonth = self.fonts.get_char_size()
|
304
|
+
# Line number options
|
305
|
+
self.line_number_fg = options.get('line_number_fg', '#886')
|
306
|
+
self.line_number_bg = options.get('line_number_bg', '#eed')
|
307
|
+
self.line_number_chars = get_int_opt(options,
|
308
|
+
'line_number_chars', 2)
|
309
|
+
self.line_number_bold = get_bool_opt(options,
|
310
|
+
'line_number_bold', False)
|
311
|
+
self.line_number_italic = get_bool_opt(options,
|
312
|
+
'line_number_italic', False)
|
313
|
+
self.line_number_pad = get_int_opt(options, 'line_number_pad', 6)
|
314
|
+
self.line_numbers = get_bool_opt(options, 'line_numbers', True)
|
315
|
+
self.line_number_separator = get_bool_opt(options,
|
316
|
+
'line_number_separator', True)
|
317
|
+
self.line_number_step = get_int_opt(options, 'line_number_step', 1)
|
318
|
+
self.line_number_start = get_int_opt(options, 'line_number_start', 1)
|
319
|
+
if self.line_numbers:
|
320
|
+
self.line_number_width = (self.fontw * self.line_number_chars +
|
321
|
+
self.line_number_pad * 2)
|
322
|
+
else:
|
323
|
+
self.line_number_width = 0
|
324
|
+
self.hl_lines = []
|
325
|
+
hl_lines_str = get_list_opt(options, 'hl_lines', [])
|
326
|
+
for line in hl_lines_str:
|
327
|
+
try:
|
328
|
+
self.hl_lines.append(int(line))
|
329
|
+
except ValueError:
|
330
|
+
pass
|
331
|
+
self.hl_color = options.get('hl_color',
|
332
|
+
self.style.highlight_color) or '#f90'
|
333
|
+
self.drawables = []
|
334
|
+
|
335
|
+
def get_style_defs(self, arg=''):
|
336
|
+
raise NotImplementedError('The -S option is meaningless for the image '
|
337
|
+
'formatter. Use -O style=<stylename> instead.')
|
338
|
+
|
339
|
+
def _get_line_height(self):
|
340
|
+
"""
|
341
|
+
Get the height of a line.
|
342
|
+
"""
|
343
|
+
return self.fonth + self.line_pad
|
344
|
+
|
345
|
+
def _get_line_y(self, lineno):
|
346
|
+
"""
|
347
|
+
Get the Y coordinate of a line number.
|
348
|
+
"""
|
349
|
+
return lineno * self._get_line_height() + self.image_pad
|
350
|
+
|
351
|
+
def _get_char_width(self):
|
352
|
+
"""
|
353
|
+
Get the width of a character.
|
354
|
+
"""
|
355
|
+
return self.fontw
|
356
|
+
|
357
|
+
def _get_char_x(self, charno):
|
358
|
+
"""
|
359
|
+
Get the X coordinate of a character position.
|
360
|
+
"""
|
361
|
+
return charno * self.fontw + self.image_pad + self.line_number_width
|
362
|
+
|
363
|
+
def _get_text_pos(self, charno, lineno):
|
364
|
+
"""
|
365
|
+
Get the actual position for a character and line position.
|
366
|
+
"""
|
367
|
+
return self._get_char_x(charno), self._get_line_y(lineno)
|
368
|
+
|
369
|
+
def _get_linenumber_pos(self, lineno):
|
370
|
+
"""
|
371
|
+
Get the actual position for the start of a line number.
|
372
|
+
"""
|
373
|
+
return (self.image_pad, self._get_line_y(lineno))
|
374
|
+
|
375
|
+
def _get_text_color(self, style):
|
376
|
+
"""
|
377
|
+
Get the correct color for the token from the style.
|
378
|
+
"""
|
379
|
+
if style['color'] is not None:
|
380
|
+
fill = '#' + style['color']
|
381
|
+
else:
|
382
|
+
fill = '#000'
|
383
|
+
return fill
|
384
|
+
|
385
|
+
def _get_style_font(self, style):
|
386
|
+
"""
|
387
|
+
Get the correct font for the style.
|
388
|
+
"""
|
389
|
+
return self.fonts.get_font(style['bold'], style['italic'])
|
390
|
+
|
391
|
+
def _get_image_size(self, maxcharno, maxlineno):
|
392
|
+
"""
|
393
|
+
Get the required image size.
|
394
|
+
"""
|
395
|
+
return (self._get_char_x(maxcharno) + self.image_pad,
|
396
|
+
self._get_line_y(maxlineno + 0) + self.image_pad)
|
397
|
+
|
398
|
+
def _draw_linenumber(self, posno, lineno):
|
399
|
+
"""
|
400
|
+
Remember a line number drawable to paint later.
|
401
|
+
"""
|
402
|
+
self._draw_text(
|
403
|
+
self._get_linenumber_pos(posno),
|
404
|
+
str(lineno).rjust(self.line_number_chars),
|
405
|
+
font=self.fonts.get_font(self.line_number_bold,
|
406
|
+
self.line_number_italic),
|
407
|
+
fill=self.line_number_fg,
|
408
|
+
)
|
409
|
+
|
410
|
+
def _draw_text(self, pos, text, font, **kw):
|
411
|
+
"""
|
412
|
+
Remember a single drawable tuple to paint later.
|
413
|
+
"""
|
414
|
+
self.drawables.append((pos, text, font, kw))
|
415
|
+
|
416
|
+
def _create_drawables(self, tokensource):
|
417
|
+
"""
|
418
|
+
Create drawables for the token content.
|
419
|
+
"""
|
420
|
+
lineno = charno = maxcharno = 0
|
421
|
+
for ttype, value in tokensource:
|
422
|
+
while ttype not in self.styles:
|
423
|
+
ttype = ttype.parent
|
424
|
+
style = self.styles[ttype]
|
425
|
+
# TODO: make sure tab expansion happens earlier in the chain. It
|
426
|
+
# really ought to be done on the input, as to do it right here is
|
427
|
+
# quite complex.
|
428
|
+
value = value.expandtabs(4)
|
429
|
+
lines = value.splitlines(True)
|
430
|
+
#print lines
|
431
|
+
for i, line in enumerate(lines):
|
432
|
+
temp = line.rstrip('\n')
|
433
|
+
if temp:
|
434
|
+
self._draw_text(
|
435
|
+
self._get_text_pos(charno, lineno),
|
436
|
+
temp,
|
437
|
+
font = self._get_style_font(style),
|
438
|
+
fill = self._get_text_color(style)
|
439
|
+
)
|
440
|
+
charno += len(temp)
|
441
|
+
maxcharno = max(maxcharno, charno)
|
442
|
+
if line.endswith('\n'):
|
443
|
+
# add a line for each extra line in the value
|
444
|
+
charno = 0
|
445
|
+
lineno += 1
|
446
|
+
self.maxcharno = maxcharno
|
447
|
+
self.maxlineno = lineno
|
448
|
+
|
449
|
+
def _draw_line_numbers(self):
|
450
|
+
"""
|
451
|
+
Create drawables for the line numbers.
|
452
|
+
"""
|
453
|
+
if not self.line_numbers:
|
454
|
+
return
|
455
|
+
for p in xrange(self.maxlineno):
|
456
|
+
n = p + self.line_number_start
|
457
|
+
if (n % self.line_number_step) == 0:
|
458
|
+
self._draw_linenumber(p, n)
|
459
|
+
|
460
|
+
def _paint_line_number_bg(self, im):
|
461
|
+
"""
|
462
|
+
Paint the line number background on the image.
|
463
|
+
"""
|
464
|
+
if not self.line_numbers:
|
465
|
+
return
|
466
|
+
if self.line_number_fg is None:
|
467
|
+
return
|
468
|
+
draw = ImageDraw.Draw(im)
|
469
|
+
recth = im.size[-1]
|
470
|
+
rectw = self.image_pad + self.line_number_width - self.line_number_pad
|
471
|
+
draw.rectangle([(0, 0),
|
472
|
+
(rectw, recth)],
|
473
|
+
fill=self.line_number_bg)
|
474
|
+
draw.line([(rectw, 0), (rectw, recth)], fill=self.line_number_fg)
|
475
|
+
del draw
|
476
|
+
|
477
|
+
def format(self, tokensource, outfile):
|
478
|
+
"""
|
479
|
+
Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
|
480
|
+
tuples and write it into ``outfile``.
|
481
|
+
|
482
|
+
This implementation calculates where it should draw each token on the
|
483
|
+
pixmap, then calculates the required pixmap size and draws the items.
|
484
|
+
"""
|
485
|
+
self._create_drawables(tokensource)
|
486
|
+
self._draw_line_numbers()
|
487
|
+
im = Image.new(
|
488
|
+
'RGB',
|
489
|
+
self._get_image_size(self.maxcharno, self.maxlineno),
|
490
|
+
self.background_color
|
491
|
+
)
|
492
|
+
self._paint_line_number_bg(im)
|
493
|
+
draw = ImageDraw.Draw(im)
|
494
|
+
# Highlight
|
495
|
+
if self.hl_lines:
|
496
|
+
x = self.image_pad + self.line_number_width - self.line_number_pad + 1
|
497
|
+
recth = self._get_line_height()
|
498
|
+
rectw = im.size[0] - x
|
499
|
+
for linenumber in self.hl_lines:
|
500
|
+
y = self._get_line_y(linenumber - 1)
|
501
|
+
draw.rectangle([(x, y), (x + rectw, y + recth)],
|
502
|
+
fill=self.hl_color)
|
503
|
+
for pos, value, font, kw in self.drawables:
|
504
|
+
draw.text(pos, value, font=font, **kw)
|
505
|
+
im.save(outfile, self.image_format.upper())
|
506
|
+
|
507
|
+
|
508
|
+
# Add one formatter per format, so that the "-f gif" option gives the correct result
|
509
|
+
# when used in pygmentize.
|
510
|
+
|
511
|
+
class GifImageFormatter(ImageFormatter):
|
512
|
+
"""
|
513
|
+
Create a GIF image from source code. This uses the Python Imaging Library to
|
514
|
+
generate a pixmap from the source code.
|
515
|
+
|
516
|
+
*New in Pygments 1.0.* (You could create GIF images before by passing a
|
517
|
+
suitable `image_format` option to the `ImageFormatter`.)
|
518
|
+
"""
|
519
|
+
|
520
|
+
name = 'img_gif'
|
521
|
+
aliases = ['gif']
|
522
|
+
filenames = ['*.gif']
|
523
|
+
default_image_format = 'gif'
|
524
|
+
|
525
|
+
|
526
|
+
class JpgImageFormatter(ImageFormatter):
|
527
|
+
"""
|
528
|
+
Create a JPEG image from source code. This uses the Python Imaging Library to
|
529
|
+
generate a pixmap from the source code.
|
530
|
+
|
531
|
+
*New in Pygments 1.0.* (You could create JPEG images before by passing a
|
532
|
+
suitable `image_format` option to the `ImageFormatter`.)
|
533
|
+
"""
|
534
|
+
|
535
|
+
name = 'img_jpg'
|
536
|
+
aliases = ['jpg', 'jpeg']
|
537
|
+
filenames = ['*.jpg']
|
538
|
+
default_image_format = 'jpeg'
|
539
|
+
|
540
|
+
|
541
|
+
class BmpImageFormatter(ImageFormatter):
|
542
|
+
"""
|
543
|
+
Create a bitmap image from source code. This uses the Python Imaging Library to
|
544
|
+
generate a pixmap from the source code.
|
545
|
+
|
546
|
+
*New in Pygments 1.0.* (You could create bitmap images before by passing a
|
547
|
+
suitable `image_format` option to the `ImageFormatter`.)
|
548
|
+
"""
|
549
|
+
|
550
|
+
name = 'img_bmp'
|
551
|
+
aliases = ['bmp', 'bitmap']
|
552
|
+
filenames = ['*.bmp']
|
553
|
+
default_image_format = 'bmp'
|