mortar-pygments.rb 0.5.5

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 (472) hide show
  1. data/.gitignore +6 -0
  2. data/CHANGELOG.md +71 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE +17 -0
  5. data/README.md +121 -0
  6. data/Rakefile +66 -0
  7. data/bench.rb +22 -0
  8. data/cache-lexers.rb +8 -0
  9. data/lexers +0 -0
  10. data/lib/pygments/lexer.rb +148 -0
  11. data/lib/pygments/mentos.py +351 -0
  12. data/lib/pygments/popen.rb +406 -0
  13. data/lib/pygments/version.rb +3 -0
  14. data/lib/pygments.rb +8 -0
  15. data/pygments.rb.gemspec +25 -0
  16. data/test/test_data.c +2581 -0
  17. data/test/test_data.py +514 -0
  18. data/test/test_data_generated +2582 -0
  19. data/test/test_pygments.rb +287 -0
  20. data/vendor/custom_lexers/github.py +565 -0
  21. data/vendor/pygments-main/AUTHORS +153 -0
  22. data/vendor/pygments-main/CHANGES +889 -0
  23. data/vendor/pygments-main/LICENSE +25 -0
  24. data/vendor/pygments-main/MANIFEST.in +6 -0
  25. data/vendor/pygments-main/Makefile +59 -0
  26. data/vendor/pygments-main/REVISION +1 -0
  27. data/vendor/pygments-main/TODO +15 -0
  28. data/vendor/pygments-main/docs/generate.py +472 -0
  29. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  30. data/vendor/pygments-main/docs/src/api.txt +270 -0
  31. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  32. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  33. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  34. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  35. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  36. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  37. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  38. data/vendor/pygments-main/docs/src/index.txt +69 -0
  39. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  40. data/vendor/pygments-main/docs/src/integrate.txt +48 -0
  41. data/vendor/pygments-main/docs/src/java.txt +70 -0
  42. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +603 -0
  43. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  44. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  45. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  46. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  47. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  48. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  49. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  50. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  51. data/vendor/pygments-main/external/autopygmentize +64 -0
  52. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
  53. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  54. data/vendor/pygments-main/external/moin-parser.py +112 -0
  55. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  56. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  57. data/vendor/pygments-main/external/rst-directive.py +83 -0
  58. data/vendor/pygments-main/ez_setup.py +276 -0
  59. data/vendor/pygments-main/pygmentize +7 -0
  60. data/vendor/pygments-main/pygments/__init__.py +91 -0
  61. data/vendor/pygments-main/pygments/cmdline.py +441 -0
  62. data/vendor/pygments-main/pygments/console.py +74 -0
  63. data/vendor/pygments-main/pygments/filter.py +74 -0
  64. data/vendor/pygments-main/pygments/filters/__init__.py +356 -0
  65. data/vendor/pygments-main/pygments/formatter.py +95 -0
  66. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  67. data/vendor/pygments-main/pygments/formatters/_mapping.py +92 -0
  68. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  69. data/vendor/pygments-main/pygments/formatters/html.py +821 -0
  70. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  71. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  72. data/vendor/pygments-main/pygments/formatters/other.py +115 -0
  73. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  74. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  75. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  76. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  77. data/vendor/pygments-main/pygments/lexer.py +765 -0
  78. data/vendor/pygments-main/pygments/lexers/__init__.py +240 -0
  79. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  80. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  81. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
  82. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  83. data/vendor/pygments-main/pygments/lexers/_mapping.py +355 -0
  84. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
  85. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  86. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +233 -0
  87. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
  88. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +40 -0
  89. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
  90. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
  91. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -0
  92. data/vendor/pygments-main/pygments/lexers/agile.py +2290 -0
  93. data/vendor/pygments-main/pygments/lexers/asm.py +398 -0
  94. data/vendor/pygments-main/pygments/lexers/compiled.py +3723 -0
  95. data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
  96. data/vendor/pygments-main/pygments/lexers/dotnet.py +671 -0
  97. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  98. data/vendor/pygments-main/pygments/lexers/functional.py +2731 -0
  99. data/vendor/pygments-main/pygments/lexers/github.py +565 -0
  100. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  101. data/vendor/pygments-main/pygments/lexers/jvm.py +1112 -0
  102. data/vendor/pygments-main/pygments/lexers/math.py +1918 -0
  103. data/vendor/pygments-main/pygments/lexers/other.py +3778 -0
  104. data/vendor/pygments-main/pygments/lexers/parsers.py +778 -0
  105. data/vendor/pygments-main/pygments/lexers/shell.py +424 -0
  106. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  107. data/vendor/pygments-main/pygments/lexers/sql.py +609 -0
  108. data/vendor/pygments-main/pygments/lexers/templates.py +1742 -0
  109. data/vendor/pygments-main/pygments/lexers/text.py +1893 -0
  110. data/vendor/pygments-main/pygments/lexers/web.py +4045 -0
  111. data/vendor/pygments-main/pygments/modeline.py +40 -0
  112. data/vendor/pygments-main/pygments/plugin.py +74 -0
  113. data/vendor/pygments-main/pygments/scanner.py +104 -0
  114. data/vendor/pygments-main/pygments/style.py +117 -0
  115. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  116. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  117. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  118. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  119. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  120. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  121. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  122. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  123. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  124. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  125. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  126. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  127. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  128. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  129. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  130. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  131. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  132. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  133. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  134. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  135. data/vendor/pygments-main/pygments/token.py +195 -0
  136. data/vendor/pygments-main/pygments/unistring.py +140 -0
  137. data/vendor/pygments-main/pygments/util.py +277 -0
  138. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  139. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +32 -0
  140. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  141. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  142. data/vendor/pygments-main/scripts/find_error.py +170 -0
  143. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  144. data/vendor/pygments-main/scripts/pylintrc +301 -0
  145. data/vendor/pygments-main/scripts/reindent.py +291 -0
  146. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  147. data/vendor/pygments-main/setup.cfg +7 -0
  148. data/vendor/pygments-main/setup.py +90 -0
  149. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  150. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  151. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  152. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  153. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  154. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  155. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  156. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  157. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  158. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  159. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  160. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  161. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  162. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
  163. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  164. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  165. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  166. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  167. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  168. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  169. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  170. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  171. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  172. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  173. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  174. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  175. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  176. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  177. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  178. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  179. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  180. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  181. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  182. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  183. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  184. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  185. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  186. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  187. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  188. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  189. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  190. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  191. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  192. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  193. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  194. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  195. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  196. data/vendor/pygments-main/tests/examplefiles/classes.dylan +125 -0
  197. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  198. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  199. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  200. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  201. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  202. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  203. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  204. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  205. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  206. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  207. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  208. data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
  209. data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
  210. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  211. data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
  212. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  213. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  214. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  215. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  216. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  217. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  218. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  219. data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
  220. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  221. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  222. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  223. data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
  224. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  225. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  226. data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
  227. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  228. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  229. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  230. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  231. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  232. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  233. data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
  234. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  235. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  236. data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
  237. data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
  238. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  239. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  240. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  241. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  242. data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
  243. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  244. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  245. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  246. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  247. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  248. data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
  249. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  250. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  251. data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
  252. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  253. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  254. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  255. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  256. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  257. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  258. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  259. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  260. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  261. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
  262. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  263. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  264. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  265. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  266. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  267. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  268. data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
  269. data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
  270. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  271. data/vendor/pygments-main/tests/examplefiles/http_request_example +15 -0
  272. data/vendor/pygments-main/tests/examplefiles/http_response_example +29 -0
  273. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  274. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
  275. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  276. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  277. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  278. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  279. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  280. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  281. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  282. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  283. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  284. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  285. data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
  286. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
  287. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  288. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  289. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
  290. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  291. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  292. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  293. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  294. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  295. data/vendor/pygments-main/tests/examplefiles/matlab_sample +30 -0
  296. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  297. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
  298. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  299. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  300. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  301. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  302. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  303. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  304. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  305. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  306. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  307. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  308. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  309. data/vendor/pygments-main/tests/examplefiles/objc_example.m +32 -0
  310. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  311. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  312. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  313. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  314. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  315. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  316. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  317. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  318. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  319. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  320. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  321. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  322. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  323. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  324. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  325. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
  326. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  327. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  328. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  329. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  330. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  331. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  332. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  333. data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
  334. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  335. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
  336. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  337. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  338. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  339. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  340. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  341. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  342. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  343. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  344. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  345. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  346. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  347. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  348. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  349. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  350. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  351. data/vendor/pygments-main/tests/examplefiles/test.R +153 -0
  352. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  353. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  354. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  355. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  356. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  357. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  358. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  359. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  360. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  361. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  362. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  363. data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
  364. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  365. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  366. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  367. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  368. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  369. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  370. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  371. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  372. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  373. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  374. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  375. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  376. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  377. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  378. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  379. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  380. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  381. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  382. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  383. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  384. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  385. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  386. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  387. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  388. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  389. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  390. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  391. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  392. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  393. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  394. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  395. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  396. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  397. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  398. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  399. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  400. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  401. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  402. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  403. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  404. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  405. data/vendor/pygments-main/tests/examplefiles/type.lisp +1218 -0
  406. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  407. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  408. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  409. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  410. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  411. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  412. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  413. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  414. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  415. data/vendor/pygments-main/tests/old_run.py +138 -0
  416. data/vendor/pygments-main/tests/run.py +49 -0
  417. data/vendor/pygments-main/tests/support/tags +36 -0
  418. data/vendor/pygments-main/tests/support.py +15 -0
  419. data/vendor/pygments-main/tests/test_basic_api.py +295 -0
  420. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  421. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  422. data/vendor/pygments-main/tests/test_examplefiles.py +99 -0
  423. data/vendor/pygments-main/tests/test_html_formatter.py +178 -0
  424. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  425. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  426. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  427. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  428. data/vendor/pygments-main/tests/test_token.py +46 -0
  429. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  430. data/vendor/pygments-main/tests/test_util.py +135 -0
  431. data/vendor/simplejson/.gitignore +10 -0
  432. data/vendor/simplejson/.travis.yml +5 -0
  433. data/vendor/simplejson/CHANGES.txt +291 -0
  434. data/vendor/simplejson/LICENSE.txt +19 -0
  435. data/vendor/simplejson/MANIFEST.in +5 -0
  436. data/vendor/simplejson/README.rst +19 -0
  437. data/vendor/simplejson/conf.py +179 -0
  438. data/vendor/simplejson/index.rst +628 -0
  439. data/vendor/simplejson/scripts/make_docs.py +18 -0
  440. data/vendor/simplejson/setup.py +104 -0
  441. data/vendor/simplejson/simplejson/__init__.py +510 -0
  442. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  443. data/vendor/simplejson/simplejson/decoder.py +425 -0
  444. data/vendor/simplejson/simplejson/encoder.py +567 -0
  445. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  446. data/vendor/simplejson/simplejson/scanner.py +77 -0
  447. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  448. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  449. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  450. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  451. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  452. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  453. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  454. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  455. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  456. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  457. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  458. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  459. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  460. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  461. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  462. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  463. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  464. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  465. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  466. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  467. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  468. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  469. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  470. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  471. data/vendor/simplejson/simplejson/tool.py +39 -0
  472. metadata +566 -0
@@ -0,0 +1,99 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments tests with example files
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 pprint
12
+ import difflib
13
+ import cPickle as pickle
14
+
15
+ from pygments.lexers import get_lexer_for_filename, get_lexer_by_name
16
+ from pygments.token import Error
17
+ from pygments.util import ClassNotFound, b
18
+
19
+ STORE_OUTPUT = False
20
+
21
+ # generate methods
22
+ def test_example_files():
23
+ testdir = os.path.dirname(__file__)
24
+ outdir = os.path.join(testdir, 'examplefiles', 'output')
25
+ if STORE_OUTPUT and not os.path.isdir(outdir):
26
+ os.makedirs(outdir)
27
+ for fn in os.listdir(os.path.join(testdir, 'examplefiles')):
28
+ if fn.startswith('.') or fn.endswith('#'):
29
+ continue
30
+
31
+ absfn = os.path.join(testdir, 'examplefiles', fn)
32
+ if not os.path.isfile(absfn):
33
+ continue
34
+ outfn = os.path.join(outdir, fn)
35
+
36
+ try:
37
+ lx = get_lexer_for_filename(absfn)
38
+ except ClassNotFound:
39
+ if "_" not in fn:
40
+ raise AssertionError('file %r has no registered extension, '
41
+ 'nor is of the form <lexer>_filename '
42
+ 'for overriding, thus no lexer found.'
43
+ % fn)
44
+ try:
45
+ name, rest = fn.split("_", 1)
46
+ lx = get_lexer_by_name(name)
47
+ except ClassNotFound:
48
+ raise AssertionError('no lexer found for file %r' % fn)
49
+ yield check_lexer, lx, absfn, outfn
50
+
51
+ def check_lexer(lx, absfn, outfn):
52
+ fp = open(absfn, 'rb')
53
+ try:
54
+ text = fp.read()
55
+ finally:
56
+ fp.close()
57
+ text = text.replace(b('\r\n'), b('\n'))
58
+ text = text.strip(b('\n')) + b('\n')
59
+ try:
60
+ text = text.decode('utf-8')
61
+ if text.startswith(u'\ufeff'):
62
+ text = text[len(u'\ufeff'):]
63
+ except UnicodeError:
64
+ text = text.decode('latin1')
65
+ ntext = []
66
+ tokens = []
67
+ for type, val in lx.get_tokens(text):
68
+ ntext.append(val)
69
+ assert type != Error, \
70
+ 'lexer %s generated error token for %s: %r at position %d' % \
71
+ (lx, absfn, val, len(u''.join(ntext)))
72
+ tokens.append((type, val))
73
+ if u''.join(ntext) != text:
74
+ print '\n'.join(difflib.unified_diff(u''.join(ntext).splitlines(),
75
+ text.splitlines()))
76
+ raise AssertionError('round trip failed for ' + absfn)
77
+
78
+ # check output against previous run if enabled
79
+ if STORE_OUTPUT:
80
+ # no previous output -- store it
81
+ if not os.path.isfile(outfn):
82
+ fp = open(outfn, 'wb')
83
+ try:
84
+ pickle.dump(tokens, fp)
85
+ finally:
86
+ fp.close()
87
+ return
88
+ # otherwise load it and compare
89
+ fp = open(outfn, 'rb')
90
+ try:
91
+ stored_tokens = pickle.load(fp)
92
+ finally:
93
+ fp.close()
94
+ if stored_tokens != tokens:
95
+ f1 = pprint.pformat(stored_tokens)
96
+ f2 = pprint.pformat(tokens)
97
+ print '\n'.join(difflib.unified_diff(f1.splitlines(),
98
+ f2.splitlines()))
99
+ assert False, absfn
@@ -0,0 +1,178 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments HTML formatter 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 re
12
+ import unittest
13
+ import StringIO
14
+ import tempfile
15
+ from os.path import join, dirname, isfile
16
+
17
+ from pygments.lexers import PythonLexer
18
+ from pygments.formatters import HtmlFormatter, NullFormatter
19
+ from pygments.formatters.html import escape_html
20
+ from pygments.util import uni_open
21
+
22
+ import support
23
+
24
+ TESTFILE, TESTDIR = support.location(__file__)
25
+
26
+ fp = uni_open(TESTFILE, encoding='utf-8')
27
+ try:
28
+ tokensource = list(PythonLexer().get_tokens(fp.read()))
29
+ finally:
30
+ fp.close()
31
+
32
+
33
+ class HtmlFormatterTest(unittest.TestCase):
34
+ def test_correct_output(self):
35
+ hfmt = HtmlFormatter(nowrap=True)
36
+ houtfile = StringIO.StringIO()
37
+ hfmt.format(tokensource, houtfile)
38
+
39
+ nfmt = NullFormatter()
40
+ noutfile = StringIO.StringIO()
41
+ nfmt.format(tokensource, noutfile)
42
+
43
+ stripped_html = re.sub('<.*?>', '', houtfile.getvalue())
44
+ escaped_text = escape_html(noutfile.getvalue())
45
+ self.assertEqual(stripped_html, escaped_text)
46
+
47
+ def test_external_css(self):
48
+ # test correct behavior
49
+ # CSS should be in /tmp directory
50
+ fmt1 = HtmlFormatter(full=True, cssfile='fmt1.css', outencoding='utf-8')
51
+ # CSS should be in TESTDIR (TESTDIR is absolute)
52
+ fmt2 = HtmlFormatter(full=True, cssfile=join(TESTDIR, 'fmt2.css'),
53
+ outencoding='utf-8')
54
+ tfile = tempfile.NamedTemporaryFile(suffix='.html')
55
+ fmt1.format(tokensource, tfile)
56
+ try:
57
+ fmt2.format(tokensource, tfile)
58
+ self.assertTrue(isfile(join(TESTDIR, 'fmt2.css')))
59
+ except IOError:
60
+ # test directory not writable
61
+ pass
62
+ tfile.close()
63
+
64
+ self.assertTrue(isfile(join(dirname(tfile.name), 'fmt1.css')))
65
+ os.unlink(join(dirname(tfile.name), 'fmt1.css'))
66
+ try:
67
+ os.unlink(join(TESTDIR, 'fmt2.css'))
68
+ except OSError:
69
+ pass
70
+
71
+ def test_all_options(self):
72
+ for optdict in [dict(nowrap=True),
73
+ dict(linenos=True),
74
+ dict(linenos=True, full=True),
75
+ dict(linenos=True, full=True, noclasses=True)]:
76
+
77
+ outfile = StringIO.StringIO()
78
+ fmt = HtmlFormatter(**optdict)
79
+ fmt.format(tokensource, outfile)
80
+
81
+ def test_linenos(self):
82
+ optdict = dict(linenos=True)
83
+ outfile = StringIO.StringIO()
84
+ fmt = HtmlFormatter(**optdict)
85
+ fmt.format(tokensource, outfile)
86
+ html = outfile.getvalue()
87
+ self.assertTrue(re.search("<pre>\s+1\s+2\s+3", html))
88
+
89
+ def test_linenos_with_startnum(self):
90
+ optdict = dict(linenos=True, linenostart=5)
91
+ outfile = StringIO.StringIO()
92
+ fmt = HtmlFormatter(**optdict)
93
+ fmt.format(tokensource, outfile)
94
+ html = outfile.getvalue()
95
+ self.assertTrue(re.search("<pre>\s+5\s+6\s+7", html))
96
+
97
+ def test_lineanchors(self):
98
+ optdict = dict(lineanchors="foo")
99
+ outfile = StringIO.StringIO()
100
+ fmt = HtmlFormatter(**optdict)
101
+ fmt.format(tokensource, outfile)
102
+ html = outfile.getvalue()
103
+ self.assertTrue(re.search("<pre><a name=\"foo-1\">", html))
104
+
105
+ def test_lineanchors_with_startnum(self):
106
+ optdict = dict(lineanchors="foo", linenostart=5)
107
+ outfile = StringIO.StringIO()
108
+ fmt = HtmlFormatter(**optdict)
109
+ fmt.format(tokensource, outfile)
110
+ html = outfile.getvalue()
111
+ self.assertTrue(re.search("<pre><a name=\"foo-5\">", html))
112
+
113
+ def test_valid_output(self):
114
+ # test all available wrappers
115
+ fmt = HtmlFormatter(full=True, linenos=True, noclasses=True,
116
+ outencoding='utf-8')
117
+
118
+ handle, pathname = tempfile.mkstemp('.html')
119
+ tfile = os.fdopen(handle, 'w+b')
120
+ fmt.format(tokensource, tfile)
121
+ tfile.close()
122
+ catname = os.path.join(TESTDIR, 'dtds', 'HTML4.soc')
123
+ try:
124
+ import subprocess
125
+ po = subprocess.Popen(['nsgmls', '-s', '-c', catname, pathname],
126
+ stdout=subprocess.PIPE)
127
+ ret = po.wait()
128
+ output = po.stdout.read()
129
+ po.stdout.close()
130
+ except OSError:
131
+ # nsgmls not available
132
+ pass
133
+ else:
134
+ if ret:
135
+ print output
136
+ self.assertFalse(ret, 'nsgmls run reported errors')
137
+
138
+ os.unlink(pathname)
139
+
140
+ def test_get_style_defs(self):
141
+ fmt = HtmlFormatter()
142
+ sd = fmt.get_style_defs()
143
+ self.assertTrue(sd.startswith('.'))
144
+
145
+ fmt = HtmlFormatter(cssclass='foo')
146
+ sd = fmt.get_style_defs()
147
+ self.assertTrue(sd.startswith('.foo'))
148
+ sd = fmt.get_style_defs('.bar')
149
+ self.assertTrue(sd.startswith('.bar'))
150
+ sd = fmt.get_style_defs(['.bar', '.baz'])
151
+ fl = sd.splitlines()[0]
152
+ self.assertTrue('.bar' in fl and '.baz' in fl)
153
+
154
+ def test_unicode_options(self):
155
+ fmt = HtmlFormatter(title=u'Föö',
156
+ cssclass=u'bär',
157
+ cssstyles=u'div:before { content: \'bäz\' }',
158
+ encoding='utf-8')
159
+ handle, pathname = tempfile.mkstemp('.html')
160
+ tfile = os.fdopen(handle, 'w+b')
161
+ fmt.format(tokensource, tfile)
162
+ tfile.close()
163
+
164
+ def test_ctags(self):
165
+ try:
166
+ import ctags
167
+ except ImportError:
168
+ # we can't check without the ctags module, but at least check the exception
169
+ self.assertRaises(RuntimeError, HtmlFormatter, tagsfile='support/tags')
170
+ else:
171
+ # this tagfile says that test_ctags() is on line 165, even if it isn't
172
+ # anymore in the actual source
173
+ fmt = HtmlFormatter(tagsfile='support/tags', lineanchors='L',
174
+ tagurlformat='%(fname)s%(fext)s')
175
+ outfile = StringIO.StringIO()
176
+ fmt.format(tokensource, outfile)
177
+ self.assertTrue('<a href="test_html_formatter.py#L-165">test_ctags</a>'
178
+ in outfile.getvalue())
@@ -0,0 +1,55 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments LaTeX formatter 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 unittest
12
+ import tempfile
13
+
14
+ from pygments.formatters import LatexFormatter
15
+ from pygments.lexers import PythonLexer
16
+
17
+ import support
18
+
19
+ TESTFILE, TESTDIR = support.location(__file__)
20
+
21
+
22
+ class LatexFormatterTest(unittest.TestCase):
23
+
24
+ def test_valid_output(self):
25
+ fp = open(TESTFILE)
26
+ try:
27
+ tokensource = list(PythonLexer().get_tokens(fp.read()))
28
+ finally:
29
+ fp.close()
30
+ fmt = LatexFormatter(full=True, encoding='latin1')
31
+
32
+ handle, pathname = tempfile.mkstemp('.tex')
33
+ # place all output files in /tmp too
34
+ old_wd = os.getcwd()
35
+ os.chdir(os.path.dirname(pathname))
36
+ tfile = os.fdopen(handle, 'wb')
37
+ fmt.format(tokensource, tfile)
38
+ tfile.close()
39
+ try:
40
+ import subprocess
41
+ po = subprocess.Popen(['latex', '-interaction=nonstopmode',
42
+ pathname], stdout=subprocess.PIPE)
43
+ ret = po.wait()
44
+ output = po.stdout.read()
45
+ po.stdout.close()
46
+ except OSError:
47
+ # latex not available
48
+ pass
49
+ else:
50
+ if ret:
51
+ print output
52
+ self.assertFalse(ret, 'latex run reported errors')
53
+
54
+ os.unlink(pathname)
55
+ os.chdir(old_wd)
@@ -0,0 +1,68 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Tests for other lexers
4
+ ~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
7
+ :license: BSD, see LICENSE for details.
8
+ """
9
+
10
+ import glob
11
+ import os
12
+ import unittest
13
+
14
+ from pygments.lexers import guess_lexer
15
+ from pygments.lexers.other import RexxLexer
16
+
17
+
18
+ def _exampleFilePath(filename):
19
+ return os.path.join(os.path.dirname(__file__), 'examplefiles', filename)
20
+
21
+
22
+ class AnalyseTextTest(unittest.TestCase):
23
+ def _testCanRecognizeAndGuessExampleFiles(self, lexer):
24
+ assert lexer is not None
25
+
26
+ for pattern in lexer.filenames:
27
+ exampleFilesPattern = _exampleFilePath(pattern)
28
+ for exampleFilePath in glob.glob(exampleFilesPattern):
29
+ exampleFile = open(exampleFilePath, 'rb')
30
+ try:
31
+ text = exampleFile.read()
32
+ probability = lexer.analyse_text(text)
33
+ self.assertTrue(probability > 0,
34
+ '%s must recognize %r' % (
35
+ lexer.name, exampleFilePath))
36
+ guessedLexer = guess_lexer(text)
37
+ self.assertEqual(guessedLexer.name, lexer.name)
38
+ finally:
39
+ exampleFile.close()
40
+
41
+ def testCanRecognizeAndGuessExampleFiles(self):
42
+ self._testCanRecognizeAndGuessExampleFiles(RexxLexer)
43
+
44
+
45
+ class RexxLexerTest(unittest.TestCase):
46
+ def testCanGuessFromText(self):
47
+ self.assertAlmostEqual(0.01,
48
+ RexxLexer.analyse_text('/* */'))
49
+ self.assertAlmostEqual(1.0,
50
+ RexxLexer.analyse_text('''/* Rexx */
51
+ say "hello world"'''))
52
+ self.assertLess(0.5,
53
+ RexxLexer.analyse_text('/* */\n'
54
+ 'hello:pRoceduRe\n'
55
+ ' say "hello world"'))
56
+ self.assertLess(0.2,
57
+ RexxLexer.analyse_text('''/* */
58
+ if 1 > 0 then do
59
+ say "ok"
60
+ end
61
+ else do
62
+ say "huh?"
63
+ end'''))
64
+ self.assertLess(0.2,
65
+ RexxLexer.analyse_text('''/* */
66
+ greeting = "hello world!"
67
+ parse value greeting "hello" name "!"
68
+ say name'''))
@@ -0,0 +1,137 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments regex lexer 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 time
11
+ import unittest
12
+
13
+ from pygments.token import String
14
+ from pygments.lexers.agile import PerlLexer
15
+
16
+
17
+ class RunawayRegexTest(unittest.TestCase):
18
+ # A previous version of the Perl lexer would spend a great deal of
19
+ # time backtracking when given particular strings. These tests show that
20
+ # the runaway backtracking doesn't happen any more (at least for the given
21
+ # cases).
22
+
23
+ lexer = PerlLexer()
24
+
25
+ ### Test helpers.
26
+
27
+ def assert_single_token(self, s, token):
28
+ """Show that a given string generates only one token."""
29
+ tokens = list(self.lexer.get_tokens_unprocessed(s))
30
+ self.assertEqual(len(tokens), 1, tokens)
31
+ self.assertEqual(s, tokens[0][2])
32
+ self.assertEqual(token, tokens[0][1])
33
+
34
+ def assert_tokens(self, strings, expected_tokens):
35
+ """Show that a given string generates the expected tokens."""
36
+ tokens = list(self.lexer.get_tokens_unprocessed(''.join(strings)))
37
+ self.assertEqual(len(tokens), len(expected_tokens), tokens)
38
+ for index, s in enumerate(strings):
39
+ self.assertEqual(s, tokens[index][2])
40
+ self.assertEqual(expected_tokens[index], tokens[index][1])
41
+
42
+ def assert_fast_tokenization(self, s):
43
+ """Show that a given string is tokenized quickly."""
44
+ start = time.time()
45
+ tokens = list(self.lexer.get_tokens_unprocessed(s))
46
+ end = time.time()
47
+ # Isn't 10 seconds kind of a long time? Yes, but we don't want false
48
+ # positives when the tests are starved for CPU time.
49
+ if end-start > 10:
50
+ self.fail('tokenization took too long')
51
+ return tokens
52
+
53
+ ### Strings.
54
+
55
+ def test_single_quote_strings(self):
56
+ self.assert_single_token(r"'foo\tbar\\\'baz'", String)
57
+ self.assert_fast_tokenization("'" + '\\'*999)
58
+
59
+ def test_double_quote_strings(self):
60
+ self.assert_single_token(r'"foo\tbar\\\"baz"', String)
61
+ self.assert_fast_tokenization('"' + '\\'*999)
62
+
63
+ def test_backtick_strings(self):
64
+ self.assert_single_token(r'`foo\tbar\\\`baz`', String.Backtick)
65
+ self.assert_fast_tokenization('`' + '\\'*999)
66
+
67
+ ### Regex matches with various delimiters.
68
+
69
+ def test_match(self):
70
+ self.assert_single_token(r'/aa\tbb/', String.Regex)
71
+ self.assert_fast_tokenization('/' + '\\'*999)
72
+
73
+ def test_match_with_slash(self):
74
+ self.assert_tokens(['m', '/\n\\t\\\\/'], [String.Regex, String.Regex])
75
+ self.assert_fast_tokenization('m/xxx\n' + '\\'*999)
76
+
77
+ def test_match_with_bang(self):
78
+ self.assert_tokens(['m', r'!aa\t\!bb!'], [String.Regex, String.Regex])
79
+ self.assert_fast_tokenization('m!' + '\\'*999)
80
+
81
+ def test_match_with_brace(self):
82
+ self.assert_tokens(['m', r'{aa\t\}bb}'], [String.Regex, String.Regex])
83
+ self.assert_fast_tokenization('m{' + '\\'*999)
84
+
85
+ def test_match_with_angle_brackets(self):
86
+ self.assert_tokens(['m', r'<aa\t\>bb>'], [String.Regex, String.Regex])
87
+ self.assert_fast_tokenization('m<' + '\\'*999)
88
+
89
+ def test_match_with_parenthesis(self):
90
+ self.assert_tokens(['m', r'(aa\t\)bb)'], [String.Regex, String.Regex])
91
+ self.assert_fast_tokenization('m(' + '\\'*999)
92
+
93
+ def test_match_with_at_sign(self):
94
+ self.assert_tokens(['m', r'@aa\t\@bb@'], [String.Regex, String.Regex])
95
+ self.assert_fast_tokenization('m@' + '\\'*999)
96
+
97
+ def test_match_with_percent_sign(self):
98
+ self.assert_tokens(['m', r'%aa\t\%bb%'], [String.Regex, String.Regex])
99
+ self.assert_fast_tokenization('m%' + '\\'*999)
100
+
101
+ def test_match_with_dollar_sign(self):
102
+ self.assert_tokens(['m', r'$aa\t\$bb$'], [String.Regex, String.Regex])
103
+ self.assert_fast_tokenization('m$' + '\\'*999)
104
+
105
+ ### Regex substitutions with various delimeters.
106
+
107
+ def test_substitution_with_slash(self):
108
+ self.assert_single_token('s/aaa/bbb/g', String.Regex)
109
+ self.assert_fast_tokenization('s/foo/' + '\\'*999)
110
+
111
+ def test_substitution_with_at_sign(self):
112
+ self.assert_single_token(r's@aaa@bbb@g', String.Regex)
113
+ self.assert_fast_tokenization('s@foo@' + '\\'*999)
114
+
115
+ def test_substitution_with_percent_sign(self):
116
+ self.assert_single_token(r's%aaa%bbb%g', String.Regex)
117
+ self.assert_fast_tokenization('s%foo%' + '\\'*999)
118
+
119
+ def test_substitution_with_brace(self):
120
+ self.assert_single_token(r's{aaa}', String.Regex)
121
+ self.assert_fast_tokenization('s{' + '\\'*999)
122
+
123
+ def test_substitution_with_angle_bracket(self):
124
+ self.assert_single_token(r's<aaa>', String.Regex)
125
+ self.assert_fast_tokenization('s<' + '\\'*999)
126
+
127
+ def test_substitution_with_angle_bracket(self):
128
+ self.assert_single_token(r's<aaa>', String.Regex)
129
+ self.assert_fast_tokenization('s<' + '\\'*999)
130
+
131
+ def test_substitution_with_square_bracket(self):
132
+ self.assert_single_token(r's[aaa]', String.Regex)
133
+ self.assert_fast_tokenization('s[' + '\\'*999)
134
+
135
+ def test_substitution_with_parenthesis(self):
136
+ self.assert_single_token(r's(aaa)', String.Regex)
137
+ self.assert_fast_tokenization('s(' + '\\'*999)
@@ -0,0 +1,47 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments regex lexer 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 unittest
11
+
12
+ from pygments.token import Text
13
+ from pygments.lexer import RegexLexer
14
+ from pygments.lexer import bygroups
15
+
16
+
17
+ class TestLexer(RegexLexer):
18
+ """Test tuple state transitions including #pop."""
19
+ tokens = {
20
+ 'root': [
21
+ ('a', Text.Root, 'rag'),
22
+ ('e', Text.Root),
23
+ ],
24
+ 'beer': [
25
+ ('d', Text.Beer, ('#pop', '#pop')),
26
+ ],
27
+ 'rag': [
28
+ ('b', Text.Rag, '#push'),
29
+ ('c', Text.Rag, ('#pop', 'beer')),
30
+ ],
31
+ }
32
+
33
+
34
+ class TupleTransTest(unittest.TestCase):
35
+ def test(self):
36
+ lx = TestLexer()
37
+ toks = list(lx.get_tokens_unprocessed('abcde'))
38
+ self.assertEqual(toks,
39
+ [(0, Text.Root, 'a'), (1, Text.Rag, 'b'), (2, Text.Rag, 'c'),
40
+ (3, Text.Beer, 'd'), (4, Text.Root, 'e')])
41
+
42
+ def test_multiline(self):
43
+ lx = TestLexer()
44
+ toks = list(lx.get_tokens_unprocessed('a\ne'))
45
+ self.assertEqual(toks,
46
+ [(0, Text.Root, 'a'), (1, Text, u'\n'),
47
+ (2, Text.Root, 'e')])
@@ -0,0 +1,46 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Test suite for the token module
4
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
7
+ :license: BSD, see LICENSE for details.
8
+ """
9
+
10
+ import unittest
11
+
12
+ from pygments import token
13
+
14
+
15
+ class TokenTest(unittest.TestCase):
16
+
17
+ def test_tokentype(self):
18
+ e = self.assertEqual
19
+
20
+ t = token.String
21
+
22
+ e(t.split(), [token.Token, token.Literal, token.String])
23
+
24
+ e(t.__class__, token._TokenType)
25
+
26
+ def test_functions(self):
27
+ self.assertTrue(token.is_token_subtype(token.String, token.String))
28
+ self.assertTrue(token.is_token_subtype(token.String, token.Literal))
29
+ self.assertFalse(token.is_token_subtype(token.Literal, token.String))
30
+
31
+ self.assertTrue(token.string_to_tokentype(token.String) is token.String)
32
+ self.assertTrue(token.string_to_tokentype('') is token.Token)
33
+ self.assertTrue(token.string_to_tokentype('String') is token.String)
34
+
35
+ def test_sanity_check(self):
36
+ stp = token.STANDARD_TYPES.copy()
37
+ stp[token.Token] = '---' # Token and Text do conflict, that is okay
38
+ t = {}
39
+ for k, v in stp.iteritems():
40
+ t.setdefault(v, []).append(k)
41
+ if len(t) == len(stp):
42
+ return # Okay
43
+
44
+ for k, v in t.iteritems():
45
+ if len(v) > 1:
46
+ self.fail("%r has more than one key: %r" % (k, v))
@@ -0,0 +1,40 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Pygments tests for using()
4
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
7
+ :license: BSD, see LICENSE for details.
8
+ """
9
+
10
+ import unittest
11
+
12
+ from pygments.lexer import using, bygroups, this, RegexLexer
13
+ from pygments.token import String, Text, Keyword
14
+
15
+ class TestLexer(RegexLexer):
16
+ tokens = {
17
+ 'root': [
18
+ (r'#.*',
19
+ using(this, state='invalid')),
20
+ (r'(")(.+?)(")',
21
+ bygroups(String, using(this, state='string'), String)),
22
+ (r'[^"]+', Text),
23
+ ],
24
+ 'string': [
25
+ (r'.+', Keyword),
26
+ ],
27
+ }
28
+
29
+
30
+ class UsingStateTest(unittest.TestCase):
31
+ def test_basic(self):
32
+ expected = [(Text, 'a'), (String, '"'), (Keyword, 'bcd'),
33
+ (String, '"'), (Text, 'e\n')]
34
+ t = list(TestLexer().get_tokens('a"bcd"e'))
35
+ self.assertEqual(t, expected)
36
+
37
+ def test_error(self):
38
+ def gen():
39
+ return list(TestLexer().get_tokens('#a'))
40
+ self.assertRaises(KeyError, gen)