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,276 @@
1
+ # Copyright:: Copyright(C) 2002 Ned Konz
2
+ # License:: Ruby's License
3
+ # CVS ID:: $Id: stparser.rb,v 1.6 2002/06/04 01:55:59 ned Exp $
4
+
5
+ require 'web/htmlparser/sgml-parser'
6
+ require 'web/htmltools/tags'
7
+
8
+ # This is an SGMLParser subclass that knows about HTML 4.0 rules
9
+ # and can spot empty tags and deal with tags that may have omitted endtags.
10
+ module HTML #:nodoc: all
11
+ class StackingParser < SGMLParser
12
+ # accessors
13
+
14
+ def stack; @tagStack; end
15
+
16
+ def last_tag; @tagStack[-1] || 'html'; end
17
+
18
+ def parent_tag; @tagStack[-2] || 'html'; end
19
+
20
+ def strip_whitespace=(flag); @stripWhitespace = flag; end
21
+
22
+ # input methods
23
+
24
+ # Open and parse the given file.
25
+ def parse_file_named(name)
26
+ File.open(name) { |f|
27
+ while bytes = f.read(65536)
28
+ feed(bytes)
29
+ end
30
+ }
31
+ end
32
+
33
+ # Feed some more data to the parser.
34
+ def feed(string)
35
+ super
36
+ while @saved.size > 0
37
+ saved = @saved
38
+ @saved = ''
39
+ super(saved)
40
+ end
41
+ end
42
+
43
+ # available only to subclasses
44
+ private
45
+
46
+ if $DEBUG
47
+ def dprint(*stuff)
48
+ print((" " * @tagStack.size), stuff) if @verbose
49
+ end
50
+ else
51
+ def dprint(*stuff); end
52
+ end
53
+
54
+ def warn(msg)
55
+ $stderr.print(msg) if @verbose
56
+ end
57
+
58
+ def initialize(verbose=false, strip_white=false)
59
+ super(verbose)
60
+ @tagStack = []
61
+ @saved = ''
62
+ @stripWhitespace = strip_white
63
+ end
64
+
65
+ # handle_data will call this.
66
+ def skip_script(data)
67
+ # is the end of the script in this buffer?
68
+ if m = data.index(%r{</[A-Za-z]})
69
+ @nomoretags = false
70
+ @saved = data[m..-1]
71
+ handle_script(data[0,m]) # call user handler
72
+ else
73
+ handle_script(data)
74
+ end
75
+ end
76
+
77
+ # Unfortunately, sgml-parser calls this and there's important work to do in
78
+ # it. So the user handler has to be named something different.
79
+ def handle_data(data)
80
+ # need to handle scripts
81
+ if last_tag() == 'script' && @nomoretags
82
+ skip_script(data)
83
+ else
84
+ if @stripWhitespace
85
+ begin
86
+ data.strip! if HTML::Tag.named(last_tag()).can_ignore_whitespace
87
+ rescue NoSuchHTMLTagError
88
+ data.strip!
89
+ end
90
+ end
91
+ handle_cdata(data) if data.size > 0 # call user handler
92
+ end
93
+ end
94
+
95
+ def finish_starttag(tag, attrs)
96
+ dprint "*START* #{tag} #{attrs.inspect}\n"
97
+ # dprint "-START- #{tag}\n"
98
+ begin
99
+ unless HTML::Tag.named(last_tag()).can_contain(tag, parent_tag())
100
+ dprint "-INSERT-\n"
101
+ finish_endtag(last_tag())
102
+ end
103
+ rescue NoSuchHTMLTagError
104
+ # hmm.. last_tag was unknown.
105
+ # Assume it doesn't have an optional endtag.
106
+ end
107
+
108
+ push(tag)
109
+
110
+ begin
111
+ if HTML::Tag.named(tag).is_empty_element
112
+ dprint "-EMPTY-\n"
113
+ handle_empty_tag(tag, attrs) # call user handler
114
+ drop_to_tag(tag)
115
+ else
116
+ handle_start_tag(tag, attrs) # call user handler
117
+ end
118
+
119
+ if tag.downcase == 'script'
120
+ @nomoretags = true
121
+ end
122
+ rescue NoSuchHTMLTagError
123
+ # hmm... the start tag is unknown.
124
+ # And we pushed it.
125
+ # If it's empty, we'll get rid of it at the next end tag.
126
+ handle_unknown_tag(tag, attrs)
127
+ end
128
+ end
129
+
130
+ # return true if tag is not extra
131
+ def drop_to_tag(tag)
132
+ dropped = @tagStack.size - (@tagStack.rindex(tag.downcase) || @tagStack.size)
133
+ if dropped == 0 # got an end tag but we haven't seen start tag?
134
+ handle_extra_end_tag(tag) # call user handler
135
+ return false
136
+ end
137
+ dropped.times do
138
+ begin
139
+ # detect missing end tag
140
+ if last_tag != tag and ! HTML::Tag.named(last_tag).can_omit_end_tag
141
+ handle_missing_end_tag(last_tag) # call user handler
142
+ end
143
+ rescue NoSuchHTMLTagError
144
+ # oops, don't recognize last_tag.
145
+ end
146
+ pop
147
+ end
148
+ return true
149
+ end
150
+
151
+ def finish_endtag(tag)
152
+ dprint "*END* #{tag}\n"
153
+ if drop_to_tag(tag)
154
+ dprint "-END- #{tag} #{@tagStack.inspect}\n"
155
+ handle_end_tag(tag) # call user handler
156
+ end
157
+ end
158
+
159
+ def push(tag)
160
+ @tagStack.push(tag.downcase)
161
+ dprint "*PUSH* #{tag} => #{@tagStack.inspect}\n"
162
+ end
163
+
164
+ def pop
165
+ tag = @tagStack.pop
166
+ dprint "*POP* #{tag} => #{@tagStack.inspect}\n"
167
+ tag
168
+ end
169
+
170
+ def unknown_charref(name)
171
+ handle_unknown_character(name)
172
+ end
173
+
174
+ def unknown_entityref(name)
175
+ handle_unknown_entity(name)
176
+ end
177
+
178
+ # callbacks: can be overridden in subclasses
179
+
180
+ def handle_start_tag(tag, attrs)
181
+ end
182
+
183
+ def handle_end_tag(tag)
184
+ end
185
+
186
+ # by default, an empty tag is handled as a start tag
187
+ # with an inserted end tag.
188
+ def handle_empty_tag(tag, attrs)
189
+ handle_start_tag(tag, attrs)
190
+ handle_end_tag(tag)
191
+ end
192
+
193
+ def handle_unknown_tag(tag, attrs)
194
+ warn("warning: unknown tag #{tag}\n")
195
+ end
196
+
197
+ def handle_missing_end_tag(tag)
198
+ warn("warning: missing end tag </#{tag}>\n")
199
+ end
200
+
201
+ def handle_extra_end_tag(tag)
202
+ warn("warning: extra end tag </#{tag}>\n")
203
+ end
204
+
205
+ def handle_cdata(data)
206
+ end
207
+
208
+ def handle_script(data)
209
+ end
210
+
211
+ def handle_unknown_character(name)
212
+ end
213
+
214
+ def handle_unknown_entity(name)
215
+ end
216
+
217
+ # call super if you want the data stripped
218
+ def handle_comment(data)
219
+ data.strip! if @stripWhitespace
220
+ end
221
+
222
+ def handle_special(data)
223
+ end
224
+
225
+ end
226
+ end
227
+
228
+ # test script
229
+ if $0 == __FILE__
230
+ $stdout.sync = true
231
+
232
+ class TestStackingParser < HTML::StackingParser
233
+ def dump_stack
234
+ stack.each { |ea| print ea, '/' }
235
+ end
236
+ def handle_start_tag(tag, attrs)
237
+ print("START: #{tag} #{attrs.inspect}\n")
238
+ end
239
+ def handle_end_tag(tag)
240
+ # print("END: #{tag}\n")
241
+ end
242
+ def handle_empty_tag(tag, attrs)
243
+ # print("EMPTY: #{tag} #{attrs.inspect}\n")
244
+ end
245
+ def handle_cdata(data)
246
+ # print("DATA: #{data.size} chars\n")
247
+ if last_tag() != 'style'
248
+ str = data.strip
249
+ if str.size > 0
250
+ dump_stack
251
+ print(str.inspect, "\n")
252
+ end
253
+ end
254
+ end
255
+ def handle_script(data)
256
+ # print("SCRIPT: #{data.size} chars\n")
257
+ end
258
+ def handle_unknown_character(name)
259
+ print("UNKC: #{name}\n")
260
+ end
261
+ def handle_unknown_entity(name)
262
+ print("UNKE: #{name}\n")
263
+ end
264
+ def handle_comment(data)
265
+ super
266
+ print("COMMENT: #{data}\n")
267
+ end
268
+ def handle_special(data)
269
+ print("SPECIAL: #{data}\n")
270
+ end
271
+ end
272
+
273
+ $DEBUG = false
274
+ p = TestStackingParser.new(true)
275
+ p.parse_file_named(ARGV[0] || 'ebay.html')
276
+ end
@@ -0,0 +1,286 @@
1
+ # This encodes the knowledge of HTML 4.0 tags for a parser.
2
+ # It knows about block vs. inline tags, empty tags, and optionally
3
+ # omitted end tags.
4
+ #
5
+ # Copyright:: Copyright(C) 2002 Ned Konz <ned@bike-nomad.com>
6
+ # License:: Ruby's license
7
+ # CVS ID:: $Id: tags.rb,v 1.7 2002/06/04 01:55:59 ned Exp $
8
+
9
+ # This is an error raised by <tt>HTML::Tag.named()</tt> when a tag doesn't exist.
10
+ class NoSuchHTMLTagError < RuntimeError #:nodoc:
11
+ end
12
+
13
+ # This is the base class for all the HTML tag classes.
14
+ module HTML #:nodoc: all
15
+
16
+ class Tag
17
+
18
+ # tag_name:: a String, the name of the tag
19
+ # can_omit:: a Boolean, true if end tag is optional
20
+ def initialize(tag_name, can_omit)
21
+ @name = tag_name.downcase
22
+ @can_omit_end = can_omit
23
+ end
24
+
25
+ # Return my tag name.
26
+ def name; @name; end
27
+
28
+ # Return true if my end tag can be omitted.
29
+ def can_omit_end_tag; @can_omit_end; end
30
+
31
+ # Return true if I am a block element.
32
+ def is_block_element; false; end
33
+
34
+ # Return true if I am an inline element.
35
+ def is_inline_element; false; end
36
+
37
+ # Return true if I am an empty element.
38
+ def is_empty_element; false; end
39
+
40
+ # Return true if I can contain <tt>tag</tt> if my parent is of type <tt>parent</tt>.
41
+ # tag:: tag name, a String
42
+ # parent:: parent tag name, a String.
43
+ def can_contain(tag, parent); false; end
44
+
45
+ # Return true if whitespace within me can be omitted (ignoring browser
46
+ # bugs)
47
+ def can_ignore_whitespace; true; end
48
+ end
49
+
50
+ # This represents an HTML block element.
51
+ class BlockTag < Tag
52
+ def is_block_element; true; end
53
+
54
+ # Blocks can contain anything, so return true.
55
+ def can_contain(tag, parent); true; end
56
+ end
57
+
58
+ # This represents an HTML inline element.
59
+ class InlineTag < Tag
60
+ def is_inline_element; true; end
61
+
62
+ # Inlines can only contain other inlines.
63
+ def can_contain(tag, parent)
64
+ Tag.named(tag).is_inline_element
65
+ end
66
+ end
67
+
68
+ # This represents an HTML element that can be regarded as either a block
69
+ # or an inline element..
70
+ class BlockOrInlineTag < InlineTag
71
+
72
+ def is_block_element; true; end
73
+
74
+ # If used as inline elements (e.g., within another inline element or a P),
75
+ # these elements should not contain any block-level elements.
76
+ def can_contain(tag, parent)
77
+ return ((parent.downcase == 'p' \
78
+ or Tag.named(parent).is_inline_element) \
79
+ and ! Tag.named(tag).is_block_element)
80
+ end
81
+ end
82
+
83
+ # This represents an HTML tag that never has an end tag.
84
+ class EmptyTag < Tag
85
+ def is_empty_element; true; end
86
+ def is_inline_element; true; end
87
+ def can_contain(tag, parent); false; end
88
+ end
89
+
90
+ # This block initializes the tag lookup table.
91
+ class Tag
92
+ @table = Hash.new
93
+
94
+ # Add the given tag to the tag lookup table.
95
+ #
96
+ # This can be called by user code to add otherwise unknown tags to the
97
+ # table.
98
+ #
99
+ # name:: the tag name, a String.
100
+ # is_block:: true if I am a block element.
101
+ # is_inline:: true if I am an inline element.
102
+ # is_empty:: true if I am an empty element.
103
+ # can_omit:: true if my end tag can be omitted.
104
+ def Tag.add_tag(name, is_block, is_inline, is_empty, can_omit)
105
+ @table[ name.upcase ] = @table[ name.downcase ] = \
106
+ if is_empty
107
+ EmptyTag.new(name, true)
108
+ elsif is_block
109
+ if is_inline
110
+ BlockOrInlineTag.new(name, can_omit)
111
+ else
112
+ BlockTag.new(name, can_omit)
113
+ end
114
+ else
115
+ InlineTag.new(name, can_omit)
116
+ end
117
+ end
118
+
119
+ # Return an Tag with the given name, or raise a
120
+ # NoSuchHTMLTagError.
121
+ def Tag.named(tagname)
122
+ @table[ tagname ] || raise(NoSuchHTMLTagError.exception(tagname))
123
+ end
124
+
125
+ # Block Inline Empty can_omit_end
126
+ [
127
+ [ 'A', false, true, false, false ], # Anchor
128
+ [ 'ABBR', false, true, false, false ], # Abbreviation
129
+ [ 'ACRONYM', false, true, false, false ], # Acronym
130
+ [ 'ADDRESS', true, false, false, false ], # Address
131
+ [ 'APPLET', true, true, false, false ], # Java applet
132
+ [ 'AREA', true, false, true, true ], # Image map region
133
+ [ 'B', false, true, false, false ], # Bold text
134
+ [ 'BASE', false, false, true, true ], # Document base URI
135
+ [ 'BASEFONT', false, true, true, true ], # Base font change
136
+ [ 'BDO', false, true, false, false ], # Bi_di override
137
+ [ 'BIG', false, true, false, false ], # Large text
138
+ [ 'BLOCKQUOTE', true, false, false, false ], # Block quotation
139
+ [ 'BODY', true, false, false, false ], # Document body
140
+ [ 'BR', false, true, true, true ], # Line break
141
+ [ 'BUTTON', true, true, false, false ], # Button
142
+ [ 'CAPTION', false, true, false, false ], # Table caption
143
+ [ 'CENTER', false, true, false, false ], # Centered block
144
+ [ 'CITE', false, true, false, false ], # Citation
145
+ [ 'CODE', false, true, false, false ], # Computer code
146
+ [ 'COL', false, false, true, true ], # Table column
147
+ [ 'COLGROUP', true, false, false, true ], # Table column group
148
+ [ 'DD', true, false, false, true ], # Definition description
149
+ [ 'DEL', true, true, false, false ], # Deleted text
150
+ [ 'DFN', false, true, false, false ], # Defined term
151
+ [ 'DIR', true, false, false, false ], # Directory list
152
+ [ 'DIV', true, false, false, false ], # Generic block-level container
153
+ [ 'DL', true, false, false, false ], # Definition list
154
+ [ 'DT', false, true, false, true ], # Definition term
155
+ [ 'EM', false, true, false, false ], # Emphasis
156
+ [ 'FIELDSET', true, false, false, false ], # Form control group
157
+ [ 'FONT', false, true, false, false ], # Font change
158
+ [ 'FORM', true, false, false, false ], # Interactive form
159
+ [ 'FRAME', false, false, true, true ], # Frame
160
+ [ 'FRAMESET', true, false, false, false ], # Frameset
161
+ [ 'H1', true, false, false, false ], # Level-one heading
162
+ [ 'H2', true, false, false, false ], # Level-two heading
163
+ [ 'H3', true, false, false, false ], # Level-three heading
164
+ [ 'H4', true, false, false, false ], # Level-four heading
165
+ [ 'H5', true, false, false, false ], # Level-five heading
166
+ [ 'H6', true, false, false, false ], # Level-six heading
167
+ [ 'HEAD', true, false, false, false ], # Document head
168
+ [ 'HR', false, true, true, true ], # Horizontal rule
169
+ [ 'HTML', true, false, false, false ], # HTML document
170
+ [ 'I', false, true, false, false ], # Italic text
171
+ [ 'IFRAME', true, true, false, false ], # Inline frame
172
+ [ 'IMG', false, true, true, true ], # Inline image
173
+ [ 'INPUT', false, true, true, true ], # Form input
174
+ [ 'INS', true, true, false, false ], # Inserted text
175
+ [ 'ISINDEX', false, true, true, true ], # Input prompt
176
+ [ 'KBD', false, true, false, false ], # Text to be input
177
+ [ 'LABEL', false, true, false, false ], # Form field label
178
+ [ 'LEGEND', false, true, false, false ], # Fieldset caption
179
+ [ 'LI', true, false, false, true ], # List item
180
+ [ 'LINK', true, false, false, false ], # Document relationship
181
+ [ 'MAP', true, true, false, false ], # Image map
182
+ [ 'MENU', true, false, false, false ], # Menu list
183
+ [ 'META', false, true, true, true ], # Metadata
184
+ [ 'NOFRAMES', true, false, false, false ], # Frames alternate content
185
+ [ 'NOSCRIPT', true, false, false, false ], # Alternate script content
186
+ [ 'OBJECT', true, true, false, false ], # Object
187
+ [ 'OL', true, false, false, false ], # Ordered list
188
+ [ 'OPTGROUP', true, false, false, false ], # Option group
189
+ [ 'OPTION', true, false, false, false ], # Menu option
190
+ [ 'P', true, false, false, true ], # Paragraph
191
+ [ 'PARAM', false, true, true, true ], # Object parameter
192
+ [ 'PRE', true, false, false, false ], # Preformatted text
193
+ [ 'Q', false, true, false, false ], # Short quotation
194
+ [ 'S', false, true, false, false ], # Strike-through text
195
+ [ 'SAMP', false, true, false, false ], # Sample output
196
+ [ 'SCRIPT', true, true, false, false ], # Client-side script
197
+ [ 'SELECT', true, false, false, false ], # Option selector
198
+ [ 'SMALL', false, true, false, false ], # Small text
199
+ [ 'SPAN', false, true, false, false ], # Generic inline container
200
+ [ 'STRIKE', false, true, false, false ], # Strike-through text
201
+ [ 'STRONG', false, true, false, false ], # Strong emphasis
202
+ [ 'STYLE', true, false, false, false ], # Embedded style sheet
203
+ [ 'SUB', false, true, false, false ], # Subscript
204
+ [ 'SUP', false, true, false, false ], # Superscript
205
+ [ 'TABLE', true, false, false, false ], # Table
206
+ [ 'TBODY', true, false, false, false ], # Table body
207
+ [ 'TD', true, false, false, true ], # Table data cell
208
+ [ 'TEXTAREA', false, true, false, false ], # Multi-line text input
209
+ [ 'TFOOT', true, false, false, true ], # Table foot
210
+ [ 'TH', true, false, false, true ], # Table header cell
211
+ [ 'THEAD', true, false, false, true ], # Table head
212
+ [ 'TITLE', true, false, false, false ], # Document title
213
+ [ 'TR', true, false, false, true ], # Table row
214
+ [ 'TT', false, true, false, false ], # Teletype text
215
+ [ 'U', false, true, false, false ], # Underlined text
216
+ [ 'UL', true, false, false, false ], # Unordered list
217
+ [ 'VAR', false, true, false, false ], # Variable
218
+ ].each { |a| add_tag(*a) }
219
+
220
+ # EXCEPTIONS TODO
221
+ # A, LABEL can't contain itself
222
+ # several things (fonts, etc) can't be in PRE
223
+ # SELECT can only have OPTGROUP or OPTION
224
+ # TEXTAREA, OPTION only contains plain text
225
+ # APPLET and OBJECT has PARAM+ followed by block and/or inline
226
+ # BUTTON can't contain:
227
+ # A, INPUT, SELECT, TEXTAREA, LABEL, BUTTON, or IFRAME
228
+ # nor FORM, ISINDEX, and FIELDSET
229
+ # IFRAME can only contain block elems if parent can
230
+ # MAP can contain block+ *xor* AREA+
231
+ # SCRIPT only contains a SCRIPT (that is, until /<\/[A-Za-z]/)
232
+ # BODY must be in HTML or NOFRAMES
233
+ # COL can only be in COLGROUP or TABLE
234
+ # COLGROUP has only COL*, and can only be in TABLE
235
+ # DIR, MENU can only contain LI+, none of which may contain block elems
236
+ # DL must contain (DT|DD)+
237
+ # DT and DD are only allowed in DL
238
+ # FIELDSET contains LEGEND, (block|inline)*
239
+ # FRAMESET contains (FRAMESET|FRAME), plus NOFRAMES and must be in HTML
240
+ # H# can only be contained in block elems, but only contain inlines.
241
+ # HEAD must only contain TITLE, BASE?, ISINDEX?, SCRIPT* STYLE* META* LINK*
242
+ # OBJECT* HEAD must be in HTML
243
+ # HTML is top-level and can only contain HEAD, BODY, or HEAD, FRAMESET
244
+ # LI can contain blocks except when inside DIR or MENU
245
+ # LI can only be inside OL, UL, DIR, MENU
246
+ # OL, UL can only contain LI+
247
+ # OPTGROUP contains OPTION+
248
+ # P can only contain inlines. However, it is a block-level elem.
249
+ # PRE can only contain inlines except IMG, OBJECT, APPLET, BIG, SMALL, SUB,
250
+ # SUP, FONT, BASEFONT
251
+
252
+ # tags with optional omitted endtags and their allowed contents:
253
+ # anchor matches at beginning and end
254
+ {
255
+ 'AREA' => '(?!AREA)[A-Z]+',
256
+ 'COLGROUP' => 'COL',
257
+ 'DD' => '(?!D[DT]$)[A-Z]+',
258
+ 'DT' => '(?!D[DT]$)[A-Z]+',
259
+ 'MAP' => 'AREA',
260
+ 'P' => '(?!P$)[A-Z]+',
261
+ 'TD' => '(?!T[HDR]$)[A-Z]+',
262
+ 'TFOOT' => 'TR',
263
+ 'TH' => '(?!T[HDR]$)[A-Z]+',
264
+ 'THEAD' => 'TR',
265
+ 'TR' => 'T[HD]',
266
+ }.each_pair { |tagname, pattern|
267
+ eval <<EOM
268
+ class << named(tagname) # :nodoc:
269
+ def can_contain(tag, parent)
270
+ (/\\A#{pattern}\\z/i =~ tag) == 0
271
+ end
272
+ end
273
+ EOM
274
+ }
275
+
276
+ class << named('TEXTAREA') # :nodoc:
277
+ def can_ignore_whitespace; false; end
278
+ end
279
+ class << named('PRE') # :nodoc:
280
+ def can_ignore_whitespace; false; end
281
+ end
282
+ class << named('OPTION') # :nodoc:
283
+ def can_ignore_whitespace; false; end
284
+ end
285
+ end
286
+ end