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,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)
@@ -0,0 +1,135 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Test suite for the util 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 re
11
+ import unittest
12
+
13
+ from pygments import util
14
+
15
+
16
+ class FakeLexer(object):
17
+ def analyse(text):
18
+ return float(text)
19
+ analyse = util.make_analysator(analyse)
20
+
21
+
22
+ class UtilTest(unittest.TestCase):
23
+
24
+ def test_getoptions(self):
25
+ raises = self.assertRaises
26
+ equals = self.assertEqual
27
+
28
+ equals(util.get_bool_opt({}, 'a', True), True)
29
+ equals(util.get_bool_opt({}, 'a', 1), True)
30
+ equals(util.get_bool_opt({}, 'a', 'true'), True)
31
+ equals(util.get_bool_opt({}, 'a', 'no'), False)
32
+ raises(util.OptionError, util.get_bool_opt, {}, 'a', [])
33
+ raises(util.OptionError, util.get_bool_opt, {}, 'a', 'foo')
34
+
35
+ equals(util.get_int_opt({}, 'a', 1), 1)
36
+ raises(util.OptionError, util.get_int_opt, {}, 'a', [])
37
+ raises(util.OptionError, util.get_int_opt, {}, 'a', 'bar')
38
+
39
+ equals(util.get_list_opt({}, 'a', [1]), [1])
40
+ equals(util.get_list_opt({}, 'a', '1 2'), ['1', '2'])
41
+ raises(util.OptionError, util.get_list_opt, {}, 'a', 1)
42
+
43
+
44
+ def test_docstring_headline(self):
45
+ def f1():
46
+ """
47
+ docstring headline
48
+
49
+ other text
50
+ """
51
+ def f2():
52
+ """
53
+ docstring
54
+ headline
55
+
56
+ other text
57
+ """
58
+
59
+ self.assertEqual(util.docstring_headline(f1), "docstring headline")
60
+ self.assertEqual(util.docstring_headline(f2), "docstring headline")
61
+
62
+ def test_analysator_returns_float(self):
63
+ # If an analysator wrapped by make_analysator returns a floating point
64
+ # number, then that number will be returned by the wrapper.
65
+ self.assertEqual(FakeLexer.analyse('0.5'), 0.5)
66
+
67
+ def test_analysator_returns_boolean(self):
68
+ # If an analysator wrapped by make_analysator returns a boolean value,
69
+ # then the wrapper will return 1.0 if the boolean was True or 0.0 if
70
+ # it was False.
71
+ self.assertEqual(FakeLexer.analyse(True), 1.0)
72
+ self.assertEqual(FakeLexer.analyse(False), 0.0)
73
+
74
+ def test_analysator_raises_exception(self):
75
+ # If an analysator wrapped by make_analysator raises an exception,
76
+ # then the wrapper will return 0.0.
77
+ class ErrorLexer(object):
78
+ def analyse(text):
79
+ raise RuntimeError('something bad happened')
80
+ analyse = util.make_analysator(analyse)
81
+ self.assertEqual(ErrorLexer.analyse(''), 0.0)
82
+
83
+ def test_analysator_value_error(self):
84
+ # When converting the analysator's return value to a float a
85
+ # ValueError may occur. If that happens 0.0 is returned instead.
86
+ self.assertEqual(FakeLexer.analyse('bad input'), 0.0)
87
+
88
+ def test_analysator_type_error(self):
89
+ # When converting the analysator's return value to a float a
90
+ # TypeError may occur. If that happens 0.0 is returned instead.
91
+ self.assertEqual(FakeLexer.analyse(None), 0.0)
92
+
93
+ def test_shebang_matches(self):
94
+ self.assertTrue(util.shebang_matches('#!/usr/bin/env python', r'python(2\.\d)?'))
95
+ self.assertTrue(util.shebang_matches('#!/usr/bin/python2.4', r'python(2\.\d)?'))
96
+ self.assertTrue(util.shebang_matches('#!/usr/bin/startsomethingwith python',
97
+ r'python(2\.\d)?'))
98
+ self.assertTrue(util.shebang_matches('#!C:\\Python2.4\\Python.exe',
99
+ r'python(2\.\d)?'))
100
+
101
+ self.assertFalse(util.shebang_matches('#!/usr/bin/python-ruby',
102
+ r'python(2\.\d)?'))
103
+ self.assertFalse(util.shebang_matches('#!/usr/bin/python/ruby',
104
+ r'python(2\.\d)?'))
105
+ self.assertFalse(util.shebang_matches('#!', r'python'))
106
+
107
+ def test_doctype_matches(self):
108
+ self.assertTrue(util.doctype_matches(
109
+ '<!DOCTYPE html PUBLIC "a"> <html>', 'html.*'))
110
+ self.assertFalse(util.doctype_matches(
111
+ '<?xml ?> <DOCTYPE html PUBLIC "a"> <html>', 'html.*'))
112
+ self.assertTrue(util.html_doctype_matches(
113
+ '<?xml ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">'))
114
+
115
+ def test_xml(self):
116
+ self.assertTrue(util.looks_like_xml(
117
+ '<?xml ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">'))
118
+ self.assertTrue(util.looks_like_xml('<html xmlns>abc</html>'))
119
+ self.assertFalse(util.looks_like_xml('<html>'))
120
+
121
+ def test_unirange(self):
122
+ first_non_bmp = u'\U00010000'
123
+ r = re.compile(util.unirange(0x10000, 0x20000))
124
+ m = r.match(first_non_bmp)
125
+ self.assertTrue(m)
126
+ self.assertEquals(m.end(), len(first_non_bmp))
127
+ self.assertFalse(r.match(u'\uffff'))
128
+ self.assertFalse(r.match(u'xxx'))
129
+ # Tests that end is inclusive
130
+ r = re.compile(util.unirange(0x10000, 0x10000) + '+')
131
+ # Tests that the plus works for the entire unicode point, if narrow
132
+ # build
133
+ m = r.match(first_non_bmp * 2)
134
+ self.assertTrue(m)
135
+ self.assertEquals(m.end(), len(first_non_bmp) * 2)