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.
Files changed (399) hide show
  1. data/.gitignore +6 -0
  2. data/Gemfile +2 -0
  3. data/README.md +91 -0
  4. data/Rakefile +78 -0
  5. data/bench.rb +22 -0
  6. data/cache-lexers.rb +8 -0
  7. data/lexers +0 -0
  8. data/lib/pygments/lexer.rb +148 -0
  9. data/lib/pygments/mentos.py +344 -0
  10. data/lib/pygments/popen.rb +389 -0
  11. data/lib/pygments/version.rb +3 -0
  12. data/lib/pygments.rb +8 -0
  13. data/pygments.rb.gemspec +24 -0
  14. data/test/test_data.c +2581 -0
  15. data/test/test_data.py +514 -0
  16. data/test/test_data_generated +2582 -0
  17. data/test/test_pygments.rb +276 -0
  18. data/vendor/custom_formatters/gitlab.py +171 -0
  19. data/vendor/custom_lexers/github.py +362 -0
  20. data/vendor/pygments-main/AUTHORS +115 -0
  21. data/vendor/pygments-main/CHANGES +762 -0
  22. data/vendor/pygments-main/LICENSE +25 -0
  23. data/vendor/pygments-main/MANIFEST.in +6 -0
  24. data/vendor/pygments-main/Makefile +59 -0
  25. data/vendor/pygments-main/REVISION +1 -0
  26. data/vendor/pygments-main/TODO +15 -0
  27. data/vendor/pygments-main/docs/generate.py +472 -0
  28. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  29. data/vendor/pygments-main/docs/src/api.txt +270 -0
  30. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  31. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  32. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  33. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  34. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  35. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  36. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  37. data/vendor/pygments-main/docs/src/index.txt +69 -0
  38. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  39. data/vendor/pygments-main/docs/src/integrate.txt +43 -0
  40. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +551 -0
  41. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  42. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  43. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  44. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  45. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  46. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  47. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  48. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  49. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  50. data/vendor/pygments-main/external/moin-parser.py +112 -0
  51. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  52. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  53. data/vendor/pygments-main/external/rst-directive.py +83 -0
  54. data/vendor/pygments-main/ez_setup.py +276 -0
  55. data/vendor/pygments-main/pygmentize +7 -0
  56. data/vendor/pygments-main/pygments/__init__.py +91 -0
  57. data/vendor/pygments-main/pygments/cmdline.py +433 -0
  58. data/vendor/pygments-main/pygments/console.py +74 -0
  59. data/vendor/pygments-main/pygments/filter.py +74 -0
  60. data/vendor/pygments-main/pygments/filters/__init__.py +357 -0
  61. data/vendor/pygments-main/pygments/formatter.py +92 -0
  62. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  63. data/vendor/pygments-main/pygments/formatters/_mapping.py +94 -0
  64. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  65. data/vendor/pygments-main/pygments/formatters/gitlab.py +171 -0
  66. data/vendor/pygments-main/pygments/formatters/html.py +750 -0
  67. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  68. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  69. data/vendor/pygments-main/pygments/formatters/other.py +117 -0
  70. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  71. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  72. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  73. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  74. data/vendor/pygments-main/pygments/lexer.py +697 -0
  75. data/vendor/pygments-main/pygments/lexers/__init__.py +229 -0
  76. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  77. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  78. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  79. data/vendor/pygments-main/pygments/lexers/_mapping.py +298 -0
  80. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  81. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +232 -0
  82. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +29 -0
  83. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +3 -0
  84. data/vendor/pygments-main/pygments/lexers/agile.py +1803 -0
  85. data/vendor/pygments-main/pygments/lexers/asm.py +360 -0
  86. data/vendor/pygments-main/pygments/lexers/compiled.py +2891 -0
  87. data/vendor/pygments-main/pygments/lexers/dotnet.py +636 -0
  88. data/vendor/pygments-main/pygments/lexers/functional.py +1832 -0
  89. data/vendor/pygments-main/pygments/lexers/github.py +362 -0
  90. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  91. data/vendor/pygments-main/pygments/lexers/jvm.py +847 -0
  92. data/vendor/pygments-main/pygments/lexers/math.py +1072 -0
  93. data/vendor/pygments-main/pygments/lexers/other.py +3339 -0
  94. data/vendor/pygments-main/pygments/lexers/parsers.py +695 -0
  95. data/vendor/pygments-main/pygments/lexers/shell.py +361 -0
  96. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  97. data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
  98. data/vendor/pygments-main/pygments/lexers/templates.py +1631 -0
  99. data/vendor/pygments-main/pygments/lexers/text.py +1753 -0
  100. data/vendor/pygments-main/pygments/lexers/web.py +2864 -0
  101. data/vendor/pygments-main/pygments/plugin.py +74 -0
  102. data/vendor/pygments-main/pygments/scanner.py +104 -0
  103. data/vendor/pygments-main/pygments/style.py +117 -0
  104. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  105. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  106. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  107. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  108. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  109. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  110. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  111. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  112. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  113. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  114. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  115. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  116. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  117. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  118. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  119. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  120. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  121. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  122. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  123. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  124. data/vendor/pygments-main/pygments/token.py +195 -0
  125. data/vendor/pygments-main/pygments/unistring.py +130 -0
  126. data/vendor/pygments-main/pygments/util.py +232 -0
  127. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  128. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +30 -0
  129. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  130. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  131. data/vendor/pygments-main/scripts/find_error.py +171 -0
  132. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  133. data/vendor/pygments-main/scripts/pylintrc +301 -0
  134. data/vendor/pygments-main/scripts/reindent.py +291 -0
  135. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  136. data/vendor/pygments-main/setup.cfg +6 -0
  137. data/vendor/pygments-main/setup.py +88 -0
  138. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  139. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  140. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  141. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  142. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  143. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  144. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  145. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  146. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  147. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  148. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  149. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  150. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  151. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  152. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  153. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  154. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  155. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  156. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  157. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  158. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  159. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  160. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  161. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  162. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  163. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  164. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  165. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  166. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  167. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  168. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  169. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  170. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  171. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  172. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  173. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  174. data/vendor/pygments-main/tests/examplefiles/classes.dylan +40 -0
  175. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  176. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  177. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  178. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  179. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  180. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  181. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  182. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  183. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  184. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  185. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  186. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  187. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  188. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  189. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  190. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  191. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  192. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  193. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  194. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  195. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  196. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  197. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  198. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  199. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  200. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  201. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  202. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  203. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  204. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  205. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  206. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  207. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  208. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  209. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  210. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  211. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  212. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  213. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  214. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  215. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  216. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  217. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  218. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  219. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  220. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  221. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  222. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  223. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  224. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  225. data/vendor/pygments-main/tests/examplefiles/http_request_example +14 -0
  226. data/vendor/pygments-main/tests/examplefiles/http_response_example +27 -0
  227. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  228. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  229. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  230. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  231. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  232. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  233. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  234. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  235. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  236. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  237. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  238. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  239. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  240. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  241. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  242. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  243. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  244. data/vendor/pygments-main/tests/examplefiles/matlab_sample +27 -0
  245. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  246. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  247. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  248. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  249. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  250. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  251. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  252. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  253. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  254. data/vendor/pygments-main/tests/examplefiles/objc_example.m +25 -0
  255. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  256. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  257. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  258. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  259. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  260. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  261. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  262. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  263. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  264. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  265. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  266. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  267. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  268. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  269. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  270. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  271. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  272. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  273. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  274. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  275. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  276. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  277. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  278. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  279. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  280. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  281. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  282. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  283. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  284. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  285. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  286. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  287. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  288. data/vendor/pygments-main/tests/examplefiles/test.R +119 -0
  289. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  290. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  291. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  292. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  293. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  294. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  295. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  296. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  297. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  298. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  299. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  300. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  301. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  302. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  303. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  304. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  305. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  306. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  307. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  308. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  309. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  310. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  311. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  312. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  313. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  314. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  315. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  316. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  317. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  318. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  319. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  320. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  321. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  322. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  323. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  324. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  325. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  326. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  327. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  328. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  329. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  330. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  331. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  332. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  333. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  334. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  335. data/vendor/pygments-main/tests/examplefiles/type.lisp +1202 -0
  336. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  337. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  338. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  339. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  340. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  341. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  342. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  343. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  344. data/vendor/pygments-main/tests/old_run.py +138 -0
  345. data/vendor/pygments-main/tests/run.py +48 -0
  346. data/vendor/pygments-main/tests/support.py +15 -0
  347. data/vendor/pygments-main/tests/test_basic_api.py +294 -0
  348. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  349. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  350. data/vendor/pygments-main/tests/test_examplefiles.py +97 -0
  351. data/vendor/pygments-main/tests/test_html_formatter.py +162 -0
  352. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  353. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  354. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  355. data/vendor/pygments-main/tests/test_token.py +46 -0
  356. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  357. data/vendor/pygments-main/tests/test_util.py +116 -0
  358. data/vendor/simplejson/.gitignore +10 -0
  359. data/vendor/simplejson/.travis.yml +5 -0
  360. data/vendor/simplejson/CHANGES.txt +291 -0
  361. data/vendor/simplejson/LICENSE.txt +19 -0
  362. data/vendor/simplejson/MANIFEST.in +5 -0
  363. data/vendor/simplejson/README.rst +19 -0
  364. data/vendor/simplejson/conf.py +179 -0
  365. data/vendor/simplejson/index.rst +628 -0
  366. data/vendor/simplejson/scripts/make_docs.py +18 -0
  367. data/vendor/simplejson/setup.py +104 -0
  368. data/vendor/simplejson/simplejson/__init__.py +510 -0
  369. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  370. data/vendor/simplejson/simplejson/decoder.py +425 -0
  371. data/vendor/simplejson/simplejson/encoder.py +567 -0
  372. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  373. data/vendor/simplejson/simplejson/scanner.py +77 -0
  374. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  375. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  376. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  377. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  378. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  379. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  380. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  381. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  382. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  383. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  384. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  385. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  386. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  387. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  388. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  389. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  390. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  391. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  392. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  393. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  394. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  395. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  396. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  397. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  398. data/vendor/simplejson/simplejson/tool.py +39 -0
  399. metadata +492 -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-2012 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,48 @@
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-2012 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
+ os.chdir(os.path.dirname(__file__))
29
+
30
+
31
+ try:
32
+ import nose
33
+ except ImportError:
34
+ print ('nose is required to run the Pygments test suite')
35
+ sys.exit(1)
36
+
37
+ try:
38
+ # make sure the current source is first on sys.path
39
+ sys.path.insert(0, '..')
40
+ import pygments
41
+ except ImportError:
42
+ print ('Cannot find Pygments to test: %s' % sys.exc_info()[1])
43
+ sys.exit(1)
44
+ else:
45
+ print ('Pygments %s test suite running (Python %s)...' %
46
+ (pygments.__version__, sys.version.split()[0]))
47
+
48
+ 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,294 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments basic API tests
4
+ ~~~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ :copyright: Copyright 2006-2012 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', 'PostgresConsoleLexer',
96
+ 'ElixirConsoleLexer', 'JuliaConsoleLexer'):
97
+ inst = cls(ensurenl=False)
98
+ ensure(inst.get_tokens('a\nb'), 'a\nb')
99
+ inst = cls(ensurenl=False, stripall=True)
100
+ ensure(inst.get_tokens('a\nb\n\n'), 'a\nb')
101
+
102
+ for lexer in lexers._iter_lexerclasses():
103
+ if lexer.__name__ == 'RawTokenLexer':
104
+ # this one is special
105
+ continue
106
+ yield verify, lexer
107
+
108
+
109
+ def test_get_lexers():
110
+ # test that the lexers functions work
111
+ def verify(func, args):
112
+ x = func(opt='val', *args)
113
+ assert isinstance(x, lexers.PythonLexer)
114
+ assert x.options["opt"] == "val"
115
+
116
+ for func, args in [(lexers.get_lexer_by_name, ("python",)),
117
+ (lexers.get_lexer_for_filename, ("test.py",)),
118
+ (lexers.get_lexer_for_mimetype, ("text/x-python",)),
119
+ (lexers.guess_lexer, ("#!/usr/bin/python -O\nprint",)),
120
+ (lexers.guess_lexer_for_filename, ("a.py", "<%= @foo %>"))
121
+ ]:
122
+ yield verify, func, args
123
+
124
+ for cls, (_, lname, aliases, _, mimetypes) in lexers.LEXERS.iteritems():
125
+ assert cls == lexers.find_lexer_class(lname).__name__
126
+
127
+ for alias in aliases:
128
+ assert cls == lexers.get_lexer_by_name(alias).__class__.__name__
129
+
130
+ for mimetype in mimetypes:
131
+ assert cls == lexers.get_lexer_for_mimetype(mimetype).__class__.__name__
132
+
133
+
134
+ def test_formatter_public_api():
135
+ ts = list(lexers.PythonLexer().get_tokens("def f(): pass"))
136
+ out = StringIO()
137
+ # test that every formatter class has the correct public API
138
+ def verify(formatter, info):
139
+ assert len(info) == 4
140
+ assert info[0], "missing formatter name"
141
+ assert info[1], "missing formatter aliases"
142
+ assert info[3], "missing formatter docstring"
143
+
144
+ if formatter.name == 'Raw tokens':
145
+ # will not work with Unicode output file
146
+ return
147
+
148
+ try:
149
+ inst = formatter(opt1="val1")
150
+ except (ImportError, FontNotFound):
151
+ return
152
+ try:
153
+ inst.get_style_defs()
154
+ except NotImplementedError:
155
+ # may be raised by formatters for which it doesn't make sense
156
+ pass
157
+ inst.format(ts, out)
158
+
159
+ for formatter, info in formatters.FORMATTERS.iteritems():
160
+ yield verify, formatter, info
161
+
162
+ def test_formatter_encodings():
163
+ from pygments.formatters import HtmlFormatter
164
+
165
+ # unicode output
166
+ fmt = HtmlFormatter()
167
+ tokens = [(Text, u"ä")]
168
+ out = format(tokens, fmt)
169
+ assert type(out) is unicode
170
+ assert u"ä" in out
171
+
172
+ # encoding option
173
+ fmt = HtmlFormatter(encoding="latin1")
174
+ tokens = [(Text, u"ä")]
175
+ assert u"ä".encode("latin1") in format(tokens, fmt)
176
+
177
+ # encoding and outencoding option
178
+ fmt = HtmlFormatter(encoding="latin1", outencoding="utf8")
179
+ tokens = [(Text, u"ä")]
180
+ assert u"ä".encode("utf8") in format(tokens, fmt)
181
+
182
+
183
+ def test_formatter_unicode_handling():
184
+ # test that the formatter supports encoding and Unicode
185
+ tokens = list(lexers.PythonLexer(encoding='utf-8').
186
+ get_tokens("def f(): 'ä'"))
187
+
188
+ def verify(formatter):
189
+ try:
190
+ inst = formatter(encoding=None)
191
+ except (ImportError, FontNotFound):
192
+ # some dependency or font not installed
193
+ return
194
+
195
+ if formatter.name != 'Raw tokens':
196
+ out = format(tokens, inst)
197
+ if formatter.unicodeoutput:
198
+ assert type(out) is unicode
199
+
200
+ inst = formatter(encoding='utf-8')
201
+ out = format(tokens, inst)
202
+ assert type(out) is bytes, '%s: %r' % (formatter, out)
203
+ # Cannot test for encoding, since formatters may have to escape
204
+ # non-ASCII characters.
205
+ else:
206
+ inst = formatter()
207
+ out = format(tokens, inst)
208
+ assert type(out) is bytes, '%s: %r' % (formatter, out)
209
+
210
+ for formatter, info in formatters.FORMATTERS.iteritems():
211
+ yield verify, formatter
212
+
213
+
214
+ def test_get_formatters():
215
+ # test that the formatters functions work
216
+ x = formatters.get_formatter_by_name("html", opt="val")
217
+ assert isinstance(x, formatters.HtmlFormatter)
218
+ assert x.options["opt"] == "val"
219
+
220
+ x = formatters.get_formatter_for_filename("a.html", opt="val")
221
+ assert isinstance(x, formatters.HtmlFormatter)
222
+ assert x.options["opt"] == "val"
223
+
224
+
225
+ def test_styles():
226
+ # minimal style test
227
+ from pygments.formatters import HtmlFormatter
228
+ fmt = HtmlFormatter(style="pastie")
229
+
230
+
231
+ class FiltersTest(unittest.TestCase):
232
+
233
+ def test_basic(self):
234
+ filter_args = {
235
+ 'whitespace': {'spaces': True, 'tabs': True, 'newlines': True},
236
+ 'highlight': {'names': ['isinstance', 'lexers', 'x']},
237
+ }
238
+ for x in filters.FILTERS.keys():
239
+ lx = lexers.PythonLexer()
240
+ lx.add_filter(x, **filter_args.get(x, {}))
241
+ fp = open(TESTFILE, 'rb')
242
+ try:
243
+ text = fp.read().decode('utf-8')
244
+ finally:
245
+ fp.close()
246
+ tokens = list(lx.get_tokens(text))
247
+ roundtext = ''.join([t[1] for t in tokens])
248
+ if x not in ('whitespace', 'keywordcase'):
249
+ # these filters change the text
250
+ self.assertEqual(roundtext, text,
251
+ "lexer roundtrip with %s filter failed" % x)
252
+
253
+ def test_raiseonerror(self):
254
+ lx = lexers.PythonLexer()
255
+ lx.add_filter('raiseonerror', excclass=RuntimeError)
256
+ self.assertRaises(RuntimeError, list, lx.get_tokens('$'))
257
+
258
+ def test_whitespace(self):
259
+ lx = lexers.PythonLexer()
260
+ lx.add_filter('whitespace', spaces='%')
261
+ fp = open(TESTFILE, 'rb')
262
+ try:
263
+ text = fp.read().decode('utf-8')
264
+ finally:
265
+ fp.close()
266
+ lxtext = ''.join([t[1] for t in list(lx.get_tokens(text))])
267
+ self.assertFalse(' ' in lxtext)
268
+
269
+ def test_keywordcase(self):
270
+ lx = lexers.PythonLexer()
271
+ lx.add_filter('keywordcase', case='capitalize')
272
+ fp = open(TESTFILE, 'rb')
273
+ try:
274
+ text = fp.read().decode('utf-8')
275
+ finally:
276
+ fp.close()
277
+ lxtext = ''.join([t[1] for t in list(lx.get_tokens(text))])
278
+ self.assertTrue('Def' in lxtext and 'Class' in lxtext)
279
+
280
+ def test_codetag(self):
281
+ lx = lexers.PythonLexer()
282
+ lx.add_filter('codetagify')
283
+ text = u'# BUG: text'
284
+ tokens = list(lx.get_tokens(text))
285
+ self.assertEqual('# ', tokens[0][1])
286
+ self.assertEqual('BUG', tokens[1][1])
287
+
288
+ def test_codetag_boundary(self):
289
+ # ticket #368
290
+ lx = lexers.PythonLexer()
291
+ lx.add_filter('codetagify')
292
+ text = u'# DEBUG: text'
293
+ tokens = list(lx.get_tokens(text))
294
+ self.assertEqual('# DEBUG: text', tokens[0][1])