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,505 @@
1
+ <?php
2
+
3
+ $test = function($a) { $lambda = 1; }
4
+
5
+ /**
6
+ * Zip class file
7
+ *
8
+ * @package fnord.bb
9
+ * @subpackage archive
10
+ */
11
+
12
+ // Unlock?
13
+ if(!defined('UNLOCK') || !UNLOCK)
14
+ die();
15
+
16
+ // Load the parent archive class
17
+ require_once(ROOT_PATH.'/classes/archive.class.php');
18
+
19
+ class Zip\Zipp {
20
+
21
+ }
22
+
23
+ /**
24
+ * Zip class
25
+ *
26
+ * @author Manni <manni@fnord.name>
27
+ * @copyright Copyright (c) 2006, Manni
28
+ * @version 1.0
29
+ * @link http://www.pkware.com/business_and_developers/developer/popups/appnote.txt
30
+ * @link http://mannithedark.is-a-geek.net/
31
+ * @since 1.0
32
+ * @package fnord.bb
33
+ * @subpackage archive
34
+ */
35
+ class Zip extends Archive {
36
+ /**
37
+ * Outputs the zip file
38
+ *
39
+ * This function creates the zip file with the dirs and files given.
40
+ * If the optional parameter $file is given, the zip file is will be
41
+ * saved at that location. Otherwise the function returns the zip file's content.
42
+ *
43
+ * @access public
44
+ *
45
+ * @link http://www.pkware.com/business_and_developers/developer/popups/appnote.txt
46
+ * @param string $filename The path where the zip file will be saved
47
+ *
48
+ * @return bool|string Returns either true if the fil is sucessfully created or the content of the zip file
49
+ */
50
+ function out($filename = false) {
51
+ // Empty output
52
+ $file_data = array(); // Data of the file part
53
+ $cd_data = array(); // Data of the central directory
54
+
55
+ // Sort dirs and files by path length
56
+ uksort($this->dirs, 'sort_by_length');
57
+ uksort($this->files, 'sort_by_length');
58
+
59
+ // Handle dirs
60
+ foreach($this->dirs as $dir) {
61
+ $dir .= '/';
62
+ // File part
63
+
64
+ // Reset dir data
65
+ $dir_data = '';
66
+
67
+ // Local file header
68
+ $dir_data .= "\x50\x4b\x03\x04"; // Local file header signature
69
+ $dir_data .= pack("v", 10); // Version needed to extract
70
+ $dir_data .= pack("v", 0); // General purpose bit flag
71
+ $dir_data .= pack("v", 0); // Compression method
72
+ $dir_data .= pack("v", 0); // Last mod file time
73
+ $dir_data .= pack("v", 0); // Last mod file date
74
+ $dir_data .= pack("V", 0); // crc-32
75
+ $dir_data .= pack("V", 0); // Compressed size
76
+ $dir_data .= pack("V", 0); // Uncompressed size
77
+ $dir_data .= pack("v", strlen($dir)); // File name length
78
+ $dir_data .= pack("v", 0); // Extra field length
79
+
80
+ $dir_data .= $dir; // File name
81
+ $dir_data .= ''; // Extra field (is empty)
82
+
83
+ // File data
84
+ $dir_data .= ''; // Dirs have no file data
85
+
86
+ // Data descriptor
87
+ $dir_data .= pack("V", 0); // crc-32
88
+ $dir_data .= pack("V", 0); // Compressed size
89
+ $dir_data .= pack("V", 0); // Uncompressed size
90
+
91
+ // Save current offset
92
+ $offset = strlen(implode('', $file_data));
93
+
94
+ // Append dir data to the file part
95
+ $file_data[] = $dir_data;
96
+
97
+ // Central directory
98
+
99
+ // Reset dir data
100
+ $dir_data = '';
101
+
102
+ // File header
103
+ $dir_data .= "\x50\x4b\x01\x02"; // Local file header signature
104
+ $dir_data .= pack("v", 0); // Version made by
105
+ $dir_data .= pack("v", 10); // Version needed to extract
106
+ $dir_data .= pack("v", 0); // General purpose bit flag
107
+ $dir_data .= pack("v", 0); // Compression method
108
+ $dir_data .= pack("v", 0); // Last mod file time
109
+ $dir_data .= pack("v", 0); // Last mod file date
110
+ $dir_data .= pack("V", 0); // crc-32
111
+ $dir_data .= pack("V", 0); // Compressed size
112
+ $dir_data .= pack("V", 0); // Uncompressed size
113
+ $dir_data .= pack("v", strlen($dir)); // File name length
114
+ $dir_data .= pack("v", 0); // Extra field length
115
+ $dir_data .= pack("v", 0); // File comment length
116
+ $dir_data .= pack("v", 0); // Disk number start
117
+ $dir_data .= pack("v", 0); // Internal file attributes
118
+ $dir_data .= pack("V", 16); // External file attributes
119
+ $dir_data .= pack("V", $offset); // Relative offset of local header
120
+
121
+ $dir_data .= $dir; // File name
122
+ $dir_data .= ''; // Extra field (is empty)
123
+ $dir_data .= ''; // File comment (is empty)
124
+
125
+ /*
126
+ // Data descriptor
127
+ $dir_data .= pack("V", 0); // crc-32
128
+ $dir_data .= pack("V", 0); // Compressed size
129
+ $dir_data .= pack("V", 0); // Uncompressed size
130
+ */
131
+
132
+ // Append dir data to the central directory data
133
+ $cd_data[] = $dir_data;
134
+ }
135
+
136
+ // Handle files
137
+ foreach($this->files as $name => $file) {
138
+ // Get values
139
+ $content = $file[0];
140
+
141
+ // File part
142
+
143
+ // Reset file data
144
+ $fd = '';
145
+
146
+ // Detect possible compressions
147
+ // Use deflate
148
+ if(function_exists('gzdeflate')) {
149
+ $method = 8;
150
+
151
+ // Compress file content
152
+ $compressed_data = gzdeflate($content);
153
+
154
+ // Use bzip2
155
+ } elseif(function_exists('bzcompress')) {
156
+ $method = 12;
157
+
158
+ // Compress file content
159
+ $compressed_data = bzcompress($content);
160
+
161
+ // No compression
162
+ } else {
163
+ $method = 0;
164
+
165
+ // Do not compress the content :P
166
+ $compressed_data = $content;
167
+ }
168
+
169
+ // Local file header
170
+ $fd .= "\x50\x4b\x03\x04"; // Local file header signature
171
+ $fd .= pack("v", 20); // Version needed to extract
172
+ $fd .= pack("v", 0); // General purpose bit flag
173
+ $fd .= pack("v", $method); // Compression method
174
+ $fd .= pack("v", 0); // Last mod file time
175
+ $fd .= pack("v", 0); // Last mod file date
176
+ $fd .= pack("V", crc32($content)); // crc-32
177
+ $fd .= pack("V", strlen($compressed_data)); // Compressed size
178
+ $fd .= pack("V", strlen($content)); // Uncompressed size
179
+ $fd .= pack("v", strlen($name)); // File name length
180
+ $fd .= pack("v", 0); // Extra field length
181
+
182
+ $fd .= $name; // File name
183
+ $fd .= ''; // Extra field (is empty)
184
+
185
+ // File data
186
+ $fd .= $compressed_data;
187
+
188
+ // Data descriptor
189
+ $fd .= pack("V", crc32($content)); // crc-32
190
+ $fd .= pack("V", strlen($compressed_data)); // Compressed size
191
+ $fd .= pack("V", strlen($content)); // Uncompressed size
192
+
193
+ // Save current offset
194
+ $offset = strlen(implode('', $file_data));
195
+
196
+ // Append file data to the file part
197
+ $file_data[] = $fd;
198
+
199
+ // Central directory
200
+
201
+ // Reset file data
202
+ $fd = '';
203
+
204
+ // File header
205
+ $fd .= "\x50\x4b\x01\x02"; // Local file header signature
206
+ $fd .= pack("v", 0); // Version made by
207
+ $fd .= pack("v", 20); // Version needed to extract
208
+ $fd .= pack("v", 0); // General purpose bit flag
209
+ $fd .= pack("v", $method); // Compression method
210
+ $fd .= pack("v", 0); // Last mod file time
211
+ $fd .= pack("v", 0); // Last mod file date
212
+ $fd .= pack("V", crc32($content)); // crc-32
213
+ $fd .= pack("V", strlen($compressed_data)); // Compressed size
214
+ $fd .= pack("V", strlen($content)); // Uncompressed size
215
+ $fd .= pack("v", strlen($name)); // File name length
216
+ $fd .= pack("v", 0); // Extra field length
217
+ $fd .= pack("v", 0); // File comment length
218
+ $fd .= pack("v", 0); // Disk number start
219
+ $fd .= pack("v", 0); // Internal file attributes
220
+ $fd .= pack("V", 32); // External file attributes
221
+ $fd .= pack("V", $offset); // Relative offset of local header
222
+
223
+ $fd .= $name; // File name
224
+ $fd .= ''; // Extra field (is empty)
225
+ $fd .= ''; // File comment (is empty)
226
+
227
+ /*
228
+ // Data descriptor
229
+ $fd .= pack("V", crc32($content)); // crc-32
230
+ $fd .= pack("V", strlen($compressed_data)); // Compressed size
231
+ $fd .= pack("V", strlen($content)); // Uncompressed size
232
+ */
233
+
234
+ // Append file data to the central directory data
235
+ $cd_data[] = $fd;
236
+ }
237
+
238
+ // Digital signature
239
+ $digital_signature = '';
240
+ $digital_signature .= "\x50\x4b\x05\x05"; // Header signature
241
+ $digital_signature .= pack("v", 0); // Size of data
242
+ $digital_signature .= ''; // Signature data (is empty)
243
+
244
+ $tmp_file_data = implode('', $file_data); // File data
245
+ $tmp_cd_data = implode('', $cd_data). // Central directory
246
+ $digital_signature; // Digital signature
247
+
248
+ // End of central directory
249
+ $eof_cd = '';
250
+ $eof_cd .= "\x50\x4b\x05\x06"; // End of central dir signature
251
+ $eof_cd .= pack("v", 0); // Number of this disk
252
+ $eof_cd .= pack("v", 0); // Number of the disk with the start of the central directory
253
+ $eof_cd .= pack("v", count($cd_data)); // Total number of entries in the central directory on this disk
254
+ $eof_cd .= pack("v", count($cd_data)); // Total number of entries in the central directory
255
+ $eof_cd .= pack("V", strlen($tmp_cd_data)); // Size of the central directory
256
+ $eof_cd .= pack("V", strlen($tmp_file_data)); // Offset of start of central directory with respect to the starting disk number
257
+ $eof_cd .= pack("v", 0); // .ZIP file comment length
258
+ $eof_cd .= ''; // .ZIP file comment (is empty)
259
+
260
+ // Content of the zip file
261
+ $data = $tmp_file_data.
262
+ // $extra_data_record.
263
+ $tmp_cd_data.
264
+ $eof_cd;
265
+
266
+ // Return content?
267
+ if(!$filename)
268
+ return $data;
269
+
270
+ // Write to file
271
+ return file_put_contents($filename, $data);
272
+ }
273
+
274
+ /**
275
+ * Load a zip file
276
+ *
277
+ * This function loads the files and dirs from a zip file from the harddrive.
278
+ *
279
+ * @access public
280
+ *
281
+ * @param string $file The path to the zip file
282
+ * @param bool $reset Reset the files and dirs before adding the zip file's content?
283
+ *
284
+ * @return bool Returns true if the file was loaded sucessfully
285
+ */
286
+ function load_file($file, $reset = true) {
287
+ // Check whether the file exists
288
+ if(!file_exists($file))
289
+ return false;
290
+
291
+ // Load the files content
292
+ $content = @file_get_contents($file);
293
+
294
+ // Return false if the file cannot be opened
295
+ if(!$content)
296
+ return false;
297
+
298
+ // Read the zip
299
+ return $this->load_string($content, $reset);
300
+ }
301
+
302
+ /**
303
+ * Load a zip string
304
+ *
305
+ * This function loads the files and dirs from a string
306
+ *
307
+ * @access public
308
+ *
309
+ * @param string $string The string the zip is generated from
310
+ * @param bool $reset Reset the files and dirs before adding the zip file's content?
311
+ *
312
+ * @return bool Returns true if the string was loaded sucessfully
313
+ */
314
+ function load_string($string, $reset = true) {
315
+ // Reset the zip?
316
+ if($reset) {
317
+ $this->dirs = array();
318
+ $this->files = array();
319
+ }
320
+
321
+ // Get the starting position of the end of central directory record
322
+ $start = strpos($string, "\x50\x4b\x05\x06");
323
+
324
+ // Error
325
+ if($start === false)
326
+ die('Could not find the end of central directory record');
327
+
328
+ // Get the ecdr
329
+ $eof_cd = substr($string, $start+4, 18);
330
+
331
+ // Unpack the ecdr infos
332
+ $eof_cd = unpack('vdisc1/'.
333
+ 'vdisc2/'.
334
+ 'ventries1/'.
335
+ 'ventries2/'.
336
+ 'Vsize/'.
337
+ 'Voffset/'.
338
+ 'vcomment_lenght', $eof_cd);
339
+
340
+ // Do not allow multi disc zips
341
+ if($eof_cd['disc1'] != 0)
342
+ die('multi disk stuff is not yet implemented :/');
343
+
344
+ // Save the interesting values
345
+ $cd_entries = $eof_cd['entries1'];
346
+ $cd_size = $eof_cd['size'];
347
+ $cd_offset = $eof_cd['offset'];
348
+
349
+ // Get the central directory record
350
+ $cdr = substr($string, $cd_offset, $cd_size);
351
+
352
+ // Reset the position and the list of the entries
353
+ $pos = 0;
354
+ $entries = array();
355
+
356
+ // Handle cdr
357
+ while($pos < strlen($cdr)) {
358
+ // Check header signature
359
+ // Digital signature
360
+ if(substr($cdr, $pos, 4) == "\x50\x4b\x05\x05") {
361
+ // Get digital signature size
362
+ $tmp_info = unpack('vsize', substr($cdr, $pos + 4, 2));
363
+
364
+ // Read out the digital signature
365
+ $digital_sig = substr($header, $pos + 6, $tmp_info['size']);
366
+
367
+ break;
368
+ }
369
+
370
+ // Get file header
371
+ $header = substr($cdr, $pos, 46);
372
+
373
+ // Unpack the header information
374
+ $header_info = @unpack('Vheader/'.
375
+ 'vversion_made_by/'.
376
+ 'vversion_needed/'.
377
+ 'vgeneral_purpose/'.
378
+ 'vcompression_method/'.
379
+ 'vlast_mod_time/'.
380
+ 'vlast_mod_date/'.
381
+ 'Vcrc32/'.
382
+ 'Vcompressed_size/'.
383
+ 'Vuncompressed_size/'.
384
+ 'vname_length/'.
385
+ 'vextra_length/'.
386
+ 'vcomment_length/'.
387
+ 'vdisk_number/'.
388
+ 'vinternal_attributes/'.
389
+ 'Vexternal_attributes/'.
390
+ 'Voffset',
391
+ $header);
392
+
393
+ // Valid header?
394
+ if($header_info['header'] != 33639248)
395
+ return false;
396
+
397
+ // New position
398
+ $pos += 46;
399
+
400
+ // Read out the file name
401
+ $header_info['name'] = substr($cdr, $pos, $header_info['name_length']);
402
+
403
+ // New position
404
+ $pos += $header_info['name_length'];
405
+
406
+ // Read out the extra stuff
407
+ $header_info['extra'] = substr($cdr, $pos, $header_info['extra_length']);
408
+
409
+ // New position
410
+ $pos += $header_info['extra_length'];
411
+
412
+ // Read out the comment
413
+ $header_info['comment'] = substr($cdr, $pos, $header_info['comment_length']);
414
+
415
+ // New position
416
+ $pos += $header_info['comment_length'];
417
+
418
+ // Append this file/dir to the entry list
419
+ $entries[] = $header_info;
420
+ }
421
+
422
+ // Check whether all entries where read sucessfully
423
+ if(count($entries) != $cd_entries)
424
+ return false;
425
+
426
+ // Handle files/dirs
427
+ foreach($entries as $entry) {
428
+ // Is a dir?
429
+ if($entry['external_attributes'] & 16) {
430
+ $this->add_dir($entry['name']);
431
+ continue;
432
+ }
433
+
434
+ // Get local file header
435
+ $header = substr($string, $entry['offset'], 30);
436
+
437
+ // Unpack the header information
438
+ $header_info = @unpack('Vheader/'.
439
+ 'vversion_needed/'.
440
+ 'vgeneral_purpose/'.
441
+ 'vcompression_method/'.
442
+ 'vlast_mod_time/'.
443
+ 'vlast_mod_date/'.
444
+ 'Vcrc32/'.
445
+ 'Vcompressed_size/'.
446
+ 'Vuncompressed_size/'.
447
+ 'vname_length/'.
448
+ 'vextra_length',
449
+ $header);
450
+
451
+ // Valid header?
452
+ if($header_info['header'] != 67324752)
453
+ return false;
454
+
455
+ // Get content start position
456
+ $start = $entry['offset'] + 30 + $header_info['name_length'] + $header_info['extra_length'];
457
+
458
+ // Get the compressed data
459
+ $data = substr($string, $start, $header_info['compressed_size']);
460
+
461
+ // Detect compression type
462
+ switch($header_info['compression_method']) {
463
+ // No compression
464
+ case 0:
465
+ // Ne decompression needed
466
+ $content = $data;
467
+ break;
468
+
469
+ // Gzip
470
+ case 8:
471
+ if(!function_exists('gzinflate'))
472
+ return false;
473
+
474
+ // Uncompress data
475
+ $content = gzinflate($data);
476
+ break;
477
+
478
+ // Bzip2
479
+ case 12:
480
+ if(!function_exists('bzdecompress'))
481
+ return false;
482
+
483
+ // Decompress data
484
+ $content = bzdecompress($data);
485
+ break;
486
+
487
+ // Compression not supported -> error
488
+ default:
489
+ return false;
490
+ }
491
+
492
+ // Try to add file
493
+ if(!$this->add_file($entry['name'], $content))
494
+ return false;
495
+ }
496
+
497
+ return true;
498
+ }
499
+ }
500
+
501
+ function &byref() {
502
+ $x = array();
503
+ return $x;
504
+ }
505
+ ?>