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,138 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
Pygments unit tests
|
4
|
+
~~~~~~~~~~~~~~~~~~
|
5
|
+
|
6
|
+
Usage::
|
7
|
+
|
8
|
+
python run.py [testfile ...]
|
9
|
+
|
10
|
+
|
11
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
12
|
+
:license: BSD, see LICENSE for details.
|
13
|
+
"""
|
14
|
+
|
15
|
+
import sys, os
|
16
|
+
import unittest
|
17
|
+
|
18
|
+
from os.path import dirname, basename, join, abspath
|
19
|
+
|
20
|
+
import pygments
|
21
|
+
|
22
|
+
try:
|
23
|
+
import coverage
|
24
|
+
except ImportError:
|
25
|
+
coverage = None
|
26
|
+
|
27
|
+
testdir = abspath(dirname(__file__))
|
28
|
+
|
29
|
+
failed = []
|
30
|
+
total_test_count = 0
|
31
|
+
error_test_count = 0
|
32
|
+
|
33
|
+
|
34
|
+
def err(file, what, exc):
|
35
|
+
print >>sys.stderr, file, 'failed %s:' % what,
|
36
|
+
print >>sys.stderr, exc
|
37
|
+
failed.append(file[:-3])
|
38
|
+
|
39
|
+
|
40
|
+
class QuietTestRunner(object):
|
41
|
+
"""Customized test runner for relatively quiet output"""
|
42
|
+
|
43
|
+
def __init__(self, testname, stream=sys.stderr):
|
44
|
+
self.testname = testname
|
45
|
+
self.stream = unittest._WritelnDecorator(stream)
|
46
|
+
|
47
|
+
def run(self, test):
|
48
|
+
global total_test_count
|
49
|
+
global error_test_count
|
50
|
+
result = unittest._TextTestResult(self.stream, True, 1)
|
51
|
+
test(result)
|
52
|
+
if not result.wasSuccessful():
|
53
|
+
self.stream.write(' FAIL:')
|
54
|
+
result.printErrors()
|
55
|
+
failed.append(self.testname)
|
56
|
+
else:
|
57
|
+
self.stream.write(' ok\n')
|
58
|
+
total_test_count += result.testsRun
|
59
|
+
error_test_count += len(result.errors) + len(result.failures)
|
60
|
+
return result
|
61
|
+
|
62
|
+
|
63
|
+
def run_tests(with_coverage=False):
|
64
|
+
# needed to avoid confusion involving atexit handlers
|
65
|
+
import logging
|
66
|
+
|
67
|
+
if sys.argv[1:]:
|
68
|
+
# test only files given on cmdline
|
69
|
+
files = [entry + '.py' for entry in sys.argv[1:] if entry.startswith('test_')]
|
70
|
+
else:
|
71
|
+
files = [entry for entry in os.listdir(testdir)
|
72
|
+
if (entry.startswith('test_') and entry.endswith('.py'))]
|
73
|
+
files.sort()
|
74
|
+
|
75
|
+
WIDTH = 85
|
76
|
+
|
77
|
+
print >>sys.stderr, \
|
78
|
+
('Pygments %s Test Suite running%s, stand by...' %
|
79
|
+
(pygments.__version__,
|
80
|
+
with_coverage and " with coverage analysis" or "")).center(WIDTH)
|
81
|
+
print >>sys.stderr, ('(using Python %s)' % sys.version.split()[0]).center(WIDTH)
|
82
|
+
print >>sys.stderr, '='*WIDTH
|
83
|
+
|
84
|
+
if with_coverage:
|
85
|
+
coverage.erase()
|
86
|
+
coverage.start()
|
87
|
+
|
88
|
+
for testfile in files:
|
89
|
+
globs = {'__file__': join(testdir, testfile)}
|
90
|
+
try:
|
91
|
+
execfile(join(testdir, testfile), globs)
|
92
|
+
except Exception, exc:
|
93
|
+
raise
|
94
|
+
err(testfile, 'execfile', exc)
|
95
|
+
continue
|
96
|
+
sys.stderr.write(testfile[:-3] + ': ')
|
97
|
+
try:
|
98
|
+
runner = QuietTestRunner(testfile[:-3])
|
99
|
+
# make a test suite of all TestCases in the file
|
100
|
+
tests = []
|
101
|
+
for name, thing in globs.iteritems():
|
102
|
+
if name.endswith('Test'):
|
103
|
+
tests.append((name, unittest.makeSuite(thing)))
|
104
|
+
tests.sort()
|
105
|
+
suite = unittest.TestSuite()
|
106
|
+
suite.addTests([x[1] for x in tests])
|
107
|
+
runner.run(suite)
|
108
|
+
except Exception, exc:
|
109
|
+
err(testfile, 'running test', exc)
|
110
|
+
|
111
|
+
print >>sys.stderr, '='*WIDTH
|
112
|
+
if failed:
|
113
|
+
print >>sys.stderr, '%d of %d tests failed.' % \
|
114
|
+
(error_test_count, total_test_count)
|
115
|
+
print >>sys.stderr, 'Tests failed in:', ', '.join(failed)
|
116
|
+
ret = 1
|
117
|
+
else:
|
118
|
+
if total_test_count == 1:
|
119
|
+
print >>sys.stderr, '1 test happy.'
|
120
|
+
else:
|
121
|
+
print >>sys.stderr, 'All %d tests happy.' % total_test_count
|
122
|
+
ret = 0
|
123
|
+
|
124
|
+
if with_coverage:
|
125
|
+
coverage.stop()
|
126
|
+
modules = [mod for name, mod in sys.modules.iteritems()
|
127
|
+
if name.startswith('pygments.') and mod]
|
128
|
+
coverage.report(modules)
|
129
|
+
|
130
|
+
return ret
|
131
|
+
|
132
|
+
|
133
|
+
if __name__ == '__main__':
|
134
|
+
with_coverage = False
|
135
|
+
if sys.argv[1:2] == ['-C']:
|
136
|
+
with_coverage = bool(coverage)
|
137
|
+
del sys.argv[1]
|
138
|
+
sys.exit(run_tests(with_coverage))
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
Pygments unit tests
|
4
|
+
~~~~~~~~~~~~~~~~~~
|
5
|
+
|
6
|
+
Usage::
|
7
|
+
|
8
|
+
python run.py [testfile ...]
|
9
|
+
|
10
|
+
|
11
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
12
|
+
:license: BSD, see LICENSE for details.
|
13
|
+
"""
|
14
|
+
|
15
|
+
import sys, os
|
16
|
+
|
17
|
+
if sys.version_info >= (3,):
|
18
|
+
# copy test suite over to "build/lib" and convert it
|
19
|
+
print ('Copying and converting sources to build/lib/test...')
|
20
|
+
from distutils.util import copydir_run_2to3
|
21
|
+
testroot = os.path.dirname(__file__)
|
22
|
+
newroot = os.path.join(testroot, '..', 'build/lib/test')
|
23
|
+
copydir_run_2to3(testroot, newroot)
|
24
|
+
# make nose believe that we run from the converted dir
|
25
|
+
os.chdir(newroot)
|
26
|
+
else:
|
27
|
+
# only find tests in this directory
|
28
|
+
if os.path.dirname(__file__):
|
29
|
+
os.chdir(os.path.dirname(__file__))
|
30
|
+
|
31
|
+
|
32
|
+
try:
|
33
|
+
import nose
|
34
|
+
except ImportError:
|
35
|
+
print ('nose is required to run the Pygments test suite')
|
36
|
+
sys.exit(1)
|
37
|
+
|
38
|
+
try:
|
39
|
+
# make sure the current source is first on sys.path
|
40
|
+
sys.path.insert(0, '..')
|
41
|
+
import pygments
|
42
|
+
except ImportError:
|
43
|
+
print ('Cannot find Pygments to test: %s' % sys.exc_info()[1])
|
44
|
+
sys.exit(1)
|
45
|
+
else:
|
46
|
+
print ('Pygments %s test suite running (Python %s)...' %
|
47
|
+
(pygments.__version__, sys.version.split()[0]))
|
48
|
+
|
49
|
+
nose.main()
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
"""
|
3
|
+
Support for Pygments tests
|
4
|
+
"""
|
5
|
+
|
6
|
+
import os
|
7
|
+
|
8
|
+
|
9
|
+
def location(mod_name):
|
10
|
+
"""
|
11
|
+
Return the file and directory that the code for *mod_name* is in.
|
12
|
+
"""
|
13
|
+
source = mod_name.endswith("pyc") and mod_name[:-1] or mod_name
|
14
|
+
source = os.path.abspath(source)
|
15
|
+
return source, os.path.dirname(source)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
|
2
|
+
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
|
3
|
+
!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
|
4
|
+
!_TAG_PROGRAM_NAME Exuberant Ctags //
|
5
|
+
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
|
6
|
+
!_TAG_PROGRAM_VERSION 5.8 //
|
7
|
+
HtmlFormatter test_html_formatter.py 19;" i
|
8
|
+
HtmlFormatterTest test_html_formatter.py 34;" c
|
9
|
+
NullFormatter test_html_formatter.py 19;" i
|
10
|
+
PythonLexer test_html_formatter.py 18;" i
|
11
|
+
StringIO test_html_formatter.py 13;" i
|
12
|
+
dirname test_html_formatter.py 16;" i
|
13
|
+
escape_html test_html_formatter.py 20;" i
|
14
|
+
fp test_html_formatter.py 27;" v
|
15
|
+
inspect test_html_formatter.py 15;" i
|
16
|
+
isfile test_html_formatter.py 16;" i
|
17
|
+
join test_html_formatter.py 16;" i
|
18
|
+
os test_html_formatter.py 10;" i
|
19
|
+
re test_html_formatter.py 11;" i
|
20
|
+
subprocess test_html_formatter.py 125;" i
|
21
|
+
support test_html_formatter.py 23;" i
|
22
|
+
tempfile test_html_formatter.py 14;" i
|
23
|
+
test_all_options test_html_formatter.py 72;" m class:HtmlFormatterTest
|
24
|
+
test_correct_output test_html_formatter.py 35;" m class:HtmlFormatterTest
|
25
|
+
test_ctags test_html_formatter.py 165;" m class:HtmlFormatterTest
|
26
|
+
test_external_css test_html_formatter.py 48;" m class:HtmlFormatterTest
|
27
|
+
test_get_style_defs test_html_formatter.py 141;" m class:HtmlFormatterTest
|
28
|
+
test_lineanchors test_html_formatter.py 98;" m class:HtmlFormatterTest
|
29
|
+
test_lineanchors_with_startnum test_html_formatter.py 106;" m class:HtmlFormatterTest
|
30
|
+
test_linenos test_html_formatter.py 82;" m class:HtmlFormatterTest
|
31
|
+
test_linenos_with_startnum test_html_formatter.py 90;" m class:HtmlFormatterTest
|
32
|
+
test_unicode_options test_html_formatter.py 155;" m class:HtmlFormatterTest
|
33
|
+
test_valid_output test_html_formatter.py 114;" m class:HtmlFormatterTest
|
34
|
+
tokensource test_html_formatter.py 29;" v
|
35
|
+
uni_open test_html_formatter.py 21;" i
|
36
|
+
unittest test_html_formatter.py 12;" i
|
@@ -0,0 +1,295 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
Pygments basic API tests
|
4
|
+
~~~~~~~~~~~~~~~~~~~~~~~~
|
5
|
+
|
6
|
+
:copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
|
7
|
+
:license: BSD, see LICENSE for details.
|
8
|
+
"""
|
9
|
+
|
10
|
+
import os
|
11
|
+
import random
|
12
|
+
import unittest
|
13
|
+
|
14
|
+
from pygments import lexers, formatters, filters, format
|
15
|
+
from pygments.token import _TokenType, Text
|
16
|
+
from pygments.lexer import RegexLexer
|
17
|
+
from pygments.formatters.img import FontNotFound
|
18
|
+
from pygments.util import BytesIO, StringIO, bytes, b
|
19
|
+
|
20
|
+
import support
|
21
|
+
|
22
|
+
TESTFILE, TESTDIR = support.location(__file__)
|
23
|
+
|
24
|
+
test_content = [chr(i) for i in xrange(33, 128)] * 5
|
25
|
+
random.shuffle(test_content)
|
26
|
+
test_content = ''.join(test_content) + '\n'
|
27
|
+
|
28
|
+
|
29
|
+
def test_lexer_import_all():
|
30
|
+
# instantiate every lexer, to see if the token type defs are correct
|
31
|
+
for x in lexers.LEXERS.keys():
|
32
|
+
c = getattr(lexers, x)()
|
33
|
+
|
34
|
+
|
35
|
+
def test_lexer_classes():
|
36
|
+
# test that every lexer class has the correct public API
|
37
|
+
def verify(cls):
|
38
|
+
assert type(cls.name) is str
|
39
|
+
for attr in 'aliases', 'filenames', 'alias_filenames', 'mimetypes':
|
40
|
+
assert hasattr(cls, attr)
|
41
|
+
assert type(getattr(cls, attr)) is list, \
|
42
|
+
"%s: %s attribute wrong" % (cls, attr)
|
43
|
+
result = cls.analyse_text("abc")
|
44
|
+
assert isinstance(result, float) and 0.0 <= result <= 1.0
|
45
|
+
result = cls.analyse_text(".abc")
|
46
|
+
assert isinstance(result, float) and 0.0 <= result <= 1.0
|
47
|
+
|
48
|
+
inst = cls(opt1="val1", opt2="val2")
|
49
|
+
if issubclass(cls, RegexLexer):
|
50
|
+
if not hasattr(cls, '_tokens'):
|
51
|
+
# if there's no "_tokens", the lexer has to be one with
|
52
|
+
# multiple tokendef variants
|
53
|
+
assert cls.token_variants
|
54
|
+
for variant in cls.tokens:
|
55
|
+
assert 'root' in cls.tokens[variant]
|
56
|
+
else:
|
57
|
+
assert 'root' in cls._tokens, \
|
58
|
+
'%s has no root state' % cls
|
59
|
+
|
60
|
+
if cls.name in ['XQuery', 'Opa']: # XXX temporary
|
61
|
+
return
|
62
|
+
|
63
|
+
tokens = list(inst.get_tokens(test_content))
|
64
|
+
txt = ""
|
65
|
+
for token in tokens:
|
66
|
+
assert isinstance(token, tuple)
|
67
|
+
assert isinstance(token[0], _TokenType)
|
68
|
+
if isinstance(token[1], str):
|
69
|
+
print repr(token[1])
|
70
|
+
assert isinstance(token[1], unicode)
|
71
|
+
txt += token[1]
|
72
|
+
assert txt == test_content, "%s lexer roundtrip failed: %r != %r" % \
|
73
|
+
(cls.name, test_content, txt)
|
74
|
+
|
75
|
+
for lexer in lexers._iter_lexerclasses():
|
76
|
+
yield verify, lexer
|
77
|
+
|
78
|
+
|
79
|
+
def test_lexer_options():
|
80
|
+
# test that the basic options work
|
81
|
+
def ensure(tokens, output):
|
82
|
+
concatenated = ''.join(token[1] for token in tokens)
|
83
|
+
assert concatenated == output, \
|
84
|
+
'%s: %r != %r' % (lexer, concatenated, output)
|
85
|
+
def verify(cls):
|
86
|
+
inst = cls(stripnl=False)
|
87
|
+
ensure(inst.get_tokens('a\nb'), 'a\nb\n')
|
88
|
+
ensure(inst.get_tokens('\n\n\n'), '\n\n\n')
|
89
|
+
inst = cls(stripall=True)
|
90
|
+
ensure(inst.get_tokens(' \n b\n\n\n'), 'b\n')
|
91
|
+
# some lexers require full lines in input
|
92
|
+
if cls.__name__ not in (
|
93
|
+
'PythonConsoleLexer', 'RConsoleLexer', 'RubyConsoleLexer',
|
94
|
+
'SqliteConsoleLexer', 'MatlabSessionLexer', 'ErlangShellLexer',
|
95
|
+
'BashSessionLexer', 'LiterateHaskellLexer', 'LiterateAgdaLexer',
|
96
|
+
'PostgresConsoleLexer', 'ElixirConsoleLexer', 'JuliaConsoleLexer',
|
97
|
+
'RobotFrameworkLexer', 'DylanConsoleLexer', 'ShellSessionLexer'):
|
98
|
+
inst = cls(ensurenl=False)
|
99
|
+
ensure(inst.get_tokens('a\nb'), 'a\nb')
|
100
|
+
inst = cls(ensurenl=False, stripall=True)
|
101
|
+
ensure(inst.get_tokens('a\nb\n\n'), 'a\nb')
|
102
|
+
|
103
|
+
for lexer in lexers._iter_lexerclasses():
|
104
|
+
if lexer.__name__ == 'RawTokenLexer':
|
105
|
+
# this one is special
|
106
|
+
continue
|
107
|
+
yield verify, lexer
|
108
|
+
|
109
|
+
|
110
|
+
def test_get_lexers():
|
111
|
+
# test that the lexers functions work
|
112
|
+
def verify(func, args):
|
113
|
+
x = func(opt='val', *args)
|
114
|
+
assert isinstance(x, lexers.PythonLexer)
|
115
|
+
assert x.options["opt"] == "val"
|
116
|
+
|
117
|
+
for func, args in [(lexers.get_lexer_by_name, ("python",)),
|
118
|
+
(lexers.get_lexer_for_filename, ("test.py",)),
|
119
|
+
(lexers.get_lexer_for_mimetype, ("text/x-python",)),
|
120
|
+
(lexers.guess_lexer, ("#!/usr/bin/python -O\nprint",)),
|
121
|
+
(lexers.guess_lexer_for_filename, ("a.py", "<%= @foo %>"))
|
122
|
+
]:
|
123
|
+
yield verify, func, args
|
124
|
+
|
125
|
+
for cls, (_, lname, aliases, _, mimetypes) in lexers.LEXERS.iteritems():
|
126
|
+
assert cls == lexers.find_lexer_class(lname).__name__
|
127
|
+
|
128
|
+
for alias in aliases:
|
129
|
+
assert cls == lexers.get_lexer_by_name(alias).__class__.__name__
|
130
|
+
|
131
|
+
for mimetype in mimetypes:
|
132
|
+
assert cls == lexers.get_lexer_for_mimetype(mimetype).__class__.__name__
|
133
|
+
|
134
|
+
|
135
|
+
def test_formatter_public_api():
|
136
|
+
ts = list(lexers.PythonLexer().get_tokens("def f(): pass"))
|
137
|
+
out = StringIO()
|
138
|
+
# test that every formatter class has the correct public API
|
139
|
+
def verify(formatter, info):
|
140
|
+
assert len(info) == 4
|
141
|
+
assert info[0], "missing formatter name"
|
142
|
+
assert info[1], "missing formatter aliases"
|
143
|
+
assert info[3], "missing formatter docstring"
|
144
|
+
|
145
|
+
if formatter.name == 'Raw tokens':
|
146
|
+
# will not work with Unicode output file
|
147
|
+
return
|
148
|
+
|
149
|
+
try:
|
150
|
+
inst = formatter(opt1="val1")
|
151
|
+
except (ImportError, FontNotFound):
|
152
|
+
return
|
153
|
+
try:
|
154
|
+
inst.get_style_defs()
|
155
|
+
except NotImplementedError:
|
156
|
+
# may be raised by formatters for which it doesn't make sense
|
157
|
+
pass
|
158
|
+
inst.format(ts, out)
|
159
|
+
|
160
|
+
for formatter, info in formatters.FORMATTERS.iteritems():
|
161
|
+
yield verify, formatter, info
|
162
|
+
|
163
|
+
def test_formatter_encodings():
|
164
|
+
from pygments.formatters import HtmlFormatter
|
165
|
+
|
166
|
+
# unicode output
|
167
|
+
fmt = HtmlFormatter()
|
168
|
+
tokens = [(Text, u"ä")]
|
169
|
+
out = format(tokens, fmt)
|
170
|
+
assert type(out) is unicode
|
171
|
+
assert u"ä" in out
|
172
|
+
|
173
|
+
# encoding option
|
174
|
+
fmt = HtmlFormatter(encoding="latin1")
|
175
|
+
tokens = [(Text, u"ä")]
|
176
|
+
assert u"ä".encode("latin1") in format(tokens, fmt)
|
177
|
+
|
178
|
+
# encoding and outencoding option
|
179
|
+
fmt = HtmlFormatter(encoding="latin1", outencoding="utf8")
|
180
|
+
tokens = [(Text, u"ä")]
|
181
|
+
assert u"ä".encode("utf8") in format(tokens, fmt)
|
182
|
+
|
183
|
+
|
184
|
+
def test_formatter_unicode_handling():
|
185
|
+
# test that the formatter supports encoding and Unicode
|
186
|
+
tokens = list(lexers.PythonLexer(encoding='utf-8').
|
187
|
+
get_tokens("def f(): 'ä'"))
|
188
|
+
|
189
|
+
def verify(formatter):
|
190
|
+
try:
|
191
|
+
inst = formatter(encoding=None)
|
192
|
+
except (ImportError, FontNotFound):
|
193
|
+
# some dependency or font not installed
|
194
|
+
return
|
195
|
+
|
196
|
+
if formatter.name != 'Raw tokens':
|
197
|
+
out = format(tokens, inst)
|
198
|
+
if formatter.unicodeoutput:
|
199
|
+
assert type(out) is unicode
|
200
|
+
|
201
|
+
inst = formatter(encoding='utf-8')
|
202
|
+
out = format(tokens, inst)
|
203
|
+
assert type(out) is bytes, '%s: %r' % (formatter, out)
|
204
|
+
# Cannot test for encoding, since formatters may have to escape
|
205
|
+
# non-ASCII characters.
|
206
|
+
else:
|
207
|
+
inst = formatter()
|
208
|
+
out = format(tokens, inst)
|
209
|
+
assert type(out) is bytes, '%s: %r' % (formatter, out)
|
210
|
+
|
211
|
+
for formatter, info in formatters.FORMATTERS.iteritems():
|
212
|
+
yield verify, formatter
|
213
|
+
|
214
|
+
|
215
|
+
def test_get_formatters():
|
216
|
+
# test that the formatters functions work
|
217
|
+
x = formatters.get_formatter_by_name("html", opt="val")
|
218
|
+
assert isinstance(x, formatters.HtmlFormatter)
|
219
|
+
assert x.options["opt"] == "val"
|
220
|
+
|
221
|
+
x = formatters.get_formatter_for_filename("a.html", opt="val")
|
222
|
+
assert isinstance(x, formatters.HtmlFormatter)
|
223
|
+
assert x.options["opt"] == "val"
|
224
|
+
|
225
|
+
|
226
|
+
def test_styles():
|
227
|
+
# minimal style test
|
228
|
+
from pygments.formatters import HtmlFormatter
|
229
|
+
fmt = HtmlFormatter(style="pastie")
|
230
|
+
|
231
|
+
|
232
|
+
class FiltersTest(unittest.TestCase):
|
233
|
+
|
234
|
+
def test_basic(self):
|
235
|
+
filter_args = {
|
236
|
+
'whitespace': {'spaces': True, 'tabs': True, 'newlines': True},
|
237
|
+
'highlight': {'names': ['isinstance', 'lexers', 'x']},
|
238
|
+
}
|
239
|
+
for x in filters.FILTERS.keys():
|
240
|
+
lx = lexers.PythonLexer()
|
241
|
+
lx.add_filter(x, **filter_args.get(x, {}))
|
242
|
+
fp = open(TESTFILE, 'rb')
|
243
|
+
try:
|
244
|
+
text = fp.read().decode('utf-8')
|
245
|
+
finally:
|
246
|
+
fp.close()
|
247
|
+
tokens = list(lx.get_tokens(text))
|
248
|
+
roundtext = ''.join([t[1] for t in tokens])
|
249
|
+
if x not in ('whitespace', 'keywordcase'):
|
250
|
+
# these filters change the text
|
251
|
+
self.assertEqual(roundtext, text,
|
252
|
+
"lexer roundtrip with %s filter failed" % x)
|
253
|
+
|
254
|
+
def test_raiseonerror(self):
|
255
|
+
lx = lexers.PythonLexer()
|
256
|
+
lx.add_filter('raiseonerror', excclass=RuntimeError)
|
257
|
+
self.assertRaises(RuntimeError, list, lx.get_tokens('$'))
|
258
|
+
|
259
|
+
def test_whitespace(self):
|
260
|
+
lx = lexers.PythonLexer()
|
261
|
+
lx.add_filter('whitespace', spaces='%')
|
262
|
+
fp = open(TESTFILE, 'rb')
|
263
|
+
try:
|
264
|
+
text = fp.read().decode('utf-8')
|
265
|
+
finally:
|
266
|
+
fp.close()
|
267
|
+
lxtext = ''.join([t[1] for t in list(lx.get_tokens(text))])
|
268
|
+
self.assertFalse(' ' in lxtext)
|
269
|
+
|
270
|
+
def test_keywordcase(self):
|
271
|
+
lx = lexers.PythonLexer()
|
272
|
+
lx.add_filter('keywordcase', case='capitalize')
|
273
|
+
fp = open(TESTFILE, 'rb')
|
274
|
+
try:
|
275
|
+
text = fp.read().decode('utf-8')
|
276
|
+
finally:
|
277
|
+
fp.close()
|
278
|
+
lxtext = ''.join([t[1] for t in list(lx.get_tokens(text))])
|
279
|
+
self.assertTrue('Def' in lxtext and 'Class' in lxtext)
|
280
|
+
|
281
|
+
def test_codetag(self):
|
282
|
+
lx = lexers.PythonLexer()
|
283
|
+
lx.add_filter('codetagify')
|
284
|
+
text = u'# BUG: text'
|
285
|
+
tokens = list(lx.get_tokens(text))
|
286
|
+
self.assertEqual('# ', tokens[0][1])
|
287
|
+
self.assertEqual('BUG', tokens[1][1])
|
288
|
+
|
289
|
+
def test_codetag_boundary(self):
|
290
|
+
# ticket #368
|
291
|
+
lx = lexers.PythonLexer()
|
292
|
+
lx.add_filter('codetagify')
|
293
|
+
text = u'# DEBUG: text'
|
294
|
+
tokens = list(lx.get_tokens(text))
|
295
|
+
self.assertEqual('# DEBUG: text', tokens[0][1])
|