narf 0.5.1

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 (657) hide show
  1. data/ChangeLog +163 -0
  2. data/InstalledFiles +2227 -0
  3. data/README +124 -0
  4. data/TODO +88 -0
  5. data/bin/narftest +17 -0
  6. data/bug.rb +9 -0
  7. data/build.rb +314 -0
  8. data/build.rb~ +314 -0
  9. data/config.save +12 -0
  10. data/doc/apache_cgi.txt +17 -0
  11. data/doc/fastcgi.txt +19 -0
  12. data/doc/mod_ruby.txt +7 -0
  13. data/doc/rdoc/classes/Web.html +366 -0
  14. data/doc/rdoc/classes/Web.src/M000002.html +15 -0
  15. data/doc/rdoc/classes/Web.src/M000003.html +15 -0
  16. data/doc/rdoc/classes/Web.src/M000004.html +15 -0
  17. data/doc/rdoc/classes/Web.src/M000005.html +15 -0
  18. data/doc/rdoc/classes/Web.src/M000006.html +20 -0
  19. data/doc/rdoc/classes/Web.src/M000007.html +18 -0
  20. data/doc/rdoc/classes/Web.src/M000008.html +18 -0
  21. data/doc/rdoc/classes/Web.src/M000009.html +18 -0
  22. data/doc/rdoc/classes/Web.src/M000010.html +15 -0
  23. data/doc/rdoc/classes/Web.src/M000011.html +15 -0
  24. data/doc/rdoc/classes/Web.src/M000012.html +15 -0
  25. data/doc/rdoc/classes/Web/CGD.html +173 -0
  26. data/doc/rdoc/classes/Web/CGD.src/M000037.html +24 -0
  27. data/doc/rdoc/classes/Web/CGD.src/M000038.html +23 -0
  28. data/doc/rdoc/classes/Web/CGD.src/M000039.html +15 -0
  29. data/doc/rdoc/classes/Web/CGD.src/M000040.html +15 -0
  30. data/doc/rdoc/classes/Web/CGD.src/M000041.html +23 -0
  31. data/doc/rdoc/classes/Web/CGI.html +946 -0
  32. data/doc/rdoc/classes/Web/CGI.src/M000051.html +15 -0
  33. data/doc/rdoc/classes/Web/CGI.src/M000052.html +24 -0
  34. data/doc/rdoc/classes/Web/CGI.src/M000053.html +15 -0
  35. data/doc/rdoc/classes/Web/CGI.src/M000054.html +15 -0
  36. data/doc/rdoc/classes/Web/CGI.src/M000055.html +15 -0
  37. data/doc/rdoc/classes/Web/CGI.src/M000056.html +15 -0
  38. data/doc/rdoc/classes/Web/CGI.src/M000057.html +17 -0
  39. data/doc/rdoc/classes/Web/CGI.src/M000058.html +34 -0
  40. data/doc/rdoc/classes/Web/CGI.src/M000059.html +22 -0
  41. data/doc/rdoc/classes/Web/CGI.src/M000060.html +15 -0
  42. data/doc/rdoc/classes/Web/CGI.src/M000061.html +15 -0
  43. data/doc/rdoc/classes/Web/CGI.src/M000062.html +19 -0
  44. data/doc/rdoc/classes/Web/CGI.src/M000063.html +18 -0
  45. data/doc/rdoc/classes/Web/CGI.src/M000064.html +19 -0
  46. data/doc/rdoc/classes/Web/CGI.src/M000065.html +15 -0
  47. data/doc/rdoc/classes/Web/CGI.src/M000066.html +15 -0
  48. data/doc/rdoc/classes/Web/CGI.src/M000067.html +15 -0
  49. data/doc/rdoc/classes/Web/CGI.src/M000068.html +13 -0
  50. data/doc/rdoc/classes/Web/CGI.src/M000069.html +13 -0
  51. data/doc/rdoc/classes/Web/CGI.src/M000070.html +13 -0
  52. data/doc/rdoc/classes/Web/CGI.src/M000071.html +13 -0
  53. data/doc/rdoc/classes/Web/CGI.src/M000072.html +19 -0
  54. data/doc/rdoc/classes/Web/CGI.src/M000073.html +15 -0
  55. data/doc/rdoc/classes/Web/CGI.src/M000074.html +19 -0
  56. data/doc/rdoc/classes/Web/CGI.src/M000075.html +15 -0
  57. data/doc/rdoc/classes/Web/CGI.src/M000076.html +15 -0
  58. data/doc/rdoc/classes/Web/CGI.src/M000077.html +15 -0
  59. data/doc/rdoc/classes/Web/CGI.src/M000078.html +20 -0
  60. data/doc/rdoc/classes/Web/CGI.src/M000079.html +36 -0
  61. data/doc/rdoc/classes/Web/CGI.src/M000080.html +19 -0
  62. data/doc/rdoc/classes/Web/CGI.src/M000081.html +18 -0
  63. data/doc/rdoc/classes/Web/CGI.src/M000082.html +15 -0
  64. data/doc/rdoc/classes/Web/CGI.src/M000083.html +17 -0
  65. data/doc/rdoc/classes/Web/CGI.src/M000084.html +15 -0
  66. data/doc/rdoc/classes/Web/CGI.src/M000085.html +16 -0
  67. data/doc/rdoc/classes/Web/CGI.src/M000086.html +15 -0
  68. data/doc/rdoc/classes/Web/CGI.src/M000087.html +15 -0
  69. data/doc/rdoc/classes/Web/CGI.src/M000088.html +15 -0
  70. data/doc/rdoc/classes/Web/CGI.src/M000089.html +16 -0
  71. data/doc/rdoc/classes/Web/CGI.src/M000090.html +15 -0
  72. data/doc/rdoc/classes/Web/CGI.src/M000091.html +15 -0
  73. data/doc/rdoc/classes/Web/CGI.src/M000092.html +15 -0
  74. data/doc/rdoc/classes/Web/CGI.src/M000093.html +15 -0
  75. data/doc/rdoc/classes/Web/CGI.src/M000094.html +15 -0
  76. data/doc/rdoc/classes/Web/CGI.src/M000095.html +15 -0
  77. data/doc/rdoc/classes/Web/CGI.src/M000096.html +19 -0
  78. data/doc/rdoc/classes/Web/CGI.src/M000097.html +15 -0
  79. data/doc/rdoc/classes/Web/CGI.src/M000098.html +15 -0
  80. data/doc/rdoc/classes/Web/CGI.src/M000099.html +43 -0
  81. data/doc/rdoc/classes/Web/CGI.src/M000100.html +18 -0
  82. data/doc/rdoc/classes/Web/CGI.src/M000101.html +20 -0
  83. data/doc/rdoc/classes/Web/CGI.src/M000102.html +15 -0
  84. data/doc/rdoc/classes/Web/CGI.src/M000103.html +15 -0
  85. data/doc/rdoc/classes/Web/CGI.src/M000104.html +15 -0
  86. data/doc/rdoc/classes/Web/CGI.src/M000105.html +24 -0
  87. data/doc/rdoc/classes/Web/CGI.src/M000106.html +24 -0
  88. data/doc/rdoc/classes/Web/CGI.src/M000107.html +22 -0
  89. data/doc/rdoc/classes/Web/CaseInsensitiveHash.html +104 -0
  90. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000118.html +15 -0
  91. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000119.html +15 -0
  92. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000120.html +15 -0
  93. data/doc/rdoc/classes/Web/Mime.html +122 -0
  94. data/doc/rdoc/classes/Web/Mime.src/M000118.html +15 -0
  95. data/doc/rdoc/classes/Web/Mime.src/M000119.html +15 -0
  96. data/doc/rdoc/classes/Web/Mime.src/M000120.html +23 -0
  97. data/doc/rdoc/classes/Web/Mime.src/M000121.html +15 -0
  98. data/doc/rdoc/classes/Web/Mime.src/M000122.html +15 -0
  99. data/doc/rdoc/classes/Web/Mime.src/M000123.html +23 -0
  100. data/doc/rdoc/classes/Web/Mime.src/M000124.html +15 -0
  101. data/doc/rdoc/classes/Web/Narflates.html +132 -0
  102. data/doc/rdoc/classes/Web/Parser.html +219 -0
  103. data/doc/rdoc/classes/Web/Parser.src/M000013.html +21 -0
  104. data/doc/rdoc/classes/Web/Parser.src/M000014.html +19 -0
  105. data/doc/rdoc/classes/Web/Parser.src/M000015.html +21 -0
  106. data/doc/rdoc/classes/Web/Parser.src/M000016.html +15 -0
  107. data/doc/rdoc/classes/Web/Parser.src/M000017.html +30 -0
  108. data/doc/rdoc/classes/Web/Parser.src/M000018.html +15 -0
  109. data/doc/rdoc/classes/Web/Parser.src/M000019.html +19 -0
  110. data/doc/rdoc/classes/Web/Parser.src/M000020.html +27 -0
  111. data/doc/rdoc/classes/Web/Parser.src/M000021.html +15 -0
  112. data/doc/rdoc/classes/Web/Parser.src/M000022.html +16 -0
  113. data/doc/rdoc/classes/Web/Parser.src/M000023.html +18 -0
  114. data/doc/rdoc/classes/Web/Session.html +178 -0
  115. data/doc/rdoc/classes/Web/Session.src/M000042.html +20 -0
  116. data/doc/rdoc/classes/Web/Session.src/M000043.html +19 -0
  117. data/doc/rdoc/classes/Web/Session.src/M000044.html +21 -0
  118. data/doc/rdoc/classes/Web/Session.src/M000045.html +21 -0
  119. data/doc/rdoc/classes/Web/Session.src/M000046.html +15 -0
  120. data/doc/rdoc/classes/Web/Session.src/M000047.html +17 -0
  121. data/doc/rdoc/classes/Web/Session.src/M000048.html +15 -0
  122. data/doc/rdoc/classes/Web/Session.src/M000049.html +15 -0
  123. data/doc/rdoc/classes/Web/Session.src/M000050.html +16 -0
  124. data/doc/rdoc/classes/Web/Testing.html +474 -0
  125. data/doc/rdoc/classes/Web/Testing.src/M000024.html +15 -0
  126. data/doc/rdoc/classes/Web/Testing.src/M000025.html +25 -0
  127. data/doc/rdoc/classes/Web/Testing.src/M000026.html +15 -0
  128. data/doc/rdoc/classes/Web/Testing.src/M000027.html +28 -0
  129. data/doc/rdoc/classes/Web/Testing.src/M000028.html +58 -0
  130. data/doc/rdoc/classes/Web/Testing.src/M000029.html +15 -0
  131. data/doc/rdoc/classes/Web/Testing.src/M000030.html +15 -0
  132. data/doc/rdoc/classes/Web/Testing.src/M000031.html +15 -0
  133. data/doc/rdoc/classes/Web/Testing.src/M000032.html +15 -0
  134. data/doc/rdoc/classes/Web/Testing.src/M000033.html +15 -0
  135. data/doc/rdoc/classes/Web/Testing.src/M000034.html +15 -0
  136. data/doc/rdoc/classes/Web/Testing.src/M000035.html +15 -0
  137. data/doc/rdoc/classes/Web/Testing.src/M000036.html +18 -0
  138. data/doc/rdoc/classes/Web/Upload.html +160 -0
  139. data/doc/rdoc/classes/Web/Upload.src/M000108.html +25 -0
  140. data/doc/rdoc/classes/Web/Upload.src/M000109.html +18 -0
  141. data/doc/rdoc/classes/Web/Upload.src/M000110.html +16 -0
  142. data/doc/rdoc/classes/Web/Upload.src/M000111.html +16 -0
  143. data/doc/rdoc/classes/Web/Wiki.html +249 -0
  144. data/doc/rdoc/classes/Web/Wiki.src/M000112.html +25 -0
  145. data/doc/rdoc/classes/Web/Wiki.src/M000113.html +15 -0
  146. data/doc/rdoc/classes/Web/Wiki.src/M000114.html +26 -0
  147. data/doc/rdoc/classes/Web/Wiki.src/M000115.html +21 -0
  148. data/doc/rdoc/classes/Web/Wiki.src/M000116.html +18 -0
  149. data/doc/rdoc/classes/Web/Wiki.src/M000117.html +19 -0
  150. data/doc/rdoc/created.rid +1 -0
  151. data/doc/rdoc/files/README.html +226 -0
  152. data/doc/rdoc/files/doc/apache_cgi_txt.html +82 -0
  153. data/doc/rdoc/files/doc/fastcgi_txt.html +82 -0
  154. data/doc/rdoc/files/doc/mod_ruby_txt.html +62 -0
  155. data/doc/rdoc/files/doc/webrick_txt.html +79 -0
  156. data/doc/rdoc/files/examples/examples_rdoc.html +73 -0
  157. data/doc/rdoc/files/lib/web/cgi_rb.html +75 -0
  158. data/doc/rdoc/files/lib/web/mime_rb.html +67 -0
  159. data/doc/rdoc/files/lib/web/parser_rb.html +73 -0
  160. data/doc/rdoc/files/lib/web/session_rb.html +73 -0
  161. data/doc/rdoc/files/lib/web/template_rb.html +73 -0
  162. data/doc/rdoc/files/lib/web/testing_rb.html +67 -0
  163. data/doc/rdoc/files/lib/web/upload_rb.html +73 -0
  164. data/doc/rdoc/files/lib/web/wiki_rb.html +79 -0
  165. data/doc/rdoc/files/lib/web_rb.html +116 -0
  166. data/doc/rdoc/files/lib/web_rb.src/M000001.html +15 -0
  167. data/doc/rdoc/fr_class_index.html +47 -0
  168. data/doc/rdoc/fr_file_index.html +52 -0
  169. data/doc/rdoc/fr_method_index.html +158 -0
  170. data/doc/rdoc/index.html +22 -0
  171. data/doc/rdoc/rdoc-style.css +99 -0
  172. data/doc/webrick.txt +23 -0
  173. data/examples/admin.rb +8 -0
  174. data/examples/admin.rb~ +5 -0
  175. data/examples/cookbook.rdoc +247 -0
  176. data/examples/cookbook.rdoc~ +238 -0
  177. data/examples/examples.rdoc +19 -0
  178. data/examples/examples.rdoc~ +17 -0
  179. data/examples/hello.world.rb +5 -0
  180. data/examples/hello.world.rb~ +3 -0
  181. data/examples/session.rb +34 -0
  182. data/examples/session.rb~ +31 -0
  183. data/examples/test/test.hello.world.rb +9 -0
  184. data/examples/test/test.hello.world.rb~ +9 -0
  185. data/examples/test/test.session.rb +37 -0
  186. data/examples/test/test.session.rb~ +37 -0
  187. data/examples/webunit/COPYING +340 -0
  188. data/examples/webunit/Makefile +14 -0
  189. data/examples/webunit/TIPS-ja.html +126 -0
  190. data/examples/webunit/TIPS-ja.rd +154 -0
  191. data/examples/webunit/TODO-ja.html +35 -0
  192. data/examples/webunit/TODO-ja.rd +28 -0
  193. data/examples/webunit/changes.rd +185 -0
  194. data/examples/webunit/conv/digit-0.cgi +40 -0
  195. data/examples/webunit/conv/digit-0.rb +21 -0
  196. data/examples/webunit/conv/digit-1.cgi +44 -0
  197. data/examples/webunit/conv/digit-1.rb +17 -0
  198. data/examples/webunit/conv/digit.cgi +59 -0
  199. data/examples/webunit/conv/digit.rb +23 -0
  200. data/examples/webunit/conv/test_digit-0.rb +16 -0
  201. data/examples/webunit/conv/test_digit-1.rb +19 -0
  202. data/examples/webunit/conv/test_digit.rb +26 -0
  203. data/examples/webunit/conv/test_digit_view-0.rb +76 -0
  204. data/examples/webunit/conv/test_digit_view-1.rb +102 -0
  205. data/examples/webunit/conv/test_digit_view.rb +134 -0
  206. data/examples/webunit/example.rd +37 -0
  207. data/examples/webunit/index-en.html +263 -0
  208. data/examples/webunit/index-en.rd +60 -0
  209. data/examples/webunit/index-ja.html +263 -0
  210. data/examples/webunit/index-ja.rd +60 -0
  211. data/examples/wiki.rb +7 -0
  212. data/examples/wiki.rb~ +5 -0
  213. data/install.rb +1022 -0
  214. data/lib/web.rb +290 -0
  215. data/lib/web.rb~ +290 -0
  216. data/lib/web/#assertinclude.rb# +110 -0
  217. data/lib/web/action.rb +82 -0
  218. data/lib/web/assertinclude.rb +110 -0
  219. data/lib/web/assertinclude.rb~ +110 -0
  220. data/lib/web/buffer.rb +20 -0
  221. data/lib/web/cgi.rb +641 -0
  222. data/lib/web/cgi.rb~ +640 -0
  223. data/lib/web/formreader.rb +317 -0
  224. data/lib/web/forms.rb +104 -0
  225. data/lib/web/htmlparser/html-parser.rb +429 -0
  226. data/lib/web/htmlparser/html-parser.rb~ +429 -0
  227. data/lib/web/htmlparser/sgml-parser.rb +332 -0
  228. data/lib/web/htmlparser/sgml-parser.rb~ +332 -0
  229. data/lib/web/htmltools/element.rb +296 -0
  230. data/lib/web/htmltools/element.rb~ +296 -0
  231. data/lib/web/htmltools/stparser.rb +276 -0
  232. data/lib/web/htmltools/stparser.rb~ +276 -0
  233. data/lib/web/htmltools/tags.rb +286 -0
  234. data/lib/web/htmltools/tags.rb~ +286 -0
  235. data/lib/web/htmltools/tree.rb +139 -0
  236. data/lib/web/htmltools/tree.rb~ +139 -0
  237. data/lib/web/htmltools/xmltree.rb +160 -0
  238. data/lib/web/htmltools/xmltree.rb~ +160 -0
  239. data/lib/web/htmltools/xpath.rb +71 -0
  240. data/lib/web/htmltools/xpath.rb~ +71 -0
  241. data/lib/web/mime.rb +82 -0
  242. data/lib/web/parser.rb +266 -0
  243. data/lib/web/parser.rb~ +266 -0
  244. data/lib/web/request.rb~ +238 -0
  245. data/lib/web/resources/mime.types +483 -0
  246. data/lib/web/runner.rb +26 -0
  247. data/lib/web/runner.rb~ +26 -0
  248. data/lib/web/sapi/fastcgi.rb +26 -0
  249. data/lib/web/sapi/fastcgi.rb~ +25 -0
  250. data/lib/web/sapi/mod_ruby.rb +46 -0
  251. data/lib/web/sapi/mod_ruby.rb~ +46 -0
  252. data/lib/web/sapi/webrick.rb +91 -0
  253. data/lib/web/sapi/webrick.rb~ +89 -0
  254. data/lib/web/session.rb +75 -0
  255. data/lib/web/session.rb~ +75 -0
  256. data/lib/web/simpledispatcher.rb +155 -0
  257. data/lib/web/strscanparser.rb +24 -0
  258. data/lib/web/tagparser.rb +96 -0
  259. data/lib/web/tagparser.rb~ +96 -0
  260. data/lib/web/template.rb +613 -0
  261. data/lib/web/template.rb~ +613 -0
  262. data/lib/web/testing.rb +546 -0
  263. data/lib/web/testing.rb~ +546 -0
  264. data/lib/web/traceoutput.rb +32 -0
  265. data/lib/web/unit.rb +27 -0
  266. data/lib/web/unit/assert.rb +154 -0
  267. data/lib/web/unit/converter.rb +148 -0
  268. data/lib/web/unit/cookie.rb +120 -0
  269. data/lib/web/unit/domwalker.rb +187 -0
  270. data/lib/web/unit/exception.rb +15 -0
  271. data/lib/web/unit/form.rb +118 -0
  272. data/lib/web/unit/formatter.rb +314 -0
  273. data/lib/web/unit/frame.rb +39 -0
  274. data/lib/web/unit/html-parser.rb +432 -0
  275. data/lib/web/unit/htmlelem.rb +124 -0
  276. data/lib/web/unit/htmlrepair.rb +116 -0
  277. data/lib/web/unit/htmlsplit.rb +840 -0
  278. data/lib/web/unit/image.rb +27 -0
  279. data/lib/web/unit/jscript.rb +32 -0
  280. data/lib/web/unit/link.rb +35 -0
  281. data/lib/web/unit/params.rb +323 -0
  282. data/lib/web/unit/parser.rb +226 -0
  283. data/lib/web/unit/resources/assert.html +101 -0
  284. data/lib/web/unit/resources/auth/index.html +5 -0
  285. data/lib/web/unit/resources/badtags.html +7 -0
  286. data/lib/web/unit/resources/cookie.cgi +33 -0
  287. data/lib/web/unit/resources/document.xml +13 -0
  288. data/lib/web/unit/resources/form.html +150 -0
  289. data/lib/web/unit/resources/frame-0.html +10 -0
  290. data/lib/web/unit/resources/frame-1.html +10 -0
  291. data/lib/web/unit/resources/frame.html +10 -0
  292. data/lib/web/unit/resources/image.html +17 -0
  293. data/lib/web/unit/resources/images/x.gif +0 -0
  294. data/lib/web/unit/resources/images/y.gif +0 -0
  295. data/lib/web/unit/resources/jscript-0.html +10 -0
  296. data/lib/web/unit/resources/jscript-1.html +10 -0
  297. data/lib/web/unit/resources/jscript.html +19 -0
  298. data/lib/web/unit/resources/link.html +19 -0
  299. data/lib/web/unit/resources/multipart.cgi +28 -0
  300. data/lib/web/unit/resources/multipart.html +74 -0
  301. data/lib/web/unit/resources/params.html +65 -0
  302. data/lib/web/unit/resources/redirect.cgi +13 -0
  303. data/lib/web/unit/resources/response.html +67 -0
  304. data/lib/web/unit/resources/simple.cgi +14 -0
  305. data/lib/web/unit/resources/stock.cgi +35 -0
  306. data/lib/web/unit/resources/table.html +83 -0
  307. data/lib/web/unit/response.rb +469 -0
  308. data/lib/web/unit/response.rb~ +461 -0
  309. data/lib/web/unit/runtest.rb +44 -0
  310. data/lib/web/unit/sgml-parser.rb +336 -0
  311. data/lib/web/unit/table.rb +150 -0
  312. data/lib/web/unit/testcase.rb +49 -0
  313. data/lib/web/unit/ui/cui/testrunner.rb +52 -0
  314. data/lib/web/unit/ui/cui/testrunner.rb~ +50 -0
  315. data/lib/web/unit/utils.rb +70 -0
  316. data/lib/web/unit/webunit.rb +28 -0
  317. data/lib/web/upload.rb +55 -0
  318. data/lib/web/upload.rb~ +262 -0
  319. data/lib/web/wiki.rb +506 -0
  320. data/lib/web/wiki.rb~ +506 -0
  321. data/lib/web/wiki/linker.rb +72 -0
  322. data/lib/web/wiki/linker.rb~ +72 -0
  323. data/lib/web/wiki/mime.rb~ +68 -0
  324. data/lib/web/wiki/page.rb +192 -0
  325. data/lib/web/wiki/page.rb~ +192 -0
  326. data/lib/web/wiki/resources/#edit.html# +65 -0
  327. data/lib/web/wiki/resources/admin.html +13 -0
  328. data/lib/web/wiki/resources/admin.html~ +13 -0
  329. data/lib/web/wiki/resources/asset_history.html +3 -0
  330. data/lib/web/wiki/resources/basic.html +1 -0
  331. data/lib/web/wiki/resources/default-content_editor.html +1 -0
  332. data/lib/web/wiki/resources/default-content_editor.html~ +1 -0
  333. data/lib/web/wiki/resources/edit.html +1 -1
  334. data/lib/web/wiki/resources/edit.html~ +1 -1
  335. data/lib/web/wiki/resources/ekit-content_editor.html +1 -0
  336. data/lib/web/wiki/resources/home.html +10 -0
  337. data/lib/web/wiki/resources/home.html~ +10 -0
  338. data/lib/web/wiki/resources/htmlarea/ChangeLog +1185 -0
  339. data/lib/web/wiki/resources/htmlarea/dialog.js +72 -0
  340. data/lib/web/wiki/resources/htmlarea/examples/2-areas.cgi +16 -0
  341. data/lib/web/wiki/resources/htmlarea/examples/2-areas.html +158 -0
  342. data/lib/web/wiki/resources/htmlarea/examples/context-menu.html +95 -0
  343. data/lib/web/wiki/resources/htmlarea/examples/core.html +184 -0
  344. data/lib/web/wiki/resources/htmlarea/examples/css.html +88 -0
  345. data/lib/web/wiki/resources/htmlarea/examples/custom.css +29 -0
  346. data/lib/web/wiki/resources/htmlarea/examples/full-page.html +75 -0
  347. data/lib/web/wiki/resources/htmlarea/examples/fully-loaded.html +248 -0
  348. data/lib/web/wiki/resources/htmlarea/examples/index.html +40 -0
  349. data/lib/web/wiki/resources/htmlarea/examples/spell-checker.html +132 -0
  350. data/lib/web/wiki/resources/htmlarea/examples/table-operations.html +116 -0
  351. data/lib/web/wiki/resources/htmlarea/examples/test.cgi +21 -0
  352. data/lib/web/wiki/resources/htmlarea/htmlarea.css +180 -0
  353. data/lib/web/wiki/resources/htmlarea/htmlarea.js +2175 -0
  354. data/lib/web/wiki/resources/htmlarea/images/ed_about.gif +0 -0
  355. data/lib/web/wiki/resources/htmlarea/images/ed_align_center.gif +0 -0
  356. data/lib/web/wiki/resources/htmlarea/images/ed_align_justify.gif +0 -0
  357. data/lib/web/wiki/resources/htmlarea/images/ed_align_left.gif +0 -0
  358. data/lib/web/wiki/resources/htmlarea/images/ed_align_right.gif +0 -0
  359. data/lib/web/wiki/resources/htmlarea/images/ed_blank.gif +0 -0
  360. data/lib/web/wiki/resources/htmlarea/images/ed_charmap.gif +0 -0
  361. data/lib/web/wiki/resources/htmlarea/images/ed_color_bg.gif +0 -0
  362. data/lib/web/wiki/resources/htmlarea/images/ed_color_fg.gif +0 -0
  363. data/lib/web/wiki/resources/htmlarea/images/ed_copy.gif +0 -0
  364. data/lib/web/wiki/resources/htmlarea/images/ed_custom.gif +0 -0
  365. data/lib/web/wiki/resources/htmlarea/images/ed_cut.gif +0 -0
  366. data/lib/web/wiki/resources/htmlarea/images/ed_delete.gif +0 -0
  367. data/lib/web/wiki/resources/htmlarea/images/ed_format_bold.gif +0 -0
  368. data/lib/web/wiki/resources/htmlarea/images/ed_format_italic.gif +0 -0
  369. data/lib/web/wiki/resources/htmlarea/images/ed_format_strike.gif +0 -0
  370. data/lib/web/wiki/resources/htmlarea/images/ed_format_sub.gif +0 -0
  371. data/lib/web/wiki/resources/htmlarea/images/ed_format_sup.gif +0 -0
  372. data/lib/web/wiki/resources/htmlarea/images/ed_format_underline.gif +0 -0
  373. data/lib/web/wiki/resources/htmlarea/images/ed_help.gif +0 -0
  374. data/lib/web/wiki/resources/htmlarea/images/ed_hr.gif +0 -0
  375. data/lib/web/wiki/resources/htmlarea/images/ed_html.gif +0 -0
  376. data/lib/web/wiki/resources/htmlarea/images/ed_image.gif +0 -0
  377. data/lib/web/wiki/resources/htmlarea/images/ed_indent_less.gif +0 -0
  378. data/lib/web/wiki/resources/htmlarea/images/ed_indent_more.gif +0 -0
  379. data/lib/web/wiki/resources/htmlarea/images/ed_left_to_right.gif +0 -0
  380. data/lib/web/wiki/resources/htmlarea/images/ed_link.gif +0 -0
  381. data/lib/web/wiki/resources/htmlarea/images/ed_list_bullet.gif +0 -0
  382. data/lib/web/wiki/resources/htmlarea/images/ed_list_num.gif +0 -0
  383. data/lib/web/wiki/resources/htmlarea/images/ed_paste.gif +0 -0
  384. data/lib/web/wiki/resources/htmlarea/images/ed_redo.gif +0 -0
  385. data/lib/web/wiki/resources/htmlarea/images/ed_right_to_left.gif +0 -0
  386. data/lib/web/wiki/resources/htmlarea/images/ed_save.gif +0 -0
  387. data/lib/web/wiki/resources/htmlarea/images/ed_show_border.gif +0 -0
  388. data/lib/web/wiki/resources/htmlarea/images/ed_splitcel.gif +0 -0
  389. data/lib/web/wiki/resources/htmlarea/images/ed_undo.gif +0 -0
  390. data/lib/web/wiki/resources/htmlarea/images/fullscreen_maximize.gif +0 -0
  391. data/lib/web/wiki/resources/htmlarea/images/fullscreen_minimize.gif +0 -0
  392. data/lib/web/wiki/resources/htmlarea/images/insert_table.gif +0 -0
  393. data/lib/web/wiki/resources/htmlarea/index.html +199 -0
  394. data/lib/web/wiki/resources/htmlarea/lang/b5.js +36 -0
  395. data/lib/web/wiki/resources/htmlarea/lang/cz.js +63 -0
  396. data/lib/web/wiki/resources/htmlarea/lang/da.js +38 -0
  397. data/lib/web/wiki/resources/htmlarea/lang/de.js +54 -0
  398. data/lib/web/wiki/resources/htmlarea/lang/ee.js +63 -0
  399. data/lib/web/wiki/resources/htmlarea/lang/el.js +75 -0
  400. data/lib/web/wiki/resources/htmlarea/lang/en.js +88 -0
  401. data/lib/web/wiki/resources/htmlarea/lang/es.js +51 -0
  402. data/lib/web/wiki/resources/htmlarea/lang/fi.js +46 -0
  403. data/lib/web/wiki/resources/htmlarea/lang/fr.js +61 -0
  404. data/lib/web/wiki/resources/htmlarea/lang/gb.js +36 -0
  405. data/lib/web/wiki/resources/htmlarea/lang/he.js +63 -0
  406. data/lib/web/wiki/resources/htmlarea/lang/hu.js +63 -0
  407. data/lib/web/wiki/resources/htmlarea/lang/it.js +54 -0
  408. data/lib/web/wiki/resources/htmlarea/lang/ja-euc.js +37 -0
  409. data/lib/web/wiki/resources/htmlarea/lang/ja-jis.js +37 -0
  410. data/lib/web/wiki/resources/htmlarea/lang/ja-sjis.js +37 -0
  411. data/lib/web/wiki/resources/htmlarea/lang/ja-utf8.js +37 -0
  412. data/lib/web/wiki/resources/htmlarea/lang/lt.js +55 -0
  413. data/lib/web/wiki/resources/htmlarea/lang/lv.js +55 -0
  414. data/lib/web/wiki/resources/htmlarea/lang/nb.js +36 -0
  415. data/lib/web/wiki/resources/htmlarea/lang/nl.js +90 -0
  416. data/lib/web/wiki/resources/htmlarea/lang/no.js +79 -0
  417. data/lib/web/wiki/resources/htmlarea/lang/pl.js +36 -0
  418. data/lib/web/wiki/resources/htmlarea/lang/pt_br.js +37 -0
  419. data/lib/web/wiki/resources/htmlarea/lang/ro.js +80 -0
  420. data/lib/web/wiki/resources/htmlarea/lang/ru.js +63 -0
  421. data/lib/web/wiki/resources/htmlarea/lang/se.js +38 -0
  422. data/lib/web/wiki/resources/htmlarea/lang/si.js +63 -0
  423. data/lib/web/wiki/resources/htmlarea/lang/vn.js +51 -0
  424. data/lib/web/wiki/resources/htmlarea/license.txt +30 -0
  425. data/lib/web/wiki/resources/htmlarea/plugins/CSS/css.js +116 -0
  426. data/lib/web/wiki/resources/htmlarea/plugins/CSS/lang/en.js +2 -0
  427. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/context-menu.js +416 -0
  428. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/de.js +59 -0
  429. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/el.js +57 -0
  430. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/en.js +66 -0
  431. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/nl.js +66 -0
  432. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/menu.css +64 -0
  433. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/full-page.js +143 -0
  434. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/img/docprop.gif +0 -0
  435. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/en.js +25 -0
  436. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/ro.js +25 -0
  437. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/popups/docprop.html +131 -0
  438. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/test.html +89 -0
  439. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif +0 -0
  440. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/cz.js +37 -0
  441. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/da.js +37 -0
  442. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/de.js +28 -0
  443. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/en.js +38 -0
  444. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/hu.js +37 -0
  445. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/it.js +28 -0
  446. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/ro.js +37 -0
  447. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/readme-tech.html +114 -0
  448. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi +210 -0
  449. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-style.css +10 -0
  450. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html +122 -0
  451. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js +397 -0
  452. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-checker.js +79 -0
  453. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif +0 -0
  454. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif +0 -0
  455. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif +0 -0
  456. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif +0 -0
  457. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif +0 -0
  458. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-split.gif +0 -0
  459. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-delete.gif +0 -0
  460. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif +0 -0
  461. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif +0 -0
  462. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-split.gif +0 -0
  463. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-delete.gif +0 -0
  464. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif +0 -0
  465. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif +0 -0
  466. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-prop.gif +0 -0
  467. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-split.gif +0 -0
  468. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/table-prop.gif +0 -0
  469. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/cz.js +90 -0
  470. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/da.js +90 -0
  471. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/de.js +81 -0
  472. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/el.js +81 -0
  473. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/en.js +90 -0
  474. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/fi.js +66 -0
  475. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/hu.js +63 -0
  476. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/it.js +81 -0
  477. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/nl.js +90 -0
  478. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/no.js +91 -0
  479. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/ro.js +90 -0
  480. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/table-operations.js +1160 -0
  481. data/lib/web/wiki/resources/htmlarea/popupdiv.js +369 -0
  482. data/lib/web/wiki/resources/htmlarea/popups/about.html +378 -0
  483. data/lib/web/wiki/resources/htmlarea/popups/blank.html +2 -0
  484. data/lib/web/wiki/resources/htmlarea/popups/custom2.html +35 -0
  485. data/lib/web/wiki/resources/htmlarea/popups/editor_help.html +16 -0
  486. data/lib/web/wiki/resources/htmlarea/popups/fullscreen.html +133 -0
  487. data/lib/web/wiki/resources/htmlarea/popups/insert_image.html +191 -0
  488. data/lib/web/wiki/resources/htmlarea/popups/insert_table.html +174 -0
  489. data/lib/web/wiki/resources/htmlarea/popups/link.html +142 -0
  490. data/lib/web/wiki/resources/htmlarea/popups/old-fullscreen.html +131 -0
  491. data/lib/web/wiki/resources/htmlarea/popups/old_insert_image.html +206 -0
  492. data/lib/web/wiki/resources/htmlarea/popups/popup.js +109 -0
  493. data/lib/web/wiki/resources/htmlarea/popups/select_color.html +347 -0
  494. data/lib/web/wiki/resources/htmlarea/popupwin.js +139 -0
  495. data/lib/web/wiki/resources/htmlarea/reference.html +523 -0
  496. data/lib/web/wiki/resources/htmlarea/release-notes.html +165 -0
  497. data/lib/web/wiki/resources/ie-content_editor.html +1 -0
  498. data/lib/web/wiki/resources/ie-content_editor.js +196 -0
  499. data/lib/web/wiki/resources/illustration.html +1 -0
  500. data/lib/web/wiki/resources/illustration.html~ +1 -0
  501. data/lib/web/wiki/resources/images.html +1 -0
  502. data/lib/web/wiki/resources/index.html +4 -0
  503. data/lib/web/wiki/resources/index.html~ +4 -0
  504. data/lib/web/wiki/resources/more_news.html +5 -0
  505. data/lib/web/wiki/resources/more_news.html~ +5 -0
  506. data/lib/web/wiki/resources/more_news_rss_0.91.html +23 -0
  507. data/lib/web/wiki/resources/narf-logo.gif +0 -0
  508. data/lib/web/wiki/resources/page_history.html +19 -0
  509. data/lib/web/wiki/resources/page_history.html~ +19 -0
  510. data/lib/web/wiki/resources/template.html +13 -0
  511. data/lib/web/wiki/resources/template.html~ +13 -0
  512. data/lib/web/wiki/resources/test_upload.gif +0 -0
  513. data/lib/web/wiki/resources/text-styles.css +1 -0
  514. data/lib/web/writableio.rb +33 -0
  515. data/narf-0.5.1.gem +0 -0
  516. data/narf.gemspec +40 -0
  517. data/narf.gemspec~ +52 -0
  518. data/pre-setup.rb +5 -0
  519. data/sapi/apache_cgi/INSTALL.txt~ +9 -0
  520. data/sapi/apache_cgi/README~ +0 -0
  521. data/sapi/apache_cgi/src/narf.c +13 -0
  522. data/sapi/fastcgi/INSTALL.txt~ +17 -0
  523. data/sapi/mod_ruby/INSTALL.txt~ +5 -0
  524. data/sapi/webrick/INSTALL.txt~ +21 -0
  525. data/sapi/webrick/run_webrick.rb~ +16 -0
  526. data/scripts/dump.rb +14 -0
  527. data/scripts/makedist.rb +49 -0
  528. data/scripts/upload.html +5 -0
  529. data/scripts/uri.rb +41 -0
  530. data/scripts/uri/common.rb +432 -0
  531. data/scripts/uri/ftp.rb +149 -0
  532. data/scripts/uri/generic.rb +1106 -0
  533. data/scripts/uri/http.rb +76 -0
  534. data/scripts/uri/https.rb +26 -0
  535. data/scripts/uri/ldap.rb +238 -0
  536. data/scripts/uri/mailto.rb +260 -0
  537. data/scripts/urireg.rb +174 -0
  538. data/test/bufferedtestrunner.rb +112 -0
  539. data/test/mod_ruby_stub.rb +39 -0
  540. data/test/mod_ruby_stub.rb~ +38 -0
  541. data/test/stringio.rb +2 -0
  542. data/test/test.action.rb +142 -0
  543. data/test/test.action.rb~ +142 -0
  544. data/test/test.app.rb +0 -0
  545. data/test/test.assertinclude.rb +109 -0
  546. data/test/test.assertinclude.rb~ +109 -0
  547. data/test/test.formreader-2.0.rb +352 -0
  548. data/test/test.formreader.rb +465 -0
  549. data/test/test.mime-type.rb +23 -0
  550. data/test/test.narf.cgi.rb +101 -0
  551. data/test/test.narf.cgi.rb~ +105 -0
  552. data/test/test.request.rb +328 -0
  553. data/test/test.request.rb~ +318 -0
  554. data/test/test.response.rb +565 -0
  555. data/test/test.response.rb~ +556 -0
  556. data/test/test.session.rb +50 -0
  557. data/test/test.simpledispatcher.rb +188 -0
  558. data/test/test.tagparser.rb +65 -0
  559. data/test/test.template.rb +831 -0
  560. data/test/test.template.rb~ +832 -0
  561. data/test/test.testing2.rb +341 -0
  562. data/test/test.web.test.rb +463 -0
  563. data/test/test.web.test.rb~ +461 -0
  564. data/test/testfiles/basictemplate.tpl +1 -0
  565. data/test/testfiles/explorer5.multipart.data +9 -0
  566. data/test/testfiles/form.html +7 -0
  567. data/test/testfiles/mozilla.multipart.data +9 -0
  568. data/test/testfiles/netscape4.multipart.data +9 -0
  569. data/test/testfiles/pic hydra.png +1 -0
  570. data/test/testfiles/post.data +1 -0
  571. data/test/testfiles/print.text +1 -0
  572. data/test/testfiles/text +1 -0
  573. data/test/webunit/dont_get_it.test_webunit.rb +27 -0
  574. data/test/webunit/ref +38 -0
  575. data/test/webunit/resources/uploadfile1.txt +1 -0
  576. data/test/webunit/resources/uploadfile2.txt +1 -0
  577. data/test/webunit/test_assert.rb +169 -0
  578. data/test/webunit/test_cookie.rb +128 -0
  579. data/test/webunit/test_cookie.rb~ +128 -0
  580. data/test/webunit/test_domwalker.rb +83 -0
  581. data/test/webunit/test_form.rb +43 -0
  582. data/test/webunit/test_form.rb~ +43 -0
  583. data/test/webunit/test_frame.rb +43 -0
  584. data/test/webunit/test_htmlelem.rb +75 -0
  585. data/test/webunit/test_image.rb +46 -0
  586. data/test/webunit/test_jscript.rb +58 -0
  587. data/test/webunit/test_link.rb +87 -0
  588. data/test/webunit/test_multipart.rb +53 -0
  589. data/test/webunit/test_multipart.rb~ +53 -0
  590. data/test/webunit/test_params.rb +212 -0
  591. data/test/webunit/test_params.rb~ +211 -0
  592. data/test/webunit/test_parser.rb +31 -0
  593. data/test/webunit/test_response.rb +145 -0
  594. data/test/webunit/test_response.rb~ +145 -0
  595. data/test/webunit/test_site/assert.html +101 -0
  596. data/test/webunit/test_site/assert.html~ +1 -0
  597. data/test/webunit/test_site/auth/index.html +5 -0
  598. data/test/webunit/test_site/auth/index.html~ +1 -0
  599. data/test/webunit/test_site/badtags.html +7 -0
  600. data/test/webunit/test_site/badtags.html~ +1 -0
  601. data/test/webunit/test_site/cookie.cgi +37 -0
  602. data/test/webunit/test_site/cookie.cgi~ +35 -0
  603. data/test/webunit/test_site/document.xml +13 -0
  604. data/test/webunit/test_site/document.xml~ +1 -0
  605. data/test/webunit/test_site/form.html +150 -0
  606. data/test/webunit/test_site/form.html~ +1 -0
  607. data/test/webunit/test_site/frame-0.html +10 -0
  608. data/test/webunit/test_site/frame-0.html~ +1 -0
  609. data/test/webunit/test_site/frame-1.html +10 -0
  610. data/test/webunit/test_site/frame-1.html~ +1 -0
  611. data/test/webunit/test_site/frame.html +10 -0
  612. data/test/webunit/test_site/frame.html~ +1 -0
  613. data/test/webunit/test_site/image.html +17 -0
  614. data/test/webunit/test_site/image.html~ +1 -0
  615. data/test/webunit/test_site/images/x.gif +0 -0
  616. data/test/webunit/test_site/images/y.gif +0 -0
  617. data/test/webunit/test_site/include.cgi~ +10 -0
  618. data/test/webunit/test_site/jscript-0.html +10 -0
  619. data/test/webunit/test_site/jscript-0.html~ +1 -0
  620. data/test/webunit/test_site/jscript-1.html +10 -0
  621. data/test/webunit/test_site/jscript-1.html~ +1 -0
  622. data/test/webunit/test_site/jscript.html +19 -0
  623. data/test/webunit/test_site/jscript.html~ +1 -0
  624. data/test/webunit/test_site/link.html +19 -0
  625. data/test/webunit/test_site/link.html~ +1 -0
  626. data/test/webunit/test_site/multipart.cgi +27 -0
  627. data/test/webunit/test_site/multipart.cgi~ +25 -0
  628. data/test/webunit/test_site/multipart.html +74 -0
  629. data/test/webunit/test_site/multipart.html~ +1 -0
  630. data/test/webunit/test_site/params.html +65 -0
  631. data/test/webunit/test_site/params.html~ +1 -0
  632. data/test/webunit/test_site/redirect.cgi +14 -0
  633. data/test/webunit/test_site/redirect.cgi~ +14 -0
  634. data/test/webunit/test_site/response.html +67 -0
  635. data/test/webunit/test_site/response.html~ +1 -0
  636. data/test/webunit/test_site/simple.cgi +17 -0
  637. data/test/webunit/test_site/simple.cgi~ +17 -0
  638. data/test/webunit/test_site/stock.cgi +36 -0
  639. data/test/webunit/test_site/stock.cgi~ +34 -0
  640. data/test/webunit/test_site/table.html +83 -0
  641. data/test/webunit/test_site/table.html~ +1 -0
  642. data/test/webunit/test_site/test.cgi~ +25 -0
  643. data/test/webunit/test_table.rb +70 -0
  644. data/test/webunit/test_utils.rb +107 -0
  645. data/test/wiki/test.history.rb +277 -0
  646. data/test/wiki/test.history.rb~ +254 -0
  647. data/test/wiki/test.illustration_page.rb +287 -0
  648. data/test/wiki/test.illustration_page.rb~ +287 -0
  649. data/test/wiki/test.linker.rb +197 -0
  650. data/test/wiki/test.tarpit.rb +40 -0
  651. data/test/wiki/test.wiki.rb +295 -0
  652. data/test/wiki/test.wiki.rb~ +295 -0
  653. data/test/wikitestroot/big_image.jpg +0 -0
  654. data/test/wikitestroot/mime.types +483 -0
  655. data/test/wikitestroot/test_upload.gif +0 -0
  656. data/vandals.test.txt +3 -0
  657. metadata +768 -0
@@ -0,0 +1,317 @@
1
+ class FormReader #:nodoc: all
2
+ attr_accessor :html
3
+ alias :body :html
4
+ attr_reader :url
5
+ attr_accessor :forms
6
+ def initialize( html )
7
+ @html = html
8
+ @parsed = nil
9
+ @url = ""
10
+ end
11
+
12
+ def get_content
13
+ html
14
+ end
15
+
16
+ def forms
17
+ @forms ||= { }
18
+ end
19
+
20
+ def [] (key)
21
+ # ugly ugly ugly
22
+ form_elements( key )
23
+ forms[key]
24
+ end
25
+
26
+ def form_elements( name )
27
+ unless( forms[name] )
28
+ html_tree.get_elements("form").each{ |form|
29
+ if (name == form.attribute("name"))
30
+ forms[name] ||= FormElements.new
31
+
32
+ forms[name].action = form.attribute("action")
33
+
34
+ form.get_elements("input").each{ |e|
35
+ if ["text","hidden","submit","password","file"].include? e.attribute("type") or e.attribute("type").nil?
36
+ forms[name].push_text( e.attribute("name"),
37
+ Web.unescape(e.attribute("value")) || "" )
38
+ elsif e.attribute("type") == "checkbox"
39
+ # boolean checkboxes
40
+ # - assumed if there is no value
41
+ if (e.attribute("value") == "" || e.attribute("value").nil?)
42
+ forms[name].push( e.attribute("name"),
43
+ if (e.attribute("checked"))
44
+ true
45
+ else
46
+ false
47
+ end )
48
+ else
49
+ # multi select checkboxes
50
+ select = forms[name].find_select( e.attribute("name") )
51
+ select.multiple = true
52
+ select.push_option(e)
53
+ end
54
+ elsif e.attribute("type") == "radio"
55
+ select = forms[name].find_select( e.attribute("name") )
56
+ select.multiple = false
57
+ select.push_option(e)
58
+ elsif e.attribute("type") == "file"
59
+ end
60
+ }
61
+ form.get_elements("textarea").each{ |e|
62
+ forms[name].push_text e.attribute("name"), e.content.to_s.strip
63
+ }
64
+ form.get_elements("select").each { |e|
65
+ select = Select.new
66
+ select.multiple = e.attribute("multiple") != nil
67
+ e.get_elements("option").each{ |option|
68
+ select.shift_option( option )
69
+ }
70
+ forms[name].push_select e.attribute("name"), select
71
+ }
72
+ end
73
+ }
74
+ end
75
+ forms[name]
76
+ end
77
+
78
+ def get_fields( name )
79
+ form_elements(name).get_fields
80
+ end
81
+
82
+ def get_options( name )
83
+ form_elements(name).get_options
84
+ end
85
+
86
+ def html_tree
87
+ unless (@html_tree)
88
+ p = HTMLTree::Parser.new(true, false)
89
+ p.feed get_content
90
+ @html_tree = p.tree
91
+ end
92
+ @html_tree
93
+ end
94
+
95
+
96
+ def merge_fields( name, edited_fields )
97
+ form_elements(name).merge_fields(edited_fields)
98
+ end
99
+
100
+ class Option
101
+ attr_accessor :value, :selected
102
+ def initialize( value, selected )
103
+ @value = value; @selected = selected
104
+ end
105
+ end
106
+
107
+ class Select
108
+ attr_accessor :options, :multiple
109
+ def initialize
110
+ @options = Array.new
111
+ @multiple = false
112
+ end
113
+
114
+ def shift_option( option )
115
+ options.unshift(make_option_from_element(option))
116
+ end
117
+
118
+ def push_option( option )
119
+ options.push(make_option_from_element(option))
120
+ end
121
+
122
+ def make_option_from_element( element )
123
+ value = element.attribute("value")
124
+ unless value
125
+ value = element.content.to_s
126
+ value.gsub!( /<[^>]*>/, "" )
127
+ value.strip!
128
+ end
129
+ Option.new( value,
130
+ element.attribute("selected") || \
131
+ element.attribute("checked") )
132
+ end
133
+
134
+ def each
135
+ options.each{ |option|
136
+ yield option.value if option.selected
137
+ }
138
+ end
139
+
140
+ include Enumerable
141
+
142
+ def == other
143
+ if other.kind_of?(String) && self.to_a.length == 1
144
+ other == self.to_a[0]
145
+ else
146
+ other == self.to_a
147
+ end
148
+ end
149
+
150
+ # these functions are the interface for assert_includes
151
+ # we delegate to the array... but also answer to the options hash
152
+ def has_key?(index)
153
+ self.to_a.has_key?(index)
154
+ end
155
+
156
+ def __index(key)
157
+ self.to_a.__index(key)
158
+ end
159
+
160
+ def compare_includes? haystack, prefix=[]
161
+ self.to_a.compare_includes? haystack, prefix
162
+ end
163
+
164
+ end
165
+
166
+ class FormElements
167
+ attr_reader :fields
168
+ attr_accessor :action
169
+
170
+ def initialize
171
+ @fields = {}
172
+ end
173
+
174
+ def get_fields
175
+ crushedFields = { }
176
+ @fields.each{ |k,v|
177
+ v = v.collect { |v1|
178
+ if v1.kind_of? Select
179
+ v1.to_a.sort
180
+ else
181
+ v1
182
+ end
183
+ }.flatten
184
+ crushedFields[k] = v
185
+ }
186
+ Web::Testing::MultiHashTree.new(crushedFields).fields
187
+ #crushedFields
188
+ end
189
+
190
+ def get_options
191
+ all_options = { }
192
+ @fields.each{ |k,v|
193
+ v.each { |field|
194
+ if (field.kind_of? Select)
195
+ all_options[k] = field.options.collect{ |o|
196
+ o.value
197
+ }
198
+ end
199
+ }
200
+ }
201
+ all_options
202
+ end
203
+
204
+ def merge_fields( edited_fields )
205
+ merged = Marshal.load( Marshal.dump( @fields ) )
206
+
207
+ edited_fields.each{ |k,v|
208
+ # normalize inputs
209
+ k = k.to_s
210
+ v = [v] unless v.kind_of? Array
211
+
212
+ # guard against errors
213
+ if merged[k].nil?
214
+ raise Web::Testing::FieldNotFoundException.new( "Element named #{k} not present on form" )
215
+ end
216
+
217
+ if (v.size > merged[k].size)
218
+ raise FormMergeError.new( "Only #{merged[k].size} elements on form; " +
219
+ "Can't merge with #{v.size} new values" )
220
+ end
221
+
222
+ v.each_with_index{ |v, i|
223
+ pristine = @fields[k][i]
224
+ target = merged[k][i]
225
+
226
+ if (pristine.kind_of? Select)
227
+ # guard against improperly submitted values
228
+ unless v.kind_of? Hash
229
+ raise FormMergeError.new( "Values for select elements must be merged in by using merge('#{k}'=>select('#{v}')" )
230
+ end
231
+
232
+ # guard against merging multiple
233
+ # values into single select
234
+ if (pristine.multiple == false) & (v.keys.length > 1 )
235
+ raise FormMergeError.new( "Trying to merge multiple [#{ v.inspect }] into single select[#{ k }]" )
236
+ end
237
+
238
+ # selects must be merged with a hash
239
+ v.each{ |value, flag|
240
+ # guard against merging nonexistent option
241
+ unless pristine.options.find{ |e|
242
+ e.value == value
243
+ }
244
+ raise FormMergeError. \
245
+ new("Form doesn't have an option for #{value}")
246
+ end
247
+
248
+
249
+ # turn off everything else for single selects
250
+
251
+ unless target.multiple || flag == false
252
+ target.options.each { |o|
253
+ o.selected = false
254
+ }
255
+ end
256
+
257
+ # merge select fields
258
+ target.options.find{ |e|
259
+ e.value == value
260
+ }.selected = flag
261
+ }
262
+
263
+ else
264
+ merged[k][i] = v
265
+ end
266
+ }
267
+ }
268
+
269
+ # delete unchecked checkboxes
270
+ merged.delete_if{ |k,v|
271
+ v.delete_if{ |e|
272
+ e == false
273
+ }
274
+ v.size == 0
275
+ }
276
+
277
+
278
+
279
+ # flatten out select elements
280
+ merged.each{ |k,v|
281
+ merged[k] = v.collect{ |e|
282
+ if (e.kind_of? Select)
283
+ e.to_a
284
+ else
285
+ e
286
+ end
287
+ }.flatten
288
+ }
289
+ merged
290
+ end
291
+
292
+ def push( name, value )
293
+ @fields[name] ||= []
294
+ @fields[name].push value
295
+ end
296
+
297
+ def find_select( name )
298
+ select = if (fields[name])
299
+ fields[name].find{ |e|
300
+ e.kind_of? Select
301
+ }
302
+ end
303
+ unless select
304
+ select = Select.new
305
+ push name, select
306
+ end
307
+ select
308
+ end
309
+
310
+ alias :push_text :push
311
+ alias :push_select :push
312
+
313
+ end
314
+ end
315
+
316
+ class FormMergeError < Exception #:nodoc: all
317
+ end
@@ -0,0 +1,104 @@
1
+
2
+ class Date # :nodoc:
3
+ def _dump(limit) Marshal.dump([@rjd, @sg], -1) end
4
+ def self._load(str) new0(*Marshal.load(str)) end
5
+ end
6
+
7
+ def encode64(bin) # :nodoc:
8
+ [bin].pack("m").gsub(/\n/,'').gsub(/=/,'.')
9
+ end
10
+
11
+ def decode64(str) # :nodoc:
12
+ str.gsub(/\./,'=').unpack("m")[0]
13
+ end
14
+
15
+
16
+ module Web
17
+ module Request # :nodoc
18
+ def Request.typed_params params
19
+ params2 = {}
20
+ params.collect do |k,v|
21
+ if ! (k =~ /type/)
22
+ if (atype = params["#{k}-type"][0])
23
+ begin
24
+ params2[k] = eval(Web.unescape(atype)).unencode(v[0])
25
+ rescue
26
+ params2[k] = eval(Web.unescape(atype)).unencode(Web.unescape(v[0]))
27
+ end
28
+ else
29
+ if v[0].kind_of? String
30
+ params2[k] = v[0]
31
+ else
32
+ params2[k] = v[0]
33
+ end
34
+ end
35
+ end
36
+ end
37
+ params2
38
+ end
39
+
40
+ def Request.parse_typed_params query_string
41
+ Request.typed_params(Web::Request.parse_query_string(query_string))
42
+ end
43
+ end
44
+
45
+ class << self
46
+ def encode_objects hash
47
+ newhash = {}
48
+ hash.each do |k,v|
49
+ v = ([] << v).flatten
50
+ v.each { |v|
51
+ if v.kind_of?(String)
52
+ newhash[k] = v
53
+ elsif
54
+ newhash[k] = Web.escape(v.encode)
55
+ newhash["#{k}-type"] = v.class.name
56
+ end
57
+ }
58
+ end
59
+ newhash
60
+ end
61
+
62
+ def typed_params
63
+ $__web__cgi.typed_params
64
+ end
65
+ end
66
+
67
+ class CGI
68
+ def typed_params
69
+ Request.typed_params multiple_params
70
+ end
71
+
72
+ def make_query_string params
73
+ params.collect do |a,b|
74
+ "#{a}=#{Web.escape(b)}"
75
+ end.join("&")
76
+ end
77
+
78
+ def query
79
+ if Web["__submitted"] != ""
80
+ aquery = {}
81
+ typed_params.each do |k,v|
82
+ if k =~ /^__q\.(.+)/
83
+ aquery[$1] = v
84
+ end
85
+ end
86
+ aquery
87
+ else
88
+ typed_params
89
+ end
90
+ end
91
+
92
+ def reset_headers
93
+ @headers_sent = false
94
+ end
95
+
96
+ def script_path
97
+ if m = /(.*)\//.match(Web.get_cgi.script_name)
98
+ $1
99
+ else
100
+ ""
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,429 @@
1
+ # HTML parser
2
+
3
+ require 'sgml-parser'
4
+
5
+ class HTMLParser < SGMLParser #:nodoc: all
6
+
7
+ def initialize(formatter, verbose=nil)
8
+ super(verbose)
9
+ @formatter = formatter
10
+ @savedata = nil
11
+ @isindex = 0
12
+ @title = nil
13
+ @base = nil
14
+ @anchor = nil
15
+ @anchorlist = []
16
+ @nofill = 0
17
+ @list_stack = []
18
+ end
19
+
20
+
21
+ def handle_data(data)
22
+ if @savedata
23
+ @savedata = @savedata + data
24
+ else
25
+ if @nofill != 0
26
+ @formatter.add_literal_data(data)
27
+ else
28
+ @formatter.add_flowing_data(data)
29
+ end
30
+ end
31
+ end
32
+
33
+ def save_bgn
34
+ @savedata = ''
35
+ end
36
+
37
+ def save_end
38
+ data = @savedata
39
+ @savedata = nil
40
+ data = '' if data == nil
41
+ if @nofill == 0
42
+ data = data.split.join(" ")
43
+ end
44
+ return data
45
+ end
46
+
47
+ def anchor_bgn(href, name, type)
48
+ @anchor = href
49
+ if @anchor
50
+ @anchorlist << href
51
+ end
52
+ end
53
+
54
+ def anchor_end
55
+ if @anchor
56
+ #handle_data(format "[%d]", @anchorlist.length)
57
+ @anchor = nil
58
+ end
59
+ end
60
+
61
+ def handle_image(src, alt, *args)
62
+ handle_data(alt)
63
+ end
64
+
65
+ def start_html(attrs) end
66
+ def end_html() end
67
+
68
+ def start_head(attrs) end
69
+ def end_head() end
70
+
71
+ def start_body(attrs) end
72
+ def end_body() end
73
+
74
+ def start_title(attrs)
75
+ save_bgn
76
+ end
77
+
78
+ def end_title
79
+ @title = save_end
80
+ end
81
+
82
+ def do_base(attrs)
83
+ for a, v in attrs
84
+ if a == 'href'
85
+ @base = v
86
+ end
87
+ end
88
+ end
89
+
90
+ def do_isindex(attrs)
91
+ @isindex = 1
92
+ end
93
+
94
+ def do_link(attrs)
95
+ end
96
+
97
+ def do_meta(attrs)
98
+ end
99
+
100
+ def do_nextid(attrs) # Deprecated
101
+ end
102
+
103
+
104
+ def start_h1(attrs)
105
+ @formatter.end_paragraph(1)
106
+ @formatter.push_font('h1', 0, 1, 0)
107
+ end
108
+
109
+ def end_h1
110
+ @formatter.end_paragraph(1)
111
+ @formatter.pop_font()
112
+ end
113
+
114
+ def start_h2(attrs)
115
+ @formatter.end_paragraph(1)
116
+ @formatter.push_font('h2', 0, 1, 0)
117
+ end
118
+
119
+ def end_h2
120
+ @formatter.end_paragraph(1)
121
+ @formatter.pop_font()
122
+ end
123
+
124
+ def start_h3(attrs)
125
+ @formatter.end_paragraph(1)
126
+ @formatter.push_font('h3', 0, 1, 0)
127
+ end
128
+
129
+ def end_h3
130
+ @formatter.end_paragraph(1)
131
+ @formatter.pop_font()
132
+ end
133
+
134
+ def start_h4(attrs)
135
+ @formatter.end_paragraph(1)
136
+ @formatter.push_font('h4', 0, 1, 0)
137
+ end
138
+
139
+ def end_h4
140
+ @formatter.end_paragraph(1)
141
+ @formatter.pop_font()
142
+ end
143
+
144
+ def start_h5(attrs)
145
+ @formatter.end_paragraph(1)
146
+ @formatter.push_font('h5', 0, 1, 0)
147
+ end
148
+
149
+ def end_h5
150
+ @formatter.end_paragraph(1)
151
+ @formatter.pop_font()
152
+ end
153
+
154
+ def start_h6(attrs)
155
+ @formatter.end_paragraph(1)
156
+ @formatter.push_font('h6', 0, 1, 0)
157
+ end
158
+
159
+ def end_h6
160
+ @formatter.end_paragraph(1)
161
+ @formatter.pop_font()
162
+ end
163
+
164
+ def do_p(attrs)
165
+ @formatter.end_paragraph(1)
166
+ end
167
+
168
+ def start_pre(attrs)
169
+ @formatter.end_paragraph(1)
170
+ @formatter.push_font(nil, nil, nil, 1)
171
+ @nofill = @nofill + 1
172
+ end
173
+
174
+ def end_pre
175
+ @formatter.end_paragraph(1)
176
+ @formatter.pop_font()
177
+ @nofill = @nofill - 1
178
+ if @nofill < 0 then @nofill = 0 end
179
+ end
180
+
181
+ def start_xmp(attrs)
182
+ start_pre(attrs)
183
+ setliteral('xmp') # Tell SGML parser
184
+ end
185
+
186
+ def end_xmp
187
+ end_pre
188
+ end
189
+
190
+ def start_listing(attrs)
191
+ start_pre(attrs)
192
+ setliteral('listing') # Tell SGML parser
193
+ end
194
+
195
+ def end_listing
196
+ end_pre
197
+ end
198
+
199
+ def start_address(attrs)
200
+ @formatter.end_paragraph(0)
201
+ @formatter.push_font(nil, 1, nil, nil)
202
+ end
203
+
204
+ def end_address
205
+ @formatter.end_paragraph(0)
206
+ @formatter.pop_font()
207
+ end
208
+
209
+ def start_blockquote(attrs)
210
+ @formatter.end_paragraph(1)
211
+ @formatter.push_margin('blockquote')
212
+ end
213
+
214
+ def end_blockquote
215
+ @formatter.end_paragraph(1)
216
+ @formatter.pop_margin()
217
+ end
218
+
219
+ def start_ul(attrs)
220
+ @formatter.end_paragraph(0)
221
+ @formatter.push_margin('ul')
222
+ @list_stack << ['ul', '*', 0]
223
+ end
224
+
225
+ def end_ul
226
+ if @list_stack
227
+ @list_stack.pop
228
+ end
229
+ @formatter.end_paragraph(0)
230
+ @formatter.pop_margin
231
+ end
232
+
233
+ def do_li(attrs)
234
+ @formatter.end_paragraph(0)
235
+ if @list_stack && @list_stack.size > 0
236
+ dummy, label, counter = top = @list_stack[-1]
237
+ top[2] = counter = counter+1
238
+ else
239
+ label, counter = '*', 0
240
+ end
241
+ @formatter.add_label_data(label, counter)
242
+ end
243
+
244
+ def start_ol(attrs)
245
+ @formatter.end_paragraph(0)
246
+ @formatter.push_margin('ol')
247
+ label = '1.'
248
+ for a, v in attrs
249
+ if a == 'type'
250
+ if v.length == 1
251
+ v = v + '.'
252
+ label = v
253
+ end
254
+ end
255
+ end
256
+ @list_stack << ['ol', label, 0]
257
+ end
258
+
259
+ def end_ol
260
+ if @list_stack
261
+ @list_stack.pop
262
+ end
263
+ @formatter.end_paragraph(0)
264
+ @formatter.pop_margin
265
+ end
266
+
267
+ def start_menu(attrs)
268
+ start_ul(attrs)
269
+ end
270
+
271
+ def end_menu
272
+ end_ul
273
+ end
274
+
275
+ def start_dir(attrs)
276
+ start_ul(attrs)
277
+ end
278
+
279
+ def end_dir
280
+ end_ul
281
+ end
282
+
283
+ def start_dl(attrs)
284
+ @formatter.end_paragraph(1)
285
+ @list_stack << ['dl', '', 0]
286
+ end
287
+
288
+ def end_dl
289
+ ddpop(1)
290
+ if @list_stack.length > 0
291
+ @list_stack.pop
292
+ end
293
+ end
294
+
295
+ def do_dt(attrs)
296
+ ddpop
297
+ end
298
+
299
+ def do_dd(attrs)
300
+ ddpop
301
+ @formatter.push_margin('dd')
302
+ @list_stack << ['dd', '', 0]
303
+ end
304
+
305
+ def ddpop(bl=0)
306
+ @formatter.end_paragraph(bl)
307
+ if @list_stack.length > 0
308
+ if @list_stack[-1][0] == 'dd'
309
+ @list_stack.pop
310
+ @formatter.pop_margin
311
+ end
312
+ end
313
+ end
314
+
315
+ def start_cite(attrs) start_i(attrs) end
316
+ def end_cite() end_i end
317
+
318
+ def start_code(attrs) start_tt(attrs) end
319
+ def end_code() end_tt end
320
+
321
+ def start_em(attrs) start_i(attrs) end
322
+ def end_em() end_i end
323
+
324
+ def start_kbd(attrs) start_tt(attrs) end
325
+ def end_kbd() end_tt end
326
+
327
+ def start_samp(attrs) start_tt(attrs) end
328
+ def end_samp() end_tt end
329
+
330
+ def start_strong(attrs) start_b(attrs) end
331
+ def end_strong() end_b end
332
+
333
+ def start_var(attrs) start_i(attrs) end
334
+ def end_var() end_i end
335
+
336
+ def start_i(attrs)
337
+ @formatter.push_font(nil, 1, nil, nil)
338
+ end
339
+ def end_i
340
+ @formatter.pop_font
341
+ end
342
+
343
+ def start_b(attrs)
344
+ @formatter.push_font(nil, nil, 1, nil)
345
+ end
346
+ def end_b
347
+ @formatter.pop_font
348
+ end
349
+
350
+ def start_tt(attrs)
351
+ @formatter.push_font(nil, nil, nil, 1)
352
+ end
353
+ def end_tt
354
+ @formatter.pop_font
355
+ end
356
+
357
+ def start_a(attrs)
358
+ href = nil
359
+ name = nil
360
+ type = nil
361
+ for attrname, value in attrs
362
+ value = value.strip
363
+ if attrname == 'href'
364
+ href = value
365
+ end
366
+ if attrname == 'name'
367
+ name = value
368
+ end
369
+ if attrname == 'type'
370
+ type = value.downcase
371
+ end
372
+ end
373
+ anchor_bgn(href, name, type)
374
+ end
375
+
376
+ def end_a
377
+ anchor_end
378
+ end
379
+
380
+ def do_br(attrs)
381
+ @formatter.add_line_break
382
+ end
383
+
384
+ def do_hr(attrs)
385
+ @formatter.add_hor_rule
386
+ end
387
+
388
+ def do_img(attrs)
389
+ align = nil
390
+ alt = '(image)'
391
+ ismap = nil
392
+ src = nil
393
+ width = 0
394
+ height = 0
395
+ for attrname, value in attrs
396
+ if attrname == 'align'
397
+ align = value
398
+ end
399
+ if attrname == 'alt'
400
+ alt = value
401
+ end
402
+ if attrname == 'ismap'
403
+ ismap = value
404
+ end
405
+ if attrname == 'src'
406
+ src = value
407
+ end
408
+ if attrname == 'width'
409
+ width = Integer(value)
410
+ end
411
+ if attrname == 'height'
412
+ height = Integer(value)
413
+ end
414
+ end
415
+ handle_image(src, alt, ismap, align, width, height)
416
+ end
417
+
418
+ def do_plaintext(attrs)
419
+ start_pre(attrs)
420
+ setnomoretags # Tell SGML parser
421
+ end
422
+
423
+ def unknown_starttag(tag, attrs)
424
+ end
425
+
426
+ def unknown_endtag(tag)
427
+ end
428
+
429
+ end