pygments.rb-jruby 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/CHANGELOG.md +71 -0
  4. data/Gemfile +2 -0
  5. data/LICENSE +17 -0
  6. data/README.md +118 -0
  7. data/Rakefile +66 -0
  8. data/bench.rb +22 -0
  9. data/cache-lexers.rb +8 -0
  10. data/lexers +0 -0
  11. data/lib/pygments.rb +8 -0
  12. data/lib/pygments/lexer.rb +148 -0
  13. data/lib/pygments/mentos.py +351 -0
  14. data/lib/pygments/popen.rb +404 -0
  15. data/lib/pygments/version.rb +3 -0
  16. data/pygments.rb.gemspec +24 -0
  17. data/test/test_data.c +2581 -0
  18. data/test/test_data.py +514 -0
  19. data/test/test_data_generated +2582 -0
  20. data/test/test_pygments.rb +287 -0
  21. data/vendor/custom_lexers/github.py +565 -0
  22. data/vendor/pygments-main/AUTHORS +153 -0
  23. data/vendor/pygments-main/CHANGES +889 -0
  24. data/vendor/pygments-main/LICENSE +25 -0
  25. data/vendor/pygments-main/MANIFEST.in +6 -0
  26. data/vendor/pygments-main/Makefile +59 -0
  27. data/vendor/pygments-main/REVISION +1 -0
  28. data/vendor/pygments-main/TODO +15 -0
  29. data/vendor/pygments-main/docs/generate.py +472 -0
  30. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  31. data/vendor/pygments-main/docs/src/api.txt +270 -0
  32. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  33. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  34. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  35. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  36. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  37. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  38. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  39. data/vendor/pygments-main/docs/src/index.txt +69 -0
  40. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  41. data/vendor/pygments-main/docs/src/integrate.txt +48 -0
  42. data/vendor/pygments-main/docs/src/java.txt +70 -0
  43. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +603 -0
  44. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  45. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  46. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  47. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  48. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  49. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  50. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  51. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  52. data/vendor/pygments-main/external/autopygmentize +64 -0
  53. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
  54. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  55. data/vendor/pygments-main/external/moin-parser.py +112 -0
  56. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  57. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  58. data/vendor/pygments-main/external/rst-directive.py +83 -0
  59. data/vendor/pygments-main/ez_setup.py +276 -0
  60. data/vendor/pygments-main/pygmentize +7 -0
  61. data/vendor/pygments-main/pygments/__init__.py +91 -0
  62. data/vendor/pygments-main/pygments/cmdline.py +441 -0
  63. data/vendor/pygments-main/pygments/console.py +74 -0
  64. data/vendor/pygments-main/pygments/filter.py +74 -0
  65. data/vendor/pygments-main/pygments/filters/__init__.py +356 -0
  66. data/vendor/pygments-main/pygments/formatter.py +95 -0
  67. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  68. data/vendor/pygments-main/pygments/formatters/_mapping.py +92 -0
  69. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  70. data/vendor/pygments-main/pygments/formatters/html.py +821 -0
  71. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  72. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  73. data/vendor/pygments-main/pygments/formatters/other.py +115 -0
  74. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  75. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  76. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  77. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  78. data/vendor/pygments-main/pygments/lexer.py +765 -0
  79. data/vendor/pygments-main/pygments/lexers/__init__.py +240 -0
  80. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  81. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  82. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
  83. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  84. data/vendor/pygments-main/pygments/lexers/_mapping.py +354 -0
  85. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
  86. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  87. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +233 -0
  88. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
  89. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +40 -0
  90. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
  91. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
  92. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -0
  93. data/vendor/pygments-main/pygments/lexers/agile.py +2290 -0
  94. data/vendor/pygments-main/pygments/lexers/asm.py +398 -0
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +3723 -0
  96. data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
  97. data/vendor/pygments-main/pygments/lexers/dotnet.py +671 -0
  98. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  99. data/vendor/pygments-main/pygments/lexers/functional.py +2731 -0
  100. data/vendor/pygments-main/pygments/lexers/github.py +565 -0
  101. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  102. data/vendor/pygments-main/pygments/lexers/jvm.py +1112 -0
  103. data/vendor/pygments-main/pygments/lexers/math.py +1918 -0
  104. data/vendor/pygments-main/pygments/lexers/other.py +3778 -0
  105. data/vendor/pygments-main/pygments/lexers/parsers.py +778 -0
  106. data/vendor/pygments-main/pygments/lexers/shell.py +424 -0
  107. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  108. data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
  109. data/vendor/pygments-main/pygments/lexers/templates.py +1742 -0
  110. data/vendor/pygments-main/pygments/lexers/text.py +1893 -0
  111. data/vendor/pygments-main/pygments/lexers/web.py +4045 -0
  112. data/vendor/pygments-main/pygments/modeline.py +40 -0
  113. data/vendor/pygments-main/pygments/plugin.py +74 -0
  114. data/vendor/pygments-main/pygments/scanner.py +104 -0
  115. data/vendor/pygments-main/pygments/style.py +117 -0
  116. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  117. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  118. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  119. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  120. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  121. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  122. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  123. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  124. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  125. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  126. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  127. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  128. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  129. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  130. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  131. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  132. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  133. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  134. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  135. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  136. data/vendor/pygments-main/pygments/token.py +195 -0
  137. data/vendor/pygments-main/pygments/unistring.py +140 -0
  138. data/vendor/pygments-main/pygments/util.py +277 -0
  139. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  140. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +32 -0
  141. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  142. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  143. data/vendor/pygments-main/scripts/find_error.py +170 -0
  144. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  145. data/vendor/pygments-main/scripts/pylintrc +301 -0
  146. data/vendor/pygments-main/scripts/reindent.py +291 -0
  147. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  148. data/vendor/pygments-main/setup.cfg +7 -0
  149. data/vendor/pygments-main/setup.py +90 -0
  150. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  151. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  152. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  153. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  154. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  155. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  156. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  157. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  158. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  159. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  160. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  161. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  162. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  163. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
  164. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  165. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  166. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  167. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  168. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  169. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  170. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  171. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  172. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  173. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  174. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  175. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  176. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  177. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  178. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  179. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  180. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  181. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  182. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  183. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  184. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  185. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  186. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  187. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  188. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  189. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  190. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  191. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  192. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  193. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  194. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  195. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  196. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  197. data/vendor/pygments-main/tests/examplefiles/classes.dylan +125 -0
  198. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  199. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  200. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  201. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  202. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  203. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  204. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  205. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  206. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  207. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  208. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  209. data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
  210. data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
  211. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  212. data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
  213. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  214. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  215. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  216. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  217. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  218. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  219. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  220. data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
  221. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  222. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  223. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  224. data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
  225. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  226. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  227. data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
  228. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  229. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  230. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  231. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  232. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  233. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  234. data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
  235. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  236. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  237. data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
  238. data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
  239. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  240. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  241. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  242. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  243. data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
  244. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  245. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  246. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  247. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  248. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  249. data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
  250. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  251. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  252. data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
  253. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  254. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  255. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  256. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  257. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  258. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  259. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  260. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  261. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  262. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
  263. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  264. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  265. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  266. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  267. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  268. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  269. data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
  270. data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
  271. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  272. data/vendor/pygments-main/tests/examplefiles/http_request_example +15 -0
  273. data/vendor/pygments-main/tests/examplefiles/http_response_example +29 -0
  274. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  275. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
  276. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  277. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  278. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  279. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  280. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  281. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  282. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  283. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  284. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  285. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  286. data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
  287. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
  288. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  289. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  290. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
  291. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  292. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  293. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  294. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  295. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  296. data/vendor/pygments-main/tests/examplefiles/matlab_sample +30 -0
  297. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  298. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
  299. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  300. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  301. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  302. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  303. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  304. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  305. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  306. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  307. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  308. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  309. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  310. data/vendor/pygments-main/tests/examplefiles/objc_example.m +32 -0
  311. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  312. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  313. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  314. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  315. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  316. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  317. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  318. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  319. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  320. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  321. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  322. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  323. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  324. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  325. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  326. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
  327. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  328. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  329. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  330. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  331. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  332. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  333. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  334. data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
  335. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  336. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
  337. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  338. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  339. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  340. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  341. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  342. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  343. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  344. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  345. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  346. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  347. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  348. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  349. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  350. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  351. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  352. data/vendor/pygments-main/tests/examplefiles/test.R +153 -0
  353. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  354. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  355. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  356. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  357. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  358. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  359. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  360. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  361. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  362. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  363. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  364. data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
  365. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  366. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  367. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  368. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  369. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  370. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  371. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  372. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  373. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  374. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  375. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  376. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  377. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  378. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  379. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  380. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  381. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  382. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  383. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  384. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  385. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  386. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  387. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  388. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  389. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  390. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  391. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  392. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  393. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  394. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  395. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  396. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  397. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  398. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  399. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  400. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  401. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  402. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  403. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  404. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  405. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  406. data/vendor/pygments-main/tests/examplefiles/type.lisp +1218 -0
  407. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  408. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  409. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  410. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  411. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  412. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  413. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  414. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  415. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  416. data/vendor/pygments-main/tests/old_run.py +138 -0
  417. data/vendor/pygments-main/tests/run.py +49 -0
  418. data/vendor/pygments-main/tests/support.py +15 -0
  419. data/vendor/pygments-main/tests/support/tags +36 -0
  420. data/vendor/pygments-main/tests/test_basic_api.py +295 -0
  421. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  422. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  423. data/vendor/pygments-main/tests/test_examplefiles.py +99 -0
  424. data/vendor/pygments-main/tests/test_html_formatter.py +178 -0
  425. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  426. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  427. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  428. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  429. data/vendor/pygments-main/tests/test_token.py +46 -0
  430. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  431. data/vendor/pygments-main/tests/test_util.py +135 -0
  432. data/vendor/simplejson/.gitignore +10 -0
  433. data/vendor/simplejson/.travis.yml +5 -0
  434. data/vendor/simplejson/CHANGES.txt +291 -0
  435. data/vendor/simplejson/LICENSE.txt +19 -0
  436. data/vendor/simplejson/MANIFEST.in +5 -0
  437. data/vendor/simplejson/README.rst +19 -0
  438. data/vendor/simplejson/conf.py +179 -0
  439. data/vendor/simplejson/index.rst +628 -0
  440. data/vendor/simplejson/scripts/make_docs.py +18 -0
  441. data/vendor/simplejson/setup.py +104 -0
  442. data/vendor/simplejson/simplejson/__init__.py +510 -0
  443. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  444. data/vendor/simplejson/simplejson/decoder.py +425 -0
  445. data/vendor/simplejson/simplejson/encoder.py +567 -0
  446. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  447. data/vendor/simplejson/simplejson/scanner.py +77 -0
  448. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  449. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  450. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  451. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  452. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  453. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  454. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  455. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  456. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  457. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  458. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  459. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  460. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  461. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  462. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  463. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  464. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  465. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  466. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  467. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  468. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  469. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  470. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  471. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  472. data/vendor/simplejson/simplejson/tool.py +39 -0
  473. metadata +557 -0
@@ -0,0 +1,138 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments unit tests
4
+ ~~~~~~~~~~~~~~~~~~
5
+
6
+ Usage::
7
+
8
+ python run.py [testfile ...]
9
+
10
+
11
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
12
+ :license: BSD, see LICENSE for details.
13
+ """
14
+
15
+ import sys, os
16
+ import unittest
17
+
18
+ from os.path import dirname, basename, join, abspath
19
+
20
+ import pygments
21
+
22
+ try:
23
+ import coverage
24
+ except ImportError:
25
+ coverage = None
26
+
27
+ testdir = abspath(dirname(__file__))
28
+
29
+ failed = []
30
+ total_test_count = 0
31
+ error_test_count = 0
32
+
33
+
34
+ def err(file, what, exc):
35
+ print >>sys.stderr, file, 'failed %s:' % what,
36
+ print >>sys.stderr, exc
37
+ failed.append(file[:-3])
38
+
39
+
40
+ class QuietTestRunner(object):
41
+ """Customized test runner for relatively quiet output"""
42
+
43
+ def __init__(self, testname, stream=sys.stderr):
44
+ self.testname = testname
45
+ self.stream = unittest._WritelnDecorator(stream)
46
+
47
+ def run(self, test):
48
+ global total_test_count
49
+ global error_test_count
50
+ result = unittest._TextTestResult(self.stream, True, 1)
51
+ test(result)
52
+ if not result.wasSuccessful():
53
+ self.stream.write(' FAIL:')
54
+ result.printErrors()
55
+ failed.append(self.testname)
56
+ else:
57
+ self.stream.write(' ok\n')
58
+ total_test_count += result.testsRun
59
+ error_test_count += len(result.errors) + len(result.failures)
60
+ return result
61
+
62
+
63
+ def run_tests(with_coverage=False):
64
+ # needed to avoid confusion involving atexit handlers
65
+ import logging
66
+
67
+ if sys.argv[1:]:
68
+ # test only files given on cmdline
69
+ files = [entry + '.py' for entry in sys.argv[1:] if entry.startswith('test_')]
70
+ else:
71
+ files = [entry for entry in os.listdir(testdir)
72
+ if (entry.startswith('test_') and entry.endswith('.py'))]
73
+ files.sort()
74
+
75
+ WIDTH = 85
76
+
77
+ print >>sys.stderr, \
78
+ ('Pygments %s Test Suite running%s, stand by...' %
79
+ (pygments.__version__,
80
+ with_coverage and " with coverage analysis" or "")).center(WIDTH)
81
+ print >>sys.stderr, ('(using Python %s)' % sys.version.split()[0]).center(WIDTH)
82
+ print >>sys.stderr, '='*WIDTH
83
+
84
+ if with_coverage:
85
+ coverage.erase()
86
+ coverage.start()
87
+
88
+ for testfile in files:
89
+ globs = {'__file__': join(testdir, testfile)}
90
+ try:
91
+ execfile(join(testdir, testfile), globs)
92
+ except Exception, exc:
93
+ raise
94
+ err(testfile, 'execfile', exc)
95
+ continue
96
+ sys.stderr.write(testfile[:-3] + ': ')
97
+ try:
98
+ runner = QuietTestRunner(testfile[:-3])
99
+ # make a test suite of all TestCases in the file
100
+ tests = []
101
+ for name, thing in globs.iteritems():
102
+ if name.endswith('Test'):
103
+ tests.append((name, unittest.makeSuite(thing)))
104
+ tests.sort()
105
+ suite = unittest.TestSuite()
106
+ suite.addTests([x[1] for x in tests])
107
+ runner.run(suite)
108
+ except Exception, exc:
109
+ err(testfile, 'running test', exc)
110
+
111
+ print >>sys.stderr, '='*WIDTH
112
+ if failed:
113
+ print >>sys.stderr, '%d of %d tests failed.' % \
114
+ (error_test_count, total_test_count)
115
+ print >>sys.stderr, 'Tests failed in:', ', '.join(failed)
116
+ ret = 1
117
+ else:
118
+ if total_test_count == 1:
119
+ print >>sys.stderr, '1 test happy.'
120
+ else:
121
+ print >>sys.stderr, 'All %d tests happy.' % total_test_count
122
+ ret = 0
123
+
124
+ if with_coverage:
125
+ coverage.stop()
126
+ modules = [mod for name, mod in sys.modules.iteritems()
127
+ if name.startswith('pygments.') and mod]
128
+ coverage.report(modules)
129
+
130
+ return ret
131
+
132
+
133
+ if __name__ == '__main__':
134
+ with_coverage = False
135
+ if sys.argv[1:2] == ['-C']:
136
+ with_coverage = bool(coverage)
137
+ del sys.argv[1]
138
+ sys.exit(run_tests(with_coverage))
@@ -0,0 +1,49 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments unit tests
4
+ ~~~~~~~~~~~~~~~~~~
5
+
6
+ Usage::
7
+
8
+ python run.py [testfile ...]
9
+
10
+
11
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
12
+ :license: BSD, see LICENSE for details.
13
+ """
14
+
15
+ import sys, os
16
+
17
+ if sys.version_info >= (3,):
18
+ # copy test suite over to "build/lib" and convert it
19
+ print ('Copying and converting sources to build/lib/test...')
20
+ from distutils.util import copydir_run_2to3
21
+ testroot = os.path.dirname(__file__)
22
+ newroot = os.path.join(testroot, '..', 'build/lib/test')
23
+ copydir_run_2to3(testroot, newroot)
24
+ # make nose believe that we run from the converted dir
25
+ os.chdir(newroot)
26
+ else:
27
+ # only find tests in this directory
28
+ if os.path.dirname(__file__):
29
+ os.chdir(os.path.dirname(__file__))
30
+
31
+
32
+ try:
33
+ import nose
34
+ except ImportError:
35
+ print ('nose is required to run the Pygments test suite')
36
+ sys.exit(1)
37
+
38
+ try:
39
+ # make sure the current source is first on sys.path
40
+ sys.path.insert(0, '..')
41
+ import pygments
42
+ except ImportError:
43
+ print ('Cannot find Pygments to test: %s' % sys.exc_info()[1])
44
+ sys.exit(1)
45
+ else:
46
+ print ('Pygments %s test suite running (Python %s)...' %
47
+ (pygments.__version__, sys.version.split()[0]))
48
+
49
+ nose.main()
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+ """
3
+ Support for Pygments tests
4
+ """
5
+
6
+ import os
7
+
8
+
9
+ def location(mod_name):
10
+ """
11
+ Return the file and directory that the code for *mod_name* is in.
12
+ """
13
+ source = mod_name.endswith("pyc") and mod_name[:-1] or mod_name
14
+ source = os.path.abspath(source)
15
+ return source, os.path.dirname(source)
@@ -0,0 +1,36 @@
1
+ !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
2
+ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
3
+ !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
4
+ !_TAG_PROGRAM_NAME Exuberant Ctags //
5
+ !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
6
+ !_TAG_PROGRAM_VERSION 5.8 //
7
+ HtmlFormatter test_html_formatter.py 19;" i
8
+ HtmlFormatterTest test_html_formatter.py 34;" c
9
+ NullFormatter test_html_formatter.py 19;" i
10
+ PythonLexer test_html_formatter.py 18;" i
11
+ StringIO test_html_formatter.py 13;" i
12
+ dirname test_html_formatter.py 16;" i
13
+ escape_html test_html_formatter.py 20;" i
14
+ fp test_html_formatter.py 27;" v
15
+ inspect test_html_formatter.py 15;" i
16
+ isfile test_html_formatter.py 16;" i
17
+ join test_html_formatter.py 16;" i
18
+ os test_html_formatter.py 10;" i
19
+ re test_html_formatter.py 11;" i
20
+ subprocess test_html_formatter.py 125;" i
21
+ support test_html_formatter.py 23;" i
22
+ tempfile test_html_formatter.py 14;" i
23
+ test_all_options test_html_formatter.py 72;" m class:HtmlFormatterTest
24
+ test_correct_output test_html_formatter.py 35;" m class:HtmlFormatterTest
25
+ test_ctags test_html_formatter.py 165;" m class:HtmlFormatterTest
26
+ test_external_css test_html_formatter.py 48;" m class:HtmlFormatterTest
27
+ test_get_style_defs test_html_formatter.py 141;" m class:HtmlFormatterTest
28
+ test_lineanchors test_html_formatter.py 98;" m class:HtmlFormatterTest
29
+ test_lineanchors_with_startnum test_html_formatter.py 106;" m class:HtmlFormatterTest
30
+ test_linenos test_html_formatter.py 82;" m class:HtmlFormatterTest
31
+ test_linenos_with_startnum test_html_formatter.py 90;" m class:HtmlFormatterTest
32
+ test_unicode_options test_html_formatter.py 155;" m class:HtmlFormatterTest
33
+ test_valid_output test_html_formatter.py 114;" m class:HtmlFormatterTest
34
+ tokensource test_html_formatter.py 29;" v
35
+ uni_open test_html_formatter.py 21;" i
36
+ unittest test_html_formatter.py 12;" i
@@ -0,0 +1,295 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments basic API tests
4
+ ~~~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
7
+ :license: BSD, see LICENSE for details.
8
+ """
9
+
10
+ import os
11
+ import random
12
+ import unittest
13
+
14
+ from pygments import lexers, formatters, filters, format
15
+ from pygments.token import _TokenType, Text
16
+ from pygments.lexer import RegexLexer
17
+ from pygments.formatters.img import FontNotFound
18
+ from pygments.util import BytesIO, StringIO, bytes, b
19
+
20
+ import support
21
+
22
+ TESTFILE, TESTDIR = support.location(__file__)
23
+
24
+ test_content = [chr(i) for i in xrange(33, 128)] * 5
25
+ random.shuffle(test_content)
26
+ test_content = ''.join(test_content) + '\n'
27
+
28
+
29
+ def test_lexer_import_all():
30
+ # instantiate every lexer, to see if the token type defs are correct
31
+ for x in lexers.LEXERS.keys():
32
+ c = getattr(lexers, x)()
33
+
34
+
35
+ def test_lexer_classes():
36
+ # test that every lexer class has the correct public API
37
+ def verify(cls):
38
+ assert type(cls.name) is str
39
+ for attr in 'aliases', 'filenames', 'alias_filenames', 'mimetypes':
40
+ assert hasattr(cls, attr)
41
+ assert type(getattr(cls, attr)) is list, \
42
+ "%s: %s attribute wrong" % (cls, attr)
43
+ result = cls.analyse_text("abc")
44
+ assert isinstance(result, float) and 0.0 <= result <= 1.0
45
+ result = cls.analyse_text(".abc")
46
+ assert isinstance(result, float) and 0.0 <= result <= 1.0
47
+
48
+ inst = cls(opt1="val1", opt2="val2")
49
+ if issubclass(cls, RegexLexer):
50
+ if not hasattr(cls, '_tokens'):
51
+ # if there's no "_tokens", the lexer has to be one with
52
+ # multiple tokendef variants
53
+ assert cls.token_variants
54
+ for variant in cls.tokens:
55
+ assert 'root' in cls.tokens[variant]
56
+ else:
57
+ assert 'root' in cls._tokens, \
58
+ '%s has no root state' % cls
59
+
60
+ if cls.name in ['XQuery', 'Opa']: # XXX temporary
61
+ return
62
+
63
+ tokens = list(inst.get_tokens(test_content))
64
+ txt = ""
65
+ for token in tokens:
66
+ assert isinstance(token, tuple)
67
+ assert isinstance(token[0], _TokenType)
68
+ if isinstance(token[1], str):
69
+ print repr(token[1])
70
+ assert isinstance(token[1], unicode)
71
+ txt += token[1]
72
+ assert txt == test_content, "%s lexer roundtrip failed: %r != %r" % \
73
+ (cls.name, test_content, txt)
74
+
75
+ for lexer in lexers._iter_lexerclasses():
76
+ yield verify, lexer
77
+
78
+
79
+ def test_lexer_options():
80
+ # test that the basic options work
81
+ def ensure(tokens, output):
82
+ concatenated = ''.join(token[1] for token in tokens)
83
+ assert concatenated == output, \
84
+ '%s: %r != %r' % (lexer, concatenated, output)
85
+ def verify(cls):
86
+ inst = cls(stripnl=False)
87
+ ensure(inst.get_tokens('a\nb'), 'a\nb\n')
88
+ ensure(inst.get_tokens('\n\n\n'), '\n\n\n')
89
+ inst = cls(stripall=True)
90
+ ensure(inst.get_tokens(' \n b\n\n\n'), 'b\n')
91
+ # some lexers require full lines in input
92
+ if cls.__name__ not in (
93
+ 'PythonConsoleLexer', 'RConsoleLexer', 'RubyConsoleLexer',
94
+ 'SqliteConsoleLexer', 'MatlabSessionLexer', 'ErlangShellLexer',
95
+ 'BashSessionLexer', 'LiterateHaskellLexer', 'LiterateAgdaLexer',
96
+ 'PostgresConsoleLexer', 'ElixirConsoleLexer', 'JuliaConsoleLexer',
97
+ 'RobotFrameworkLexer', 'DylanConsoleLexer', 'ShellSessionLexer'):
98
+ inst = cls(ensurenl=False)
99
+ ensure(inst.get_tokens('a\nb'), 'a\nb')
100
+ inst = cls(ensurenl=False, stripall=True)
101
+ ensure(inst.get_tokens('a\nb\n\n'), 'a\nb')
102
+
103
+ for lexer in lexers._iter_lexerclasses():
104
+ if lexer.__name__ == 'RawTokenLexer':
105
+ # this one is special
106
+ continue
107
+ yield verify, lexer
108
+
109
+
110
+ def test_get_lexers():
111
+ # test that the lexers functions work
112
+ def verify(func, args):
113
+ x = func(opt='val', *args)
114
+ assert isinstance(x, lexers.PythonLexer)
115
+ assert x.options["opt"] == "val"
116
+
117
+ for func, args in [(lexers.get_lexer_by_name, ("python",)),
118
+ (lexers.get_lexer_for_filename, ("test.py",)),
119
+ (lexers.get_lexer_for_mimetype, ("text/x-python",)),
120
+ (lexers.guess_lexer, ("#!/usr/bin/python -O\nprint",)),
121
+ (lexers.guess_lexer_for_filename, ("a.py", "<%= @foo %>"))
122
+ ]:
123
+ yield verify, func, args
124
+
125
+ for cls, (_, lname, aliases, _, mimetypes) in lexers.LEXERS.iteritems():
126
+ assert cls == lexers.find_lexer_class(lname).__name__
127
+
128
+ for alias in aliases:
129
+ assert cls == lexers.get_lexer_by_name(alias).__class__.__name__
130
+
131
+ for mimetype in mimetypes:
132
+ assert cls == lexers.get_lexer_for_mimetype(mimetype).__class__.__name__
133
+
134
+
135
+ def test_formatter_public_api():
136
+ ts = list(lexers.PythonLexer().get_tokens("def f(): pass"))
137
+ out = StringIO()
138
+ # test that every formatter class has the correct public API
139
+ def verify(formatter, info):
140
+ assert len(info) == 4
141
+ assert info[0], "missing formatter name"
142
+ assert info[1], "missing formatter aliases"
143
+ assert info[3], "missing formatter docstring"
144
+
145
+ if formatter.name == 'Raw tokens':
146
+ # will not work with Unicode output file
147
+ return
148
+
149
+ try:
150
+ inst = formatter(opt1="val1")
151
+ except (ImportError, FontNotFound):
152
+ return
153
+ try:
154
+ inst.get_style_defs()
155
+ except NotImplementedError:
156
+ # may be raised by formatters for which it doesn't make sense
157
+ pass
158
+ inst.format(ts, out)
159
+
160
+ for formatter, info in formatters.FORMATTERS.iteritems():
161
+ yield verify, formatter, info
162
+
163
+ def test_formatter_encodings():
164
+ from pygments.formatters import HtmlFormatter
165
+
166
+ # unicode output
167
+ fmt = HtmlFormatter()
168
+ tokens = [(Text, u"ä")]
169
+ out = format(tokens, fmt)
170
+ assert type(out) is unicode
171
+ assert u"ä" in out
172
+
173
+ # encoding option
174
+ fmt = HtmlFormatter(encoding="latin1")
175
+ tokens = [(Text, u"ä")]
176
+ assert u"ä".encode("latin1") in format(tokens, fmt)
177
+
178
+ # encoding and outencoding option
179
+ fmt = HtmlFormatter(encoding="latin1", outencoding="utf8")
180
+ tokens = [(Text, u"ä")]
181
+ assert u"ä".encode("utf8") in format(tokens, fmt)
182
+
183
+
184
+ def test_formatter_unicode_handling():
185
+ # test that the formatter supports encoding and Unicode
186
+ tokens = list(lexers.PythonLexer(encoding='utf-8').
187
+ get_tokens("def f(): 'ä'"))
188
+
189
+ def verify(formatter):
190
+ try:
191
+ inst = formatter(encoding=None)
192
+ except (ImportError, FontNotFound):
193
+ # some dependency or font not installed
194
+ return
195
+
196
+ if formatter.name != 'Raw tokens':
197
+ out = format(tokens, inst)
198
+ if formatter.unicodeoutput:
199
+ assert type(out) is unicode
200
+
201
+ inst = formatter(encoding='utf-8')
202
+ out = format(tokens, inst)
203
+ assert type(out) is bytes, '%s: %r' % (formatter, out)
204
+ # Cannot test for encoding, since formatters may have to escape
205
+ # non-ASCII characters.
206
+ else:
207
+ inst = formatter()
208
+ out = format(tokens, inst)
209
+ assert type(out) is bytes, '%s: %r' % (formatter, out)
210
+
211
+ for formatter, info in formatters.FORMATTERS.iteritems():
212
+ yield verify, formatter
213
+
214
+
215
+ def test_get_formatters():
216
+ # test that the formatters functions work
217
+ x = formatters.get_formatter_by_name("html", opt="val")
218
+ assert isinstance(x, formatters.HtmlFormatter)
219
+ assert x.options["opt"] == "val"
220
+
221
+ x = formatters.get_formatter_for_filename("a.html", opt="val")
222
+ assert isinstance(x, formatters.HtmlFormatter)
223
+ assert x.options["opt"] == "val"
224
+
225
+
226
+ def test_styles():
227
+ # minimal style test
228
+ from pygments.formatters import HtmlFormatter
229
+ fmt = HtmlFormatter(style="pastie")
230
+
231
+
232
+ class FiltersTest(unittest.TestCase):
233
+
234
+ def test_basic(self):
235
+ filter_args = {
236
+ 'whitespace': {'spaces': True, 'tabs': True, 'newlines': True},
237
+ 'highlight': {'names': ['isinstance', 'lexers', 'x']},
238
+ }
239
+ for x in filters.FILTERS.keys():
240
+ lx = lexers.PythonLexer()
241
+ lx.add_filter(x, **filter_args.get(x, {}))
242
+ fp = open(TESTFILE, 'rb')
243
+ try:
244
+ text = fp.read().decode('utf-8')
245
+ finally:
246
+ fp.close()
247
+ tokens = list(lx.get_tokens(text))
248
+ roundtext = ''.join([t[1] for t in tokens])
249
+ if x not in ('whitespace', 'keywordcase'):
250
+ # these filters change the text
251
+ self.assertEqual(roundtext, text,
252
+ "lexer roundtrip with %s filter failed" % x)
253
+
254
+ def test_raiseonerror(self):
255
+ lx = lexers.PythonLexer()
256
+ lx.add_filter('raiseonerror', excclass=RuntimeError)
257
+ self.assertRaises(RuntimeError, list, lx.get_tokens('$'))
258
+
259
+ def test_whitespace(self):
260
+ lx = lexers.PythonLexer()
261
+ lx.add_filter('whitespace', spaces='%')
262
+ fp = open(TESTFILE, 'rb')
263
+ try:
264
+ text = fp.read().decode('utf-8')
265
+ finally:
266
+ fp.close()
267
+ lxtext = ''.join([t[1] for t in list(lx.get_tokens(text))])
268
+ self.assertFalse(' ' in lxtext)
269
+
270
+ def test_keywordcase(self):
271
+ lx = lexers.PythonLexer()
272
+ lx.add_filter('keywordcase', case='capitalize')
273
+ fp = open(TESTFILE, 'rb')
274
+ try:
275
+ text = fp.read().decode('utf-8')
276
+ finally:
277
+ fp.close()
278
+ lxtext = ''.join([t[1] for t in list(lx.get_tokens(text))])
279
+ self.assertTrue('Def' in lxtext and 'Class' in lxtext)
280
+
281
+ def test_codetag(self):
282
+ lx = lexers.PythonLexer()
283
+ lx.add_filter('codetagify')
284
+ text = u'# BUG: text'
285
+ tokens = list(lx.get_tokens(text))
286
+ self.assertEqual('# ', tokens[0][1])
287
+ self.assertEqual('BUG', tokens[1][1])
288
+
289
+ def test_codetag_boundary(self):
290
+ # ticket #368
291
+ lx = lexers.PythonLexer()
292
+ lx.add_filter('codetagify')
293
+ text = u'# DEBUG: text'
294
+ tokens = list(lx.get_tokens(text))
295
+ self.assertEqual('# DEBUG: text', tokens[0][1])