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,578 @@
1
+ // public domain
2
+
3
+ module Deflate
4
+
5
+ open System
6
+ open System.Collections.Generic
7
+ open System.IO
8
+ open System.Linq
9
+ open Crc
10
+
11
+ let maxbuf = 32768
12
+ let maxlen = 258
13
+
14
+ let getBit (b:byte) (bit:int) =
15
+ if b &&& (1uy <<< bit) = 0uy then 0 else 1
16
+
17
+ type BitReader(sin:Stream) =
18
+ let mutable bit = 8
19
+ let mutable cur = 0uy
20
+
21
+ member x.Skip() =
22
+ bit <- 8
23
+
24
+ member x.ReadBit() =
25
+ if bit = 8 then
26
+ bit <- 0
27
+ let b = sin.ReadByte()
28
+ if b = -1 then
29
+ failwith "バッファを超過しました"
30
+ cur <- byte b
31
+ let ret = if cur &&& (1uy <<< bit) = 0uy then 0 else 1
32
+ bit <- bit + 1
33
+ ret
34
+
35
+ member x.ReadLE n =
36
+ let mutable ret = 0
37
+ for i = 0 to n - 1 do
38
+ if x.ReadBit() = 1 then ret <- ret ||| (1 <<< i)
39
+ ret
40
+
41
+ member x.ReadBE n =
42
+ let mutable ret = 0
43
+ for i = 0 to n - 1 do
44
+ ret <- (ret <<< 1) ||| x.ReadBit()
45
+ ret
46
+
47
+ member x.ReadBytes len =
48
+ if bit <> 8 then bit <- 8
49
+ let buf = Array.zeroCreate<byte> len
50
+ ignore <| sin.Read(buf, 0, len)
51
+ buf
52
+
53
+ type WriteBuffer(sout:Stream) =
54
+ let mutable prev:byte[] = null
55
+ let mutable buf = Array.zeroCreate<byte> maxbuf
56
+ let mutable p = 0
57
+
58
+ let next newbuf =
59
+ prev <- buf
60
+ buf <- if newbuf then Array.zeroCreate<byte> maxbuf else null
61
+ p <- 0
62
+
63
+ member x.Close() =
64
+ next false
65
+ next false
66
+
67
+ interface IDisposable with
68
+ member x.Dispose() = x.Close()
69
+
70
+ member x.WriteByte (b:byte) =
71
+ buf.[p] <- b
72
+ sout.WriteByte b
73
+ p <- p + 1
74
+ if p = maxbuf then next true
75
+
76
+ member x.Write (src:byte[]) start len =
77
+ let maxlen = maxbuf - p
78
+ if len <= maxlen then
79
+ Array.Copy(src, start, buf, p, len)
80
+ sout.Write(src, start, len)
81
+ p <- p + len
82
+ if p = maxbuf then next true
83
+ else
84
+ x.Write src start maxlen
85
+ x.Write src (start + maxlen) (len - maxlen)
86
+
87
+ member x.Copy len dist =
88
+ if dist < 1 then
89
+ failwith <| sprintf "dist too small: %d < 1" dist
90
+ elif dist > maxbuf then
91
+ failwith <| sprintf "dist too big: %d > %d" dist maxbuf
92
+ let pp = p - dist
93
+ if pp < 0 then
94
+ if prev = null then
95
+ failwith <| sprintf "dist too big: %d > %d" dist p
96
+ let pp = pp + maxbuf
97
+ let maxlen = maxbuf - pp
98
+ if len <= maxlen then
99
+ x.Write prev pp len
100
+ else
101
+ x.Write prev pp maxlen
102
+ x.Copy (len - maxlen) dist
103
+ else
104
+ let maxlen = p - pp
105
+ if len <= maxlen then
106
+ x.Write buf pp len
107
+ else
108
+ if dist = 1 then
109
+ let b = buf.[pp]
110
+ for i = 1 to len do
111
+ x.WriteByte b
112
+ else
113
+ let buf' = buf
114
+ let mutable len' = len
115
+ while len' > 0 do
116
+ let len'' = Math.Min(len', maxlen)
117
+ x.Write buf' pp len''
118
+ len' <- len' - len''
119
+
120
+ type Huffman(lens:int[]) =
121
+ let vals = Array.zeroCreate<int> lens.Length
122
+ let min = lens.Where(fun x -> x > 0).Min()
123
+ let max = lens.Max()
124
+ let counts = Array.zeroCreate<int> (max + 1)
125
+ let firsts = Array.zeroCreate<int> (max + 1)
126
+ let nexts = Array.zeroCreate<int> (max + 1)
127
+ let tables = Array.zeroCreate<int[]>(max + 1)
128
+
129
+ do
130
+ for len in lens do
131
+ if len > 0 then counts.[len] <- counts.[len] + 1
132
+ for i = 1 to max do
133
+ firsts.[i] <- (firsts.[i - 1] + counts.[i - 1]) <<< 1
134
+ Array.Copy(firsts, 0, nexts, 0, max + 1)
135
+ for i = 0 to vals.Length - 1 do
136
+ let len = lens.[i]
137
+ if len > 0 then
138
+ vals.[i] <- nexts.[len]
139
+ nexts.[len] <- nexts.[len] + 1
140
+
141
+ for i = 0 to vals.Length - 1 do
142
+ let len = lens.[i]
143
+ if len > 0 then
144
+ let start = firsts.[len]
145
+ if tables.[len] = null then
146
+ let count = nexts.[len] - start
147
+ tables.[len] <- Array.zeroCreate<int> count
148
+ tables.[len].[vals.[i] - start] <- i
149
+
150
+ member x.GetValue h =
151
+ let rec getv i =
152
+ if i > max then -1 else
153
+ if h < nexts.[i] then
154
+ tables.[i].[h - firsts.[i]]
155
+ else
156
+ getv (i + 1)
157
+ getv min
158
+
159
+ member x.Read(br:BitReader) =
160
+ let rec read h i =
161
+ if h < nexts.[i] then
162
+ tables.[i].[h - firsts.[i]]
163
+ else
164
+ read ((h <<< 1) ||| br.ReadBit()) (i + 1)
165
+ read (br.ReadBE min) min
166
+
167
+ type [<AbstractClass>] HuffmanDecoder() =
168
+ abstract GetValue: unit->int
169
+ abstract GetDistance: unit->int
170
+
171
+ type FixedHuffman(br:BitReader) =
172
+ inherit HuffmanDecoder()
173
+
174
+ override x.GetValue() =
175
+ let v = br.ReadBE 7
176
+ if v < 24 then v + 256 else
177
+ let v = (v <<< 1) ||| br.ReadBit()
178
+ if v < 192 then v - 48
179
+ elif v < 200 then v + 88
180
+ else ((v <<< 1) ||| br.ReadBit()) - 256
181
+
182
+ override x.GetDistance() = br.ReadBE 5
183
+
184
+ type DynamicHuffman(br:BitReader) =
185
+ inherit HuffmanDecoder()
186
+
187
+ let lit, dist =
188
+ let hlit =
189
+ let hlit = (br.ReadLE 5) + 257
190
+ if hlit > 286 then failwith <| sprintf "hlit: %d > 286" hlit
191
+ hlit
192
+
193
+ let hdist =
194
+ let hdist = (br.ReadLE 5) + 1
195
+ if hdist > 32 then failwith <| sprintf "hdist: %d > 32" hdist
196
+ hdist
197
+
198
+ let hclen =
199
+ let hclen = (br.ReadLE 4) + 4
200
+ if hclen > 19 then failwith <| sprintf "hclen: %d > 19" hclen
201
+ hclen
202
+
203
+ let clen =
204
+ let hclens = Array.zeroCreate<int> 19
205
+ let order = [| 16; 17; 18; 0; 8; 7; 9; 6; 10; 5;
206
+ 11; 4; 12; 3; 13; 2; 14; 1; 15 |]
207
+ for i = 0 to hclen - 1 do
208
+ hclens.[order.[i]] <- br.ReadLE 3
209
+ new Huffman(hclens)
210
+
211
+ let ld = Array.zeroCreate<int>(hlit + hdist)
212
+ let mutable i = 0
213
+ while i < ld.Length do
214
+ let v = clen.Read(br)
215
+ if v < 16 then
216
+ ld.[i] <- v
217
+ i <- i + 1
218
+ else
219
+ let r, v =
220
+ match v with
221
+ | 16 -> (br.ReadLE 2) + 3, ld.[i - 1]
222
+ | 17 -> (br.ReadLE 3) + 3, 0
223
+ | 18 -> (br.ReadLE 7) + 11, 0
224
+ | _ -> failwith "不正な値です。"
225
+ for j = 0 to r - 1 do
226
+ ld.[i + j] <- v
227
+ i <- i + r
228
+
229
+ new Huffman(ld.[0 .. hlit - 1]),
230
+ new Huffman(ld.[hlit .. hlit + hdist - 1])
231
+
232
+ override x.GetValue() = lit.Read br
233
+ override x.GetDistance() = dist.Read br
234
+
235
+ let getLitExLen v = if v < 265 || v = 285 then 0 else (v - 261) >>> 2
236
+ let getDistExLen d = if d < 4 then 0 else (d - 2) >>> 1
237
+
238
+ let litlens =
239
+ let litlens = Array.zeroCreate<int> 286
240
+ let mutable v = 3
241
+ for i = 257 to 284 do
242
+ litlens.[i] <- v
243
+ v <- v + (1 <<< (getLitExLen i))
244
+ litlens.[285] <- maxlen
245
+ litlens.[257..285]
246
+
247
+ let distlens =
248
+ let distlens = Array.zeroCreate<int> 30
249
+ let mutable v = 1
250
+ for i = 0 to 29 do
251
+ distlens.[i] <- v
252
+ v <- v + (1 <<< (getDistExLen i))
253
+ distlens
254
+
255
+ type Reader(sin:Stream) =
256
+ inherit Stream()
257
+
258
+ let br = new BitReader(sin)
259
+ let fh = new FixedHuffman(br)
260
+
261
+ let sout = new MemoryStream()
262
+ let dbuf = new WriteBuffer(sout)
263
+
264
+ let mutable cache:byte[] = null
265
+ let mutable canRead = true
266
+
267
+ let rec read (h:HuffmanDecoder) =
268
+ let v = h.GetValue()
269
+ if v > 285 then failwith <| sprintf "不正な値: %d" v
270
+ if v < 256 then
271
+ dbuf.WriteByte(byte v)
272
+ elif v > 256 then
273
+ let len =
274
+ if v < 265 then v - 254 else
275
+ litlens.[v - 257] + (br.ReadLE (getLitExLen v))
276
+ let dist =
277
+ let d = h.GetDistance()
278
+ if d > 29 then failwith <| sprintf "不正な距離: %d" d
279
+ if d < 4 then d + 1 else
280
+ distlens.[d] + (br.ReadLE (getDistExLen d))
281
+ dbuf.Copy len dist
282
+ if v <> 256 then read h
283
+
284
+ override x.CanRead = canRead
285
+ override x.CanWrite = false
286
+ override x.CanSeek = false
287
+ override x.Flush() = ()
288
+
289
+ override x.Close() =
290
+ dbuf.Close()
291
+ canRead <- false
292
+
293
+ override x.Read(buffer, offset, count) =
294
+ let offset =
295
+ if cache = null then 0 else
296
+ let clen = cache.Length
297
+ let len = Math.Min(clen, count)
298
+ Array.Copy(cache, 0, buffer, offset, len)
299
+ cache <- if len = clen then null
300
+ else cache.[len .. clen - 1]
301
+ len
302
+ let req = int64 <| count - offset
303
+ while canRead && sout.Length < req do
304
+ x.readBlock()
305
+ let len =
306
+ if sout.Length = 0L then 0 else
307
+ let data = sout.ToArray()
308
+ sout.SetLength(0L)
309
+ let dlen = data.Length
310
+ let len = Math.Min(int req, dlen)
311
+ Array.Copy(data, 0, buffer, offset, len)
312
+ if dlen > len then
313
+ cache <- data.[len..]
314
+ len
315
+ offset + len
316
+
317
+ override x.Position
318
+ with get() = raise <| new NotImplementedException()
319
+ and set(v) = raise <| new NotImplementedException()
320
+
321
+ override x.Length = raise <| new NotImplementedException()
322
+ override x.Seek(_, _) = raise <| new NotImplementedException()
323
+ override x.Write(_, _, _) = raise <| new NotImplementedException()
324
+ override x.SetLength(_) = raise <| new NotImplementedException()
325
+
326
+ member private x.readBlock() =
327
+ let bfinal = br.ReadBit()
328
+ match br.ReadLE 2 with
329
+ | 0 -> br.Skip()
330
+ let len = br.ReadLE 16
331
+ let nlen = br.ReadLE 16
332
+ if len + nlen <> 0x10000 then
333
+ failwith "不正な非圧縮長"
334
+ dbuf.Write (br.ReadBytes len) 0 len
335
+ | 1 -> read fh
336
+ | 2 -> read (new DynamicHuffman(br))
337
+ | _ -> failwith "不正なブロックタイプ"
338
+ if bfinal = 1 then
339
+ canRead <- false
340
+ x.Close()
341
+
342
+ type BitWriter(sout:Stream) =
343
+ let mutable bit = 0
344
+ let mutable cur = 0uy
345
+
346
+ member x.Skip() =
347
+ if bit > 0 then
348
+ sout.WriteByte(cur)
349
+ bit <- 0
350
+ cur <- 0uy
351
+
352
+ interface IDisposable with
353
+ member x.Dispose() =
354
+ x.Skip()
355
+ sout.Flush()
356
+
357
+ member x.WriteBit(b:int) =
358
+ cur <- cur ||| ((byte b) <<< bit)
359
+ bit <- bit + 1
360
+ if bit = 8 then
361
+ sout.WriteByte(cur)
362
+ bit <- 0
363
+ cur <- 0uy
364
+
365
+ member x.WriteLE (len:int) (b:int) =
366
+ for i = 0 to len - 1 do
367
+ x.WriteBit <| if (b &&& (1 <<< i)) = 0 then 0 else 1
368
+
369
+ member x.WriteBE (len:int) (b:int) =
370
+ for i = len - 1 downto 0 do
371
+ x.WriteBit <| if (b &&& (1 <<< i)) = 0 then 0 else 1
372
+
373
+ member x.WriteBytes(data:byte[]) =
374
+ x.Skip()
375
+ sout.Write(data, 0, data.Length)
376
+
377
+ type FixedHuffmanWriter(bw:BitWriter) =
378
+ member x.Write (b:int) =
379
+ if b < 144 then
380
+ bw.WriteBE 8 (b + 0b110000)
381
+ elif b < 256 then
382
+ bw.WriteBE 9 (b - 144 + 0b110010000)
383
+ elif b < 280 then
384
+ bw.WriteBE 7 (b - 256)
385
+ elif b < 288 then
386
+ bw.WriteBE 8 (b - 280 + 0b11000000)
387
+
388
+ member x.WriteLen (len:int) =
389
+ if len < 3 || len > maxlen then
390
+ failwith <| sprintf "不正な長さ: %d" len
391
+ let mutable ll = 285
392
+ while len < litlens.[ll - 257] do
393
+ ll <- ll - 1
394
+ x.Write ll
395
+ bw.WriteLE (getLitExLen ll) (len - litlens.[ll - 257])
396
+
397
+ member x.WriteDist (d:int) =
398
+ if d < 1 || d > maxbuf then
399
+ failwith <| sprintf "不正な距離: %d" d
400
+ let mutable dl = 29
401
+ while d < distlens.[dl] do
402
+ dl <- dl - 1
403
+ bw.WriteBE 5 dl
404
+ bw.WriteLE (getDistExLen dl) (d - distlens.[dl])
405
+
406
+ let maxbuf2 = maxbuf * 2
407
+ let buflen = maxbuf2 + maxlen
408
+
409
+ let inline getHash (buf:byte[]) pos =
410
+ ((int buf.[pos]) <<< 4) ^^^ ((int buf.[pos + 1]) <<< 2) ^^^ (int buf.[pos + 2])
411
+
412
+ let inline addHash (hash:List<int>[]) (buf:byte[]) pos =
413
+ if buf.[pos] <> buf.[pos + 1] then
414
+ hash.[getHash buf pos].Add pos
415
+
416
+ let inline addHash2 (tables:int[,]) (counts:int[]) (buf:byte[]) pos =
417
+ if buf.[pos] <> buf.[pos + 1] then
418
+ let h = getHash buf pos
419
+ let c = counts.[h]
420
+ tables.[h, c &&& 15] <- pos
421
+ counts.[h] <- c + 1
422
+
423
+ type Writer(t:int, sin:Stream) =
424
+ let mutable length = buflen
425
+ let buf = Array.zeroCreate<byte> buflen
426
+ let tables, counts =
427
+ if t = 2 then Array2D.zeroCreate<int> 4096 16, Array.create 4096 0 else null, null
428
+ let hash = if tables = null then [| for _ in 0..4095 -> new List<int>() |] else null
429
+ let mutable crc = ~~~0u
430
+
431
+ let read pos len =
432
+ let rlen = sin.Read(buf, pos, len)
433
+ if rlen < len then length <- pos + rlen
434
+ for i = pos to pos + rlen - 1 do
435
+ let b = int(crc ^^^ (uint32 buf.[i])) &&& 0xff
436
+ crc <- (crc >>> 8) ^^^ crc32_table.[b]
437
+ if hash <> null then
438
+ for list in hash do list.Clear()
439
+ else
440
+ Array.fill counts 0 counts.Length 0
441
+
442
+ do
443
+ read 0 buflen
444
+
445
+ let search (pos:int) =
446
+ let mutable maxp = -1
447
+ let mutable maxl = 2
448
+ let mlen = Math.Min(maxlen, length - pos)
449
+ let last = Math.Max(0, pos - maxbuf)
450
+ let h = getHash buf pos
451
+ if hash <> null then
452
+ let list = hash.[h]
453
+ let mutable i = list.Count - 1
454
+ while i >= 0 do
455
+ let p = list.[i]
456
+ if p < last then i <- 0 else
457
+ let mutable len = 0
458
+ while len < mlen && buf.[p + len] = buf.[pos + len] do
459
+ len <- len + 1
460
+ if len > maxl then
461
+ maxp <- p
462
+ maxl <- len
463
+ i <- i - 1
464
+ else
465
+ let c = counts.[h]
466
+ let p1, p2 = if c < 16 then 0, c - 1 else c + 1, c + 16
467
+ let mutable i = p2
468
+ while i >= p1 do
469
+ let p = tables.[h, i &&& 15]
470
+ if p < last then i <- 0 else
471
+ let mutable len = 0
472
+ while len < mlen && buf.[p + len] = buf.[pos + len] do
473
+ len <- len + 1
474
+ if len > maxl then
475
+ maxp <- p
476
+ maxl <- len
477
+ i <- i - 1
478
+ maxp, maxl
479
+
480
+ member x.Crc = ~~~crc
481
+
482
+ member x.Compress (sout:Stream) =
483
+ use bw = new BitWriter(sout)
484
+ bw.WriteBit 1
485
+ bw.WriteLE 2 1
486
+ let hw = new FixedHuffmanWriter(bw)
487
+ let mutable p = 0
488
+ match t with
489
+ | 2 ->
490
+ while p < length do
491
+ let b = buf.[p]
492
+ if p < length - 4 && b = buf.[p + 1] && b = buf.[p + 2] && b = buf.[p + 3] then
493
+ let mutable len = 4
494
+ let mlen = Math.Min(maxlen + 1, length - p)
495
+ while len < mlen && b = buf.[p + len] do
496
+ len <- len + 1
497
+ hw.Write(int b)
498
+ hw.WriteLen(len - 1)
499
+ hw.WriteDist 1
500
+ p <- p + len
501
+ else
502
+ let maxp, maxl = search p
503
+ if maxp < 0 then
504
+ hw.Write(int b)
505
+ addHash2 tables counts buf p
506
+ p <- p + 1
507
+ else
508
+ hw.WriteLen maxl
509
+ hw.WriteDist (p - maxp)
510
+ for i = p to p + maxl - 1 do
511
+ addHash2 tables counts buf i
512
+ p <- p + maxl
513
+ if p > maxbuf2 then
514
+ Array.Copy(buf, maxbuf, buf, 0, maxbuf + maxlen)
515
+ if length < buflen then length <- length - maxbuf else
516
+ read (maxbuf + maxlen) maxbuf
517
+ p <- p - maxbuf
518
+ for i = 0 to p - 1 do
519
+ addHash2 tables counts buf i
520
+ | 1 ->
521
+ while p < length do
522
+ let b = buf.[p]
523
+ if p < length - 4 && b = buf.[p + 1] && b = buf.[p + 2] && b = buf.[p + 3] then
524
+ let mutable len = 4
525
+ let mlen = Math.Min(maxlen + 1, length - p)
526
+ while len < mlen && b = buf.[p + len] do
527
+ len <- len + 1
528
+ hw.Write(int b)
529
+ hw.WriteLen(len - 1)
530
+ hw.WriteDist 1
531
+ p <- p + len
532
+ else
533
+ let maxp, maxl = search p
534
+ if maxp < 0 then
535
+ hw.Write(int b)
536
+ addHash hash buf p
537
+ p <- p + 1
538
+ else
539
+ hw.WriteLen maxl
540
+ hw.WriteDist (p - maxp)
541
+ for i = p to p + maxl - 1 do
542
+ addHash hash buf i
543
+ p <- p + maxl
544
+ if p > maxbuf2 then
545
+ Array.Copy(buf, maxbuf, buf, 0, maxbuf + maxlen)
546
+ if length < buflen then length <- length - maxbuf else
547
+ read (maxbuf + maxlen) maxbuf
548
+ p <- p - maxbuf
549
+ for i = 0 to p - 1 do
550
+ addHash hash buf i
551
+ | _ ->
552
+ while p < length do
553
+ let maxp, maxl = search p
554
+ if maxp < 0 then
555
+ hw.Write(int buf.[p])
556
+ hash.[getHash buf p].Add p
557
+ p <- p + 1
558
+ else
559
+ hw.WriteLen maxl
560
+ hw.WriteDist (p - maxp)
561
+ for i = p to p + maxl - 1 do
562
+ hash.[getHash buf i].Add i
563
+ p <- p + maxl
564
+ if p > maxbuf2 then
565
+ Array.Copy(buf, maxbuf, buf, 0, maxbuf + maxlen)
566
+ if length < buflen then length <- length - maxbuf else
567
+ read (maxbuf + maxlen) maxbuf
568
+ p <- p - maxbuf
569
+ for i = 0 to p - 1 do
570
+ hash.[getHash buf i].Add i
571
+ hw.Write 256
572
+
573
+ let GetCompressBytes (sin:Stream) =
574
+ let now = DateTime.Now
575
+ let ms = new MemoryStream()
576
+ let w = new Writer(1, sin)
577
+ w.Compress ms
578
+ ms.ToArray(), w.Crc