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,92 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.formatter
|
|
4
|
+
~~~~~~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
Base formatter class.
|
|
7
|
+
|
|
8
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
|
9
|
+
:license: BSD, see LICENSE for details.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import codecs
|
|
13
|
+
|
|
14
|
+
from pygments.util import get_bool_opt
|
|
15
|
+
from pygments.styles import get_style_by_name
|
|
16
|
+
|
|
17
|
+
__all__ = ['Formatter']
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _lookup_style(style):
|
|
21
|
+
if isinstance(style, basestring):
|
|
22
|
+
return get_style_by_name(style)
|
|
23
|
+
return style
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Formatter(object):
|
|
27
|
+
"""
|
|
28
|
+
Converts a token stream to text.
|
|
29
|
+
|
|
30
|
+
Options accepted:
|
|
31
|
+
|
|
32
|
+
``style``
|
|
33
|
+
The style to use, can be a string or a Style subclass
|
|
34
|
+
(default: "default"). Not used by e.g. the
|
|
35
|
+
TerminalFormatter.
|
|
36
|
+
``full``
|
|
37
|
+
Tells the formatter to output a "full" document, i.e.
|
|
38
|
+
a complete self-contained document. This doesn't have
|
|
39
|
+
any effect for some formatters (default: false).
|
|
40
|
+
``title``
|
|
41
|
+
If ``full`` is true, the title that should be used to
|
|
42
|
+
caption the document (default: '').
|
|
43
|
+
``encoding``
|
|
44
|
+
If given, must be an encoding name. This will be used to
|
|
45
|
+
convert the Unicode token strings to byte strings in the
|
|
46
|
+
output. If it is "" or None, Unicode strings will be written
|
|
47
|
+
to the output file, which most file-like objects do not
|
|
48
|
+
support (default: None).
|
|
49
|
+
``outencoding``
|
|
50
|
+
Overrides ``encoding`` if given.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
#: Name of the formatter
|
|
54
|
+
name = None
|
|
55
|
+
|
|
56
|
+
#: Shortcuts for the formatter
|
|
57
|
+
aliases = []
|
|
58
|
+
|
|
59
|
+
#: fn match rules
|
|
60
|
+
filenames = []
|
|
61
|
+
|
|
62
|
+
#: If True, this formatter outputs Unicode strings when no encoding
|
|
63
|
+
#: option is given.
|
|
64
|
+
unicodeoutput = True
|
|
65
|
+
|
|
66
|
+
def __init__(self, **options):
|
|
67
|
+
self.style = _lookup_style(options.get('style', 'default'))
|
|
68
|
+
self.full = get_bool_opt(options, 'full', False)
|
|
69
|
+
self.title = options.get('title', '')
|
|
70
|
+
self.encoding = options.get('encoding', None) or None
|
|
71
|
+
self.encoding = options.get('outencoding', None) or self.encoding
|
|
72
|
+
self.options = options
|
|
73
|
+
|
|
74
|
+
def get_style_defs(self, arg=''):
|
|
75
|
+
"""
|
|
76
|
+
Return the style definitions for the current style as a string.
|
|
77
|
+
|
|
78
|
+
``arg`` is an additional argument whose meaning depends on the
|
|
79
|
+
formatter used. Note that ``arg`` can also be a list or tuple
|
|
80
|
+
for some formatters like the html formatter.
|
|
81
|
+
"""
|
|
82
|
+
return ''
|
|
83
|
+
|
|
84
|
+
def format(self, tokensource, outfile):
|
|
85
|
+
"""
|
|
86
|
+
Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
|
|
87
|
+
tuples and write it into ``outfile``.
|
|
88
|
+
"""
|
|
89
|
+
if self.encoding:
|
|
90
|
+
# wrap the outfile in a StreamWriter
|
|
91
|
+
outfile = codecs.lookup(self.encoding)[3](outfile)
|
|
92
|
+
return self.format_unencoded(tokensource, outfile)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.formatters
|
|
4
|
+
~~~~~~~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
Pygments formatters.
|
|
7
|
+
|
|
8
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
|
9
|
+
:license: BSD, see LICENSE for details.
|
|
10
|
+
"""
|
|
11
|
+
import os.path
|
|
12
|
+
import fnmatch
|
|
13
|
+
|
|
14
|
+
from pygments.formatters._mapping import FORMATTERS
|
|
15
|
+
from pygments.plugin import find_plugin_formatters
|
|
16
|
+
from pygments.util import ClassNotFound
|
|
17
|
+
|
|
18
|
+
ns = globals()
|
|
19
|
+
for fcls in FORMATTERS:
|
|
20
|
+
ns[fcls.__name__] = fcls
|
|
21
|
+
del fcls
|
|
22
|
+
|
|
23
|
+
__all__ = ['get_formatter_by_name', 'get_formatter_for_filename',
|
|
24
|
+
'get_all_formatters'] + [cls.__name__ for cls in FORMATTERS]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
_formatter_alias_cache = {}
|
|
28
|
+
_formatter_filename_cache = []
|
|
29
|
+
|
|
30
|
+
def _init_formatter_cache():
|
|
31
|
+
if _formatter_alias_cache:
|
|
32
|
+
return
|
|
33
|
+
for cls in get_all_formatters():
|
|
34
|
+
for alias in cls.aliases:
|
|
35
|
+
_formatter_alias_cache[alias] = cls
|
|
36
|
+
for fn in cls.filenames:
|
|
37
|
+
_formatter_filename_cache.append((fn, cls))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def find_formatter_class(name):
|
|
41
|
+
_init_formatter_cache()
|
|
42
|
+
cls = _formatter_alias_cache.get(name, None)
|
|
43
|
+
return cls
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def get_formatter_by_name(name, **options):
|
|
47
|
+
_init_formatter_cache()
|
|
48
|
+
cls = _formatter_alias_cache.get(name, None)
|
|
49
|
+
if not cls:
|
|
50
|
+
raise ClassNotFound("No formatter found for name %r" % name)
|
|
51
|
+
return cls(**options)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def get_formatter_for_filename(fn, **options):
|
|
55
|
+
_init_formatter_cache()
|
|
56
|
+
fn = os.path.basename(fn)
|
|
57
|
+
for pattern, cls in _formatter_filename_cache:
|
|
58
|
+
if fnmatch.fnmatch(fn, pattern):
|
|
59
|
+
return cls(**options)
|
|
60
|
+
raise ClassNotFound("No formatter found for file name %r" % fn)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def get_all_formatters():
|
|
64
|
+
"""Return a generator for all formatters."""
|
|
65
|
+
for formatter in FORMATTERS:
|
|
66
|
+
yield formatter
|
|
67
|
+
for _, formatter in find_plugin_formatters():
|
|
68
|
+
yield formatter
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.formatters._mapping
|
|
4
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
Formatter mapping defintions. This file is generated by itself. Everytime
|
|
7
|
+
you change something on a builtin formatter defintion, run this script from
|
|
8
|
+
the formatters folder to update it.
|
|
9
|
+
|
|
10
|
+
Do not alter the FORMATTERS dictionary by hand.
|
|
11
|
+
|
|
12
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
|
13
|
+
:license: BSD, see LICENSE for details.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from pygments.util import docstring_headline
|
|
17
|
+
|
|
18
|
+
# start
|
|
19
|
+
from pygments.formatters.bbcode import BBCodeFormatter
|
|
20
|
+
from pygments.formatters.gitlab import GitlabFormatter
|
|
21
|
+
from pygments.formatters.html import HtmlFormatter
|
|
22
|
+
from pygments.formatters.img import BmpImageFormatter
|
|
23
|
+
from pygments.formatters.img import GifImageFormatter
|
|
24
|
+
from pygments.formatters.img import ImageFormatter
|
|
25
|
+
from pygments.formatters.img import JpgImageFormatter
|
|
26
|
+
from pygments.formatters.latex import LatexFormatter
|
|
27
|
+
from pygments.formatters.other import NullFormatter
|
|
28
|
+
from pygments.formatters.other import RawTokenFormatter
|
|
29
|
+
from pygments.formatters.rtf import RtfFormatter
|
|
30
|
+
from pygments.formatters.svg import SvgFormatter
|
|
31
|
+
from pygments.formatters.terminal import TerminalFormatter
|
|
32
|
+
from pygments.formatters.terminal256 import Terminal256Formatter
|
|
33
|
+
|
|
34
|
+
FORMATTERS = {
|
|
35
|
+
BBCodeFormatter: ('BBCode', ('bbcode', 'bb'), (), 'Format tokens with BBcodes. These formatting codes are used by many bulletin boards, so you can highlight your sourcecode with pygments before posting it there.'),
|
|
36
|
+
BmpImageFormatter: ('img_bmp', ('bmp', 'bitmap'), ('*.bmp',), 'Create a bitmap image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
|
37
|
+
GifImageFormatter: ('img_gif', ('gif',), ('*.gif',), 'Create a GIF image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
|
38
|
+
GitlabFormatter: ('GitLab', ('gitlab',), (), 'GitLab specific formatter for HTML output.'),
|
|
39
|
+
HtmlFormatter: ('HTML', ('html',), ('*.html', '*.htm'), "Format tokens as HTML 4 ``<span>`` tags within a ``<pre>`` tag, wrapped in a ``<div>`` tag. The ``<div>``'s CSS class can be set by the `cssclass` option."),
|
|
40
|
+
ImageFormatter: ('img', ('img', 'IMG', 'png'), ('*.png',), 'Create a PNG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
|
41
|
+
JpgImageFormatter: ('img_jpg', ('jpg', 'jpeg'), ('*.jpg',), 'Create a JPEG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
|
42
|
+
LatexFormatter: ('LaTeX', ('latex', 'tex'), ('*.tex',), 'Format tokens as LaTeX code. This needs the `fancyvrb` and `color` standard packages.'),
|
|
43
|
+
NullFormatter: ('Text only', ('text', 'null'), ('*.txt',), 'Output the text unchanged without any formatting.'),
|
|
44
|
+
RawTokenFormatter: ('Raw tokens', ('raw', 'tokens'), ('*.raw',), 'Format tokens as a raw representation for storing token streams.'),
|
|
45
|
+
RtfFormatter: ('RTF', ('rtf',), ('*.rtf',), 'Format tokens as RTF markup. This formatter automatically outputs full RTF documents with color information and other useful stuff. Perfect for Copy and Paste into Microsoft\xc2\xae Word\xc2\xae documents.'),
|
|
46
|
+
SvgFormatter: ('SVG', ('svg',), ('*.svg',), 'Format tokens as an SVG graphics file. This formatter is still experimental. Each line of code is a ``<text>`` element with explicit ``x`` and ``y`` coordinates containing ``<tspan>`` elements with the individual token styles.'),
|
|
47
|
+
Terminal256Formatter: ('Terminal256', ('terminal256', 'console256', '256'), (), 'Format tokens with ANSI color sequences, for output in a 256-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'),
|
|
48
|
+
TerminalFormatter: ('Terminal', ('terminal', 'console'), (), 'Format tokens with ANSI color sequences, for output in a text console. Color sequences are terminated at newlines, so that paging the output works correctly.')
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if __name__ == '__main__':
|
|
52
|
+
import sys
|
|
53
|
+
import os
|
|
54
|
+
|
|
55
|
+
# lookup formatters
|
|
56
|
+
found_formatters = []
|
|
57
|
+
imports = []
|
|
58
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
|
|
59
|
+
for filename in os.listdir('.'):
|
|
60
|
+
if filename.endswith('.py') and not filename.startswith('_'):
|
|
61
|
+
module_name = 'pygments.formatters.%s' % filename[:-3]
|
|
62
|
+
print module_name
|
|
63
|
+
module = __import__(module_name, None, None, [''])
|
|
64
|
+
for formatter_name in module.__all__:
|
|
65
|
+
imports.append((module_name, formatter_name))
|
|
66
|
+
formatter = getattr(module, formatter_name)
|
|
67
|
+
found_formatters.append(
|
|
68
|
+
'%s: %r' % (formatter_name,
|
|
69
|
+
(formatter.name,
|
|
70
|
+
tuple(formatter.aliases),
|
|
71
|
+
tuple(formatter.filenames),
|
|
72
|
+
docstring_headline(formatter))))
|
|
73
|
+
# sort them, that should make the diff files for svn smaller
|
|
74
|
+
found_formatters.sort()
|
|
75
|
+
imports.sort()
|
|
76
|
+
|
|
77
|
+
# extract useful sourcecode from this file
|
|
78
|
+
f = open(__file__)
|
|
79
|
+
try:
|
|
80
|
+
content = f.read()
|
|
81
|
+
finally:
|
|
82
|
+
f.close()
|
|
83
|
+
header = content[:content.find('# start')]
|
|
84
|
+
footer = content[content.find("if __name__ == '__main__':"):]
|
|
85
|
+
|
|
86
|
+
# write new file
|
|
87
|
+
f = open(__file__, 'w')
|
|
88
|
+
f.write(header)
|
|
89
|
+
f.write('# start\n')
|
|
90
|
+
f.write('\n'.join(['from %s import %s' % imp for imp in imports]))
|
|
91
|
+
f.write('\n\n')
|
|
92
|
+
f.write('FORMATTERS = {\n %s\n}\n\n' % ',\n '.join(found_formatters))
|
|
93
|
+
f.write(footer)
|
|
94
|
+
f.close()
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.formatters.bbcode
|
|
4
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
BBcode formatter.
|
|
7
|
+
|
|
8
|
+
:copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
|
|
9
|
+
:license: BSD, see LICENSE for details.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
from pygments.formatter import Formatter
|
|
14
|
+
from pygments.util import get_bool_opt
|
|
15
|
+
|
|
16
|
+
__all__ = ['BBCodeFormatter']
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class BBCodeFormatter(Formatter):
|
|
20
|
+
"""
|
|
21
|
+
Format tokens with BBcodes. These formatting codes are used by many
|
|
22
|
+
bulletin boards, so you can highlight your sourcecode with pygments before
|
|
23
|
+
posting it there.
|
|
24
|
+
|
|
25
|
+
This formatter has no support for background colors and borders, as there
|
|
26
|
+
are no common BBcode tags for that.
|
|
27
|
+
|
|
28
|
+
Some board systems (e.g. phpBB) don't support colors in their [code] tag,
|
|
29
|
+
so you can't use the highlighting together with that tag.
|
|
30
|
+
Text in a [code] tag usually is shown with a monospace font (which this
|
|
31
|
+
formatter can do with the ``monofont`` option) and no spaces (which you
|
|
32
|
+
need for indentation) are removed.
|
|
33
|
+
|
|
34
|
+
Additional options accepted:
|
|
35
|
+
|
|
36
|
+
`style`
|
|
37
|
+
The style to use, can be a string or a Style subclass (default:
|
|
38
|
+
``'default'``).
|
|
39
|
+
|
|
40
|
+
`codetag`
|
|
41
|
+
If set to true, put the output into ``[code]`` tags (default:
|
|
42
|
+
``false``)
|
|
43
|
+
|
|
44
|
+
`monofont`
|
|
45
|
+
If set to true, add a tag to show the code with a monospace font
|
|
46
|
+
(default: ``false``).
|
|
47
|
+
"""
|
|
48
|
+
name = 'BBCode'
|
|
49
|
+
aliases = ['bbcode', 'bb']
|
|
50
|
+
filenames = []
|
|
51
|
+
|
|
52
|
+
def __init__(self, **options):
|
|
53
|
+
Formatter.__init__(self, **options)
|
|
54
|
+
self._code = get_bool_opt(options, 'codetag', False)
|
|
55
|
+
self._mono = get_bool_opt(options, 'monofont', False)
|
|
56
|
+
|
|
57
|
+
self.styles = {}
|
|
58
|
+
self._make_styles()
|
|
59
|
+
|
|
60
|
+
def _make_styles(self):
|
|
61
|
+
for ttype, ndef in self.style:
|
|
62
|
+
start = end = ''
|
|
63
|
+
if ndef['color']:
|
|
64
|
+
start += '[color=#%s]' % ndef['color']
|
|
65
|
+
end = '[/color]' + end
|
|
66
|
+
if ndef['bold']:
|
|
67
|
+
start += '[b]'
|
|
68
|
+
end = '[/b]' + end
|
|
69
|
+
if ndef['italic']:
|
|
70
|
+
start += '[i]'
|
|
71
|
+
end = '[/i]' + end
|
|
72
|
+
if ndef['underline']:
|
|
73
|
+
start += '[u]'
|
|
74
|
+
end = '[/u]' + end
|
|
75
|
+
# there are no common BBcodes for background-color and border
|
|
76
|
+
|
|
77
|
+
self.styles[ttype] = start, end
|
|
78
|
+
|
|
79
|
+
def format_unencoded(self, tokensource, outfile):
|
|
80
|
+
if self._code:
|
|
81
|
+
outfile.write('[code]')
|
|
82
|
+
if self._mono:
|
|
83
|
+
outfile.write('[font=monospace]')
|
|
84
|
+
|
|
85
|
+
lastval = ''
|
|
86
|
+
lasttype = None
|
|
87
|
+
|
|
88
|
+
for ttype, value in tokensource:
|
|
89
|
+
while ttype not in self.styles:
|
|
90
|
+
ttype = ttype.parent
|
|
91
|
+
if ttype == lasttype:
|
|
92
|
+
lastval += value
|
|
93
|
+
else:
|
|
94
|
+
if lastval:
|
|
95
|
+
start, end = self.styles[lasttype]
|
|
96
|
+
outfile.write(''.join((start, lastval, end)))
|
|
97
|
+
lastval = value
|
|
98
|
+
lasttype = ttype
|
|
99
|
+
|
|
100
|
+
if lastval:
|
|
101
|
+
start, end = self.styles[lasttype]
|
|
102
|
+
outfile.write(''.join((start, lastval, end)))
|
|
103
|
+
|
|
104
|
+
if self._mono:
|
|
105
|
+
outfile.write('[/font]')
|
|
106
|
+
if self._code:
|
|
107
|
+
outfile.write('[/code]')
|
|
108
|
+
if self._code or self._mono:
|
|
109
|
+
outfile.write('\n')
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pygments.formatters.gitlab
|
|
4
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
5
|
+
|
|
6
|
+
GitLab specific formatter for HTML output.
|
|
7
|
+
Based on the standard HTML formatter.
|
|
8
|
+
|
|
9
|
+
:copyright: Copyright 2012 by the GitLab team (http://www.gitlab.org).
|
|
10
|
+
:license: BSD, see LICENSE for details.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import os
|
|
14
|
+
import sys
|
|
15
|
+
import StringIO
|
|
16
|
+
|
|
17
|
+
from pygments.formatter import Formatter
|
|
18
|
+
from pygments.token import Token, Text, STANDARD_TYPES
|
|
19
|
+
from pygments.util import get_bool_opt, get_int_opt
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
__all__ = ['GitlabFormatter']
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
_escape_html_table = {
|
|
26
|
+
ord('&'): u'&',
|
|
27
|
+
ord('<'): u'<',
|
|
28
|
+
ord('>'): u'>',
|
|
29
|
+
ord('"'): u'"',
|
|
30
|
+
ord("'"): u''',
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
def escape_html(text, table=_escape_html_table):
|
|
34
|
+
"""Escape &, <, > as well as single and double quotes for HTML."""
|
|
35
|
+
return text.translate(table)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _get_ttype_class(ttype):
|
|
39
|
+
fname = STANDARD_TYPES.get(ttype)
|
|
40
|
+
if fname:
|
|
41
|
+
return fname
|
|
42
|
+
aname = ''
|
|
43
|
+
while fname is None:
|
|
44
|
+
aname = '-' + ttype[-1] + aname
|
|
45
|
+
ttype = ttype.parent
|
|
46
|
+
fname = STANDARD_TYPES.get(ttype)
|
|
47
|
+
return fname + aname
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class GitlabFormatter(Formatter):
|
|
51
|
+
r"""
|
|
52
|
+
GitLab specific formatter for HTML output.
|
|
53
|
+
|
|
54
|
+
Additional options accepted:
|
|
55
|
+
|
|
56
|
+
`show_line_numbers`
|
|
57
|
+
Determines whether the line number column should be shown (default:
|
|
58
|
+
``True``).
|
|
59
|
+
|
|
60
|
+
`first_line_number`
|
|
61
|
+
The line number for the first line (default: ``1``).
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
name = 'GitLab'
|
|
65
|
+
aliases = ['gitlab']
|
|
66
|
+
filenames = []
|
|
67
|
+
|
|
68
|
+
def __init__(self, **options):
|
|
69
|
+
Formatter.__init__(self, **options)
|
|
70
|
+
self.show_line_numbers = get_bool_opt(options, 'show_line_numbers', True)
|
|
71
|
+
self.first_line_number = abs(get_int_opt(options, 'first_line_number', 1))
|
|
72
|
+
|
|
73
|
+
def _wrap_table(self, inner):
|
|
74
|
+
"""
|
|
75
|
+
Wrap the whole thing into a table and add line numbers
|
|
76
|
+
"""
|
|
77
|
+
dummyoutfile = StringIO.StringIO()
|
|
78
|
+
lncount = 0
|
|
79
|
+
for line in inner:
|
|
80
|
+
lncount += 1
|
|
81
|
+
dummyoutfile.write(line)
|
|
82
|
+
|
|
83
|
+
sln = self.show_line_numbers
|
|
84
|
+
if sln:
|
|
85
|
+
fl = self.first_line_number
|
|
86
|
+
mw = len(str(lncount + fl - 1))
|
|
87
|
+
|
|
88
|
+
lines = []
|
|
89
|
+
for i in range(fl, fl+lncount):
|
|
90
|
+
lines.append('<a id="L%d" href="#L%d" rel="#L%d">' % (i, i, i) +
|
|
91
|
+
'<i class="icon-link"></i> %*d' % (mw, i) +
|
|
92
|
+
'</a>')
|
|
93
|
+
ls = '\n'.join(lines)
|
|
94
|
+
|
|
95
|
+
yield '<table class="lines"><tr>'
|
|
96
|
+
if sln:
|
|
97
|
+
yield '<td><pre class="line_numbers">' + ls + '</pre></td>'
|
|
98
|
+
yield '<td><div class="highlight"><pre>'
|
|
99
|
+
yield dummyoutfile.getvalue()
|
|
100
|
+
yield '</pre></div></td></tr></table>'
|
|
101
|
+
|
|
102
|
+
def _wrap_code_lines(self, inner):
|
|
103
|
+
"""
|
|
104
|
+
Wrap each line in a <div class="line">
|
|
105
|
+
"""
|
|
106
|
+
# subtract 1 since we have to increment i *before* yielding
|
|
107
|
+
i = self.first_line_number - 1
|
|
108
|
+
|
|
109
|
+
for line in inner:
|
|
110
|
+
i += 1
|
|
111
|
+
yield '<div id="LC%d" class="line">%s</div>' % (i, line)
|
|
112
|
+
|
|
113
|
+
def _format_code_lines(self, tokensource):
|
|
114
|
+
"""
|
|
115
|
+
Just format the tokens, without any wrapping tags.
|
|
116
|
+
Yield individual lines.
|
|
117
|
+
"""
|
|
118
|
+
# for <span style=""> lookup only
|
|
119
|
+
escape_table = _escape_html_table
|
|
120
|
+
|
|
121
|
+
lspan = ''
|
|
122
|
+
line = ''
|
|
123
|
+
for ttype, value in tokensource:
|
|
124
|
+
cls = _get_ttype_class(ttype)
|
|
125
|
+
cspan = cls and '<span class="%s">' % cls or ''
|
|
126
|
+
|
|
127
|
+
parts = escape_html(value).split('\n')
|
|
128
|
+
|
|
129
|
+
# for all but the last line
|
|
130
|
+
for part in parts[:-1]:
|
|
131
|
+
if line:
|
|
132
|
+
if lspan != cspan:
|
|
133
|
+
line += (lspan and '</span>') + cspan + part + \
|
|
134
|
+
(cspan and '</span>')
|
|
135
|
+
else: # both are the same
|
|
136
|
+
line += part + (lspan and '</span>')
|
|
137
|
+
yield line
|
|
138
|
+
line = ''
|
|
139
|
+
elif part:
|
|
140
|
+
yield cspan + part + (cspan and '</span>')
|
|
141
|
+
else:
|
|
142
|
+
yield '<br/>'
|
|
143
|
+
# for the last line
|
|
144
|
+
if line and parts[-1]:
|
|
145
|
+
if lspan != cspan:
|
|
146
|
+
line += (lspan and '</span>') + cspan + parts[-1]
|
|
147
|
+
lspan = cspan
|
|
148
|
+
else:
|
|
149
|
+
line += parts[-1]
|
|
150
|
+
elif parts[-1]:
|
|
151
|
+
line = cspan + parts[-1]
|
|
152
|
+
lspan = cspan
|
|
153
|
+
# else we neither have to open a new span nor set lspan
|
|
154
|
+
|
|
155
|
+
if line:
|
|
156
|
+
yield line + (lspan and '</span>')
|
|
157
|
+
|
|
158
|
+
def format_unencoded(self, tokensource, outfile):
|
|
159
|
+
"""
|
|
160
|
+
The formatting process uses several nested generators; which of
|
|
161
|
+
them are used is determined by the user's options.
|
|
162
|
+
|
|
163
|
+
Each generator should take at least one argument, ``inner``,
|
|
164
|
+
and wrap the pieces of text generated by this.
|
|
165
|
+
"""
|
|
166
|
+
source = self._format_code_lines(tokensource)
|
|
167
|
+
source = self._wrap_code_lines(source)
|
|
168
|
+
source = self._wrap_table(source)
|
|
169
|
+
|
|
170
|
+
for piece in source:
|
|
171
|
+
outfile.write(piece)
|