gitlab-pygments.rb 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +6 -0
- data/Gemfile +2 -0
- data/README.md +91 -0
- data/Rakefile +78 -0
- data/bench.rb +22 -0
- data/cache-lexers.rb +8 -0
- data/lexers +0 -0
- data/lib/pygments/lexer.rb +148 -0
- data/lib/pygments/mentos.py +344 -0
- data/lib/pygments/popen.rb +389 -0
- data/lib/pygments/version.rb +3 -0
- data/lib/pygments.rb +8 -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 +276 -0
- data/vendor/custom_formatters/gitlab.py +171 -0
- data/vendor/custom_lexers/github.py +362 -0
- data/vendor/pygments-main/AUTHORS +115 -0
- data/vendor/pygments-main/CHANGES +762 -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 +43 -0
- data/vendor/pygments-main/docs/src/lexerdevelopment.txt +551 -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/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 +433 -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 +357 -0
- data/vendor/pygments-main/pygments/formatter.py +92 -0
- data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
- data/vendor/pygments-main/pygments/formatters/_mapping.py +94 -0
- data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
- data/vendor/pygments-main/pygments/formatters/gitlab.py +171 -0
- data/vendor/pygments-main/pygments/formatters/html.py +750 -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 +117 -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 +697 -0
- data/vendor/pygments-main/pygments/lexers/__init__.py +229 -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/_luabuiltins.py +249 -0
- data/vendor/pygments-main/pygments/lexers/_mapping.py +298 -0
- data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +232 -0
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +29 -0
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +3 -0
- data/vendor/pygments-main/pygments/lexers/agile.py +1803 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +360 -0
- data/vendor/pygments-main/pygments/lexers/compiled.py +2891 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +636 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +1832 -0
- data/vendor/pygments-main/pygments/lexers/github.py +362 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +847 -0
- data/vendor/pygments-main/pygments/lexers/math.py +1072 -0
- data/vendor/pygments-main/pygments/lexers/other.py +3339 -0
- data/vendor/pygments-main/pygments/lexers/parsers.py +695 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +361 -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 +1631 -0
- data/vendor/pygments-main/pygments/lexers/text.py +1753 -0
- data/vendor/pygments-main/pygments/lexers/web.py +2864 -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 +130 -0
- data/vendor/pygments-main/pygments/util.py +232 -0
- data/vendor/pygments-main/scripts/check_sources.py +242 -0
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +30 -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 +171 -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 +6 -0
- data/vendor/pygments-main/setup.py +88 -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/CPDictionary.j +611 -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/Errors.scala +18 -0
- data/vendor/pygments-main/tests/examplefiles/File.hy +174 -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/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/badcase.java +2 -0
- data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
- data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -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 +40 -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.c +2080 -0
- data/vendor/pygments-main/tests/examplefiles/example.cls +15 -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.kt +47 -0
- data/vendor/pygments-main/tests/examplefiles/example.lua +250 -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.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.rb +1852 -0
- data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
- data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -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.tea +34 -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.yaml +302 -0
- data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -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/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/html+php_faulty.php +1 -0
- data/vendor/pygments-main/tests/examplefiles/http_request_example +14 -0
- data/vendor/pygments-main/tests/examplefiles/http_response_example +27 -0
- data/vendor/pygments-main/tests/examplefiles/import.hs +4 -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/lighttpd_config.conf +13 -0
- data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -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 +27 -0
- data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -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/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 +25 -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/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/pycon_test.pycon +14 -0
- data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -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/ruby_func_def.rb +11 -0
- data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -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/test.R +119 -0
- data/vendor/pygments-main/tests/examplefiles/test.adb +211 -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.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.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.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.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/truncated.pytb +15 -0
- data/vendor/pygments-main/tests/examplefiles/type.lisp +1202 -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/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 +48 -0
- data/vendor/pygments-main/tests/support.py +15 -0
- data/vendor/pygments-main/tests/test_basic_api.py +294 -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 +97 -0
- data/vendor/pygments-main/tests/test_html_formatter.py +162 -0
- data/vendor/pygments-main/tests/test_latex_formatter.py +55 -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 +116 -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 +492 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.util
|
|
4
|
+
~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
Utility functions.
|
|
7
|
+
|
|
8
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
|
9
|
+
:license: BSD, see LICENSE for details.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import re
|
|
13
|
+
import sys
|
|
14
|
+
import codecs
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
split_path_re = re.compile(r'[/\\ ]')
|
|
18
|
+
doctype_lookup_re = re.compile(r'''(?smx)
|
|
19
|
+
(<\?.*?\?>)?\s*
|
|
20
|
+
<!DOCTYPE\s+(
|
|
21
|
+
[a-zA-Z_][a-zA-Z0-9]*\s+
|
|
22
|
+
[a-zA-Z_][a-zA-Z0-9]*\s+
|
|
23
|
+
"[^"]*")
|
|
24
|
+
[^>]*>
|
|
25
|
+
''')
|
|
26
|
+
tag_re = re.compile(r'<(.+?)(\s.*?)?>.*?</.+?>(?uism)')
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ClassNotFound(ValueError):
|
|
30
|
+
"""
|
|
31
|
+
If one of the get_*_by_* functions didn't find a matching class.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class OptionError(Exception):
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def get_choice_opt(options, optname, allowed, default=None, normcase=False):
|
|
40
|
+
string = options.get(optname, default)
|
|
41
|
+
if normcase:
|
|
42
|
+
string = string.lower()
|
|
43
|
+
if string not in allowed:
|
|
44
|
+
raise OptionError('Value for option %s must be one of %s' %
|
|
45
|
+
(optname, ', '.join(map(str, allowed))))
|
|
46
|
+
return string
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def get_bool_opt(options, optname, default=None):
|
|
50
|
+
string = options.get(optname, default)
|
|
51
|
+
if isinstance(string, bool):
|
|
52
|
+
return string
|
|
53
|
+
elif isinstance(string, int):
|
|
54
|
+
return bool(string)
|
|
55
|
+
elif not isinstance(string, basestring):
|
|
56
|
+
raise OptionError('Invalid type %r for option %s; use '
|
|
57
|
+
'1/0, yes/no, true/false, on/off' % (
|
|
58
|
+
string, optname))
|
|
59
|
+
elif string.lower() in ('1', 'yes', 'true', 'on'):
|
|
60
|
+
return True
|
|
61
|
+
elif string.lower() in ('0', 'no', 'false', 'off'):
|
|
62
|
+
return False
|
|
63
|
+
else:
|
|
64
|
+
raise OptionError('Invalid value %r for option %s; use '
|
|
65
|
+
'1/0, yes/no, true/false, on/off' % (
|
|
66
|
+
string, optname))
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def get_int_opt(options, optname, default=None):
|
|
70
|
+
string = options.get(optname, default)
|
|
71
|
+
try:
|
|
72
|
+
return int(string)
|
|
73
|
+
except TypeError:
|
|
74
|
+
raise OptionError('Invalid type %r for option %s; you '
|
|
75
|
+
'must give an integer value' % (
|
|
76
|
+
string, optname))
|
|
77
|
+
except ValueError:
|
|
78
|
+
raise OptionError('Invalid value %r for option %s; you '
|
|
79
|
+
'must give an integer value' % (
|
|
80
|
+
string, optname))
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def get_list_opt(options, optname, default=None):
|
|
84
|
+
val = options.get(optname, default)
|
|
85
|
+
if isinstance(val, basestring):
|
|
86
|
+
return val.split()
|
|
87
|
+
elif isinstance(val, (list, tuple)):
|
|
88
|
+
return list(val)
|
|
89
|
+
else:
|
|
90
|
+
raise OptionError('Invalid type %r for option %s; you '
|
|
91
|
+
'must give a list value' % (
|
|
92
|
+
val, optname))
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def docstring_headline(obj):
|
|
96
|
+
if not obj.__doc__:
|
|
97
|
+
return ''
|
|
98
|
+
res = []
|
|
99
|
+
for line in obj.__doc__.strip().splitlines():
|
|
100
|
+
if line.strip():
|
|
101
|
+
res.append(" " + line.strip())
|
|
102
|
+
else:
|
|
103
|
+
break
|
|
104
|
+
return ''.join(res).lstrip()
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def make_analysator(f):
|
|
108
|
+
"""
|
|
109
|
+
Return a static text analysation function that
|
|
110
|
+
returns float values.
|
|
111
|
+
"""
|
|
112
|
+
def text_analyse(text):
|
|
113
|
+
try:
|
|
114
|
+
rv = f(text)
|
|
115
|
+
except Exception:
|
|
116
|
+
return 0.0
|
|
117
|
+
if not rv:
|
|
118
|
+
return 0.0
|
|
119
|
+
try:
|
|
120
|
+
return min(1.0, max(0.0, float(rv)))
|
|
121
|
+
except (ValueError, TypeError):
|
|
122
|
+
return 0.0
|
|
123
|
+
text_analyse.__doc__ = f.__doc__
|
|
124
|
+
return staticmethod(text_analyse)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def shebang_matches(text, regex):
|
|
128
|
+
"""
|
|
129
|
+
Check if the given regular expression matches the last part of the
|
|
130
|
+
shebang if one exists.
|
|
131
|
+
|
|
132
|
+
>>> from pygments.util import shebang_matches
|
|
133
|
+
>>> shebang_matches('#!/usr/bin/env python', r'python(2\.\d)?')
|
|
134
|
+
True
|
|
135
|
+
>>> shebang_matches('#!/usr/bin/python2.4', r'python(2\.\d)?')
|
|
136
|
+
True
|
|
137
|
+
>>> shebang_matches('#!/usr/bin/python-ruby', r'python(2\.\d)?')
|
|
138
|
+
False
|
|
139
|
+
>>> shebang_matches('#!/usr/bin/python/ruby', r'python(2\.\d)?')
|
|
140
|
+
False
|
|
141
|
+
>>> shebang_matches('#!/usr/bin/startsomethingwith python',
|
|
142
|
+
... r'python(2\.\d)?')
|
|
143
|
+
True
|
|
144
|
+
|
|
145
|
+
It also checks for common windows executable file extensions::
|
|
146
|
+
|
|
147
|
+
>>> shebang_matches('#!C:\\Python2.4\\Python.exe', r'python(2\.\d)?')
|
|
148
|
+
True
|
|
149
|
+
|
|
150
|
+
Parameters (``'-f'`` or ``'--foo'`` are ignored so ``'perl'`` does
|
|
151
|
+
the same as ``'perl -e'``)
|
|
152
|
+
|
|
153
|
+
Note that this method automatically searches the whole string (eg:
|
|
154
|
+
the regular expression is wrapped in ``'^$'``)
|
|
155
|
+
"""
|
|
156
|
+
index = text.find('\n')
|
|
157
|
+
if index >= 0:
|
|
158
|
+
first_line = text[:index].lower()
|
|
159
|
+
else:
|
|
160
|
+
first_line = text.lower()
|
|
161
|
+
if first_line.startswith('#!'):
|
|
162
|
+
try:
|
|
163
|
+
found = [x for x in split_path_re.split(first_line[2:].strip())
|
|
164
|
+
if x and not x.startswith('-')][-1]
|
|
165
|
+
except IndexError:
|
|
166
|
+
return False
|
|
167
|
+
regex = re.compile('^%s(\.(exe|cmd|bat|bin))?$' % regex, re.IGNORECASE)
|
|
168
|
+
if regex.search(found) is not None:
|
|
169
|
+
return True
|
|
170
|
+
return False
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def doctype_matches(text, regex):
|
|
174
|
+
"""
|
|
175
|
+
Check if the doctype matches a regular expression (if present).
|
|
176
|
+
Note that this method only checks the first part of a DOCTYPE.
|
|
177
|
+
eg: 'html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"'
|
|
178
|
+
"""
|
|
179
|
+
m = doctype_lookup_re.match(text)
|
|
180
|
+
if m is None:
|
|
181
|
+
return False
|
|
182
|
+
doctype = m.group(2)
|
|
183
|
+
return re.compile(regex).match(doctype.strip()) is not None
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def html_doctype_matches(text):
|
|
187
|
+
"""
|
|
188
|
+
Check if the file looks like it has a html doctype.
|
|
189
|
+
"""
|
|
190
|
+
return doctype_matches(text, r'html\s+PUBLIC\s+"-//W3C//DTD X?HTML.*')
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
_looks_like_xml_cache = {}
|
|
194
|
+
def looks_like_xml(text):
|
|
195
|
+
"""
|
|
196
|
+
Check if a doctype exists or if we have some tags.
|
|
197
|
+
"""
|
|
198
|
+
key = hash(text)
|
|
199
|
+
try:
|
|
200
|
+
return _looks_like_xml_cache[key]
|
|
201
|
+
except KeyError:
|
|
202
|
+
m = doctype_lookup_re.match(text)
|
|
203
|
+
if m is not None:
|
|
204
|
+
return True
|
|
205
|
+
rv = tag_re.search(text[:1000]) is not None
|
|
206
|
+
_looks_like_xml_cache[key] = rv
|
|
207
|
+
return rv
|
|
208
|
+
|
|
209
|
+
# Python 2/3 compatibility
|
|
210
|
+
|
|
211
|
+
if sys.version_info < (3,0):
|
|
212
|
+
b = bytes = str
|
|
213
|
+
u_prefix = 'u'
|
|
214
|
+
import StringIO, cStringIO
|
|
215
|
+
BytesIO = cStringIO.StringIO
|
|
216
|
+
StringIO = StringIO.StringIO
|
|
217
|
+
uni_open = codecs.open
|
|
218
|
+
else:
|
|
219
|
+
import builtins
|
|
220
|
+
bytes = builtins.bytes
|
|
221
|
+
u_prefix = ''
|
|
222
|
+
def b(s):
|
|
223
|
+
if isinstance(s, str):
|
|
224
|
+
return bytes(map(ord, s))
|
|
225
|
+
elif isinstance(s, bytes):
|
|
226
|
+
return s
|
|
227
|
+
else:
|
|
228
|
+
raise TypeError("Invalid argument %r for b()" % (s,))
|
|
229
|
+
import io
|
|
230
|
+
BytesIO = io.BytesIO
|
|
231
|
+
StringIO = io.StringIO
|
|
232
|
+
uni_open = builtins.open
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
Checker for file headers
|
|
5
|
+
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
6
|
+
|
|
7
|
+
Make sure each Python file has a correct file header
|
|
8
|
+
including copyright and license information.
|
|
9
|
+
|
|
10
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
|
11
|
+
:license: BSD, see LICENSE for details.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import sys, os, re
|
|
15
|
+
import getopt
|
|
16
|
+
import cStringIO
|
|
17
|
+
from os.path import join, splitext, abspath
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
checkers = {}
|
|
21
|
+
|
|
22
|
+
def checker(*suffixes, **kwds):
|
|
23
|
+
only_pkg = kwds.pop('only_pkg', False)
|
|
24
|
+
def deco(func):
|
|
25
|
+
for suffix in suffixes:
|
|
26
|
+
checkers.setdefault(suffix, []).append(func)
|
|
27
|
+
func.only_pkg = only_pkg
|
|
28
|
+
return func
|
|
29
|
+
return deco
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
name_mail_re = r'[\w ]+(<.*?>)?'
|
|
33
|
+
copyright_re = re.compile(r'^ :copyright: Copyright 2006-2012 by '
|
|
34
|
+
r'the Pygments team, see AUTHORS\.$', re.UNICODE)
|
|
35
|
+
copyright_2_re = re.compile(r'^ %s(, %s)*[,.]$' %
|
|
36
|
+
(name_mail_re, name_mail_re), re.UNICODE)
|
|
37
|
+
coding_re = re.compile(r'coding[:=]\s*([-\w.]+)')
|
|
38
|
+
not_ix_re = re.compile(r'\bnot\s+\S+?\s+i[sn]\s\S+')
|
|
39
|
+
is_const_re = re.compile(r'if.*?==\s+(None|False|True)\b')
|
|
40
|
+
|
|
41
|
+
misspellings = ["developement", "adress", "verificate", # ALLOW-MISSPELLING
|
|
42
|
+
"informations"] # ALLOW-MISSPELLING
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@checker('.py')
|
|
46
|
+
def check_syntax(fn, lines):
|
|
47
|
+
try:
|
|
48
|
+
compile(''.join(lines), fn, "exec")
|
|
49
|
+
except SyntaxError, err:
|
|
50
|
+
yield 0, "not compilable: %s" % err
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@checker('.py')
|
|
54
|
+
def check_style_and_encoding(fn, lines):
|
|
55
|
+
encoding = 'ascii'
|
|
56
|
+
for lno, line in enumerate(lines):
|
|
57
|
+
if len(line) > 90:
|
|
58
|
+
yield lno+1, "line too long"
|
|
59
|
+
m = not_ix_re.search(line)
|
|
60
|
+
if m:
|
|
61
|
+
yield lno+1, '"' + m.group() + '"'
|
|
62
|
+
if is_const_re.search(line):
|
|
63
|
+
yield lno+1, 'using == None/True/False'
|
|
64
|
+
if lno < 2:
|
|
65
|
+
co = coding_re.search(line)
|
|
66
|
+
if co:
|
|
67
|
+
encoding = co.group(1)
|
|
68
|
+
try:
|
|
69
|
+
line.decode(encoding)
|
|
70
|
+
except UnicodeDecodeError, err:
|
|
71
|
+
yield lno+1, "not decodable: %s\n Line: %r" % (err, line)
|
|
72
|
+
except LookupError, err:
|
|
73
|
+
yield 0, "unknown encoding: %s" % encoding
|
|
74
|
+
encoding = 'latin1'
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@checker('.py', only_pkg=True)
|
|
78
|
+
def check_fileheader(fn, lines):
|
|
79
|
+
# line number correction
|
|
80
|
+
c = 1
|
|
81
|
+
if lines[0:1] == ['#!/usr/bin/env python\n']:
|
|
82
|
+
lines = lines[1:]
|
|
83
|
+
c = 2
|
|
84
|
+
|
|
85
|
+
llist = []
|
|
86
|
+
docopen = False
|
|
87
|
+
for lno, l in enumerate(lines):
|
|
88
|
+
llist.append(l)
|
|
89
|
+
if lno == 0:
|
|
90
|
+
if l == '# -*- coding: rot13 -*-\n':
|
|
91
|
+
# special-case pony package
|
|
92
|
+
return
|
|
93
|
+
elif l != '# -*- coding: utf-8 -*-\n':
|
|
94
|
+
yield 1, "missing coding declaration"
|
|
95
|
+
elif lno == 1:
|
|
96
|
+
if l != '"""\n' and l != 'r"""\n':
|
|
97
|
+
yield 2, 'missing docstring begin (""")'
|
|
98
|
+
else:
|
|
99
|
+
docopen = True
|
|
100
|
+
elif docopen:
|
|
101
|
+
if l == '"""\n':
|
|
102
|
+
# end of docstring
|
|
103
|
+
if lno <= 4:
|
|
104
|
+
yield lno+c, "missing module name in docstring"
|
|
105
|
+
break
|
|
106
|
+
|
|
107
|
+
if l != "\n" and l[:4] != ' ' and docopen:
|
|
108
|
+
yield lno+c, "missing correct docstring indentation"
|
|
109
|
+
|
|
110
|
+
if lno == 2:
|
|
111
|
+
# if not in package, don't check the module name
|
|
112
|
+
modname = fn[:-3].replace('/', '.').replace('.__init__', '')
|
|
113
|
+
while modname:
|
|
114
|
+
if l.lower()[4:-1] == modname:
|
|
115
|
+
break
|
|
116
|
+
modname = '.'.join(modname.split('.')[1:])
|
|
117
|
+
else:
|
|
118
|
+
yield 3, "wrong module name in docstring heading"
|
|
119
|
+
modnamelen = len(l.strip())
|
|
120
|
+
elif lno == 3:
|
|
121
|
+
if l.strip() != modnamelen * "~":
|
|
122
|
+
yield 4, "wrong module name underline, should be ~~~...~"
|
|
123
|
+
|
|
124
|
+
else:
|
|
125
|
+
yield 0, "missing end and/or start of docstring..."
|
|
126
|
+
|
|
127
|
+
# check for copyright and license fields
|
|
128
|
+
license = llist[-2:-1]
|
|
129
|
+
if license != [" :license: BSD, see LICENSE for details.\n"]:
|
|
130
|
+
yield 0, "no correct license info"
|
|
131
|
+
|
|
132
|
+
ci = -3
|
|
133
|
+
copyright = [s.decode('utf-8') for s in llist[ci:ci+1]]
|
|
134
|
+
while copyright and copyright_2_re.match(copyright[0]):
|
|
135
|
+
ci -= 1
|
|
136
|
+
copyright = llist[ci:ci+1]
|
|
137
|
+
if not copyright or not copyright_re.match(copyright[0]):
|
|
138
|
+
yield 0, "no correct copyright info"
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
@checker('.py', '.html', '.js')
|
|
142
|
+
def check_whitespace_and_spelling(fn, lines):
|
|
143
|
+
for lno, line in enumerate(lines):
|
|
144
|
+
if "\t" in line:
|
|
145
|
+
yield lno+1, "OMG TABS!!!1 "
|
|
146
|
+
if line[:-1].rstrip(' \t') != line[:-1]:
|
|
147
|
+
yield lno+1, "trailing whitespace"
|
|
148
|
+
for word in misspellings:
|
|
149
|
+
if word in line and 'ALLOW-MISSPELLING' not in line:
|
|
150
|
+
yield lno+1, '"%s" used' % word
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
bad_tags = ('<b>', '<i>', '<u>', '<s>', '<strike>'
|
|
154
|
+
'<center>', '<big>', '<small>', '<font')
|
|
155
|
+
|
|
156
|
+
@checker('.html')
|
|
157
|
+
def check_xhtml(fn, lines):
|
|
158
|
+
for lno, line in enumerate(lines):
|
|
159
|
+
for bad_tag in bad_tags:
|
|
160
|
+
if bad_tag in line:
|
|
161
|
+
yield lno+1, "used " + bad_tag
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def main(argv):
|
|
165
|
+
try:
|
|
166
|
+
gopts, args = getopt.getopt(argv[1:], "vi:")
|
|
167
|
+
except getopt.GetoptError:
|
|
168
|
+
print "Usage: %s [-v] [-i ignorepath]* [path]" % argv[0]
|
|
169
|
+
return 2
|
|
170
|
+
opts = {}
|
|
171
|
+
for opt, val in gopts:
|
|
172
|
+
if opt == '-i':
|
|
173
|
+
val = abspath(val)
|
|
174
|
+
opts.setdefault(opt, []).append(val)
|
|
175
|
+
|
|
176
|
+
if len(args) == 0:
|
|
177
|
+
path = '.'
|
|
178
|
+
elif len(args) == 1:
|
|
179
|
+
path = args[0]
|
|
180
|
+
else:
|
|
181
|
+
print "Usage: %s [-v] [-i ignorepath]* [path]" % argv[0]
|
|
182
|
+
return 2
|
|
183
|
+
|
|
184
|
+
verbose = '-v' in opts
|
|
185
|
+
|
|
186
|
+
num = 0
|
|
187
|
+
out = cStringIO.StringIO()
|
|
188
|
+
|
|
189
|
+
# TODO: replace os.walk run with iteration over output of
|
|
190
|
+
# `svn list -R`.
|
|
191
|
+
|
|
192
|
+
for root, dirs, files in os.walk(path):
|
|
193
|
+
if '.svn' in dirs:
|
|
194
|
+
dirs.remove('.svn')
|
|
195
|
+
if '-i' in opts and abspath(root) in opts['-i']:
|
|
196
|
+
del dirs[:]
|
|
197
|
+
continue
|
|
198
|
+
# XXX: awkward: for the Makefile call: don't check non-package
|
|
199
|
+
# files for file headers
|
|
200
|
+
in_pocoo_pkg = root.startswith('./pygments')
|
|
201
|
+
for fn in files:
|
|
202
|
+
|
|
203
|
+
fn = join(root, fn)
|
|
204
|
+
if fn[:2] == './': fn = fn[2:]
|
|
205
|
+
|
|
206
|
+
if '-i' in opts and abspath(fn) in opts['-i']:
|
|
207
|
+
continue
|
|
208
|
+
|
|
209
|
+
ext = splitext(fn)[1]
|
|
210
|
+
checkerlist = checkers.get(ext, None)
|
|
211
|
+
if not checkerlist:
|
|
212
|
+
continue
|
|
213
|
+
|
|
214
|
+
if verbose:
|
|
215
|
+
print "Checking %s..." % fn
|
|
216
|
+
|
|
217
|
+
try:
|
|
218
|
+
f = open(fn, 'r')
|
|
219
|
+
lines = list(f)
|
|
220
|
+
except (IOError, OSError), err:
|
|
221
|
+
print "%s: cannot open: %s" % (fn, err)
|
|
222
|
+
num += 1
|
|
223
|
+
continue
|
|
224
|
+
|
|
225
|
+
for checker in checkerlist:
|
|
226
|
+
if not in_pocoo_pkg and checker.only_pkg:
|
|
227
|
+
continue
|
|
228
|
+
for lno, msg in checker(fn, lines):
|
|
229
|
+
print >>out, "%s:%d: %s" % (fn, lno, msg)
|
|
230
|
+
num += 1
|
|
231
|
+
if verbose:
|
|
232
|
+
print
|
|
233
|
+
if num == 0:
|
|
234
|
+
print "No errors found."
|
|
235
|
+
else:
|
|
236
|
+
print out.getvalue().rstrip('\n')
|
|
237
|
+
print "%d error%s found." % (num, num > 1 and "s" or "")
|
|
238
|
+
return int(num > 0)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
if __name__ == '__main__':
|
|
242
|
+
sys.exit(main(sys.argv))
|