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,124 @@
1
+ =begin
2
+ = Web::Unit::HtmlElem
3
+ Copyright(C) 2001 yuichi TAKAHASHI
4
+ $Id: htmlelem.rb,v 1.1.1.1 2003/01/21 11:50:40 yuichi Exp $
5
+ =end
6
+
7
+ module Web
8
+ module Unit #:nodoc: all
9
+
10
+ class HtmlElem
11
+
12
+ attr_reader :tag, :data, :attrs, :children, :array, :name
13
+
14
+ def initialize( tag, ah={} )
15
+ @children = []
16
+ @tag = tag
17
+ @attrs = ah
18
+ @data = ''
19
+ @array = []
20
+ @name = ah['name'] if ah
21
+ end
22
+
23
+ def append( data )
24
+ if data.is_a?( HtmlElem )
25
+ @children << data
26
+ else
27
+ @data << data
28
+ end
29
+ @array << data
30
+ end
31
+
32
+ def extract
33
+ data = ''
34
+ @array.each do |e|
35
+ if e.is_a?( String )
36
+ data << " #{e} "
37
+ elsif e.is_a?( HtmlElem )
38
+ data << e.extract
39
+ end
40
+ end
41
+ data.squeeze( ' ' ).strip
42
+ end
43
+
44
+ def inspect
45
+ return "<#toplevel>" if @tag == nil
46
+ as = ''
47
+ attrs.each{ |k,v| as << " #{k}=#{v}" }
48
+ "<#{@tag+as}>:#{data}:"
49
+ end
50
+
51
+ =begin
52
+ --- HtmlElem#find(tag)
53
+ return an Array of HtmlElems, which have ((|tag|)).
54
+ =end
55
+
56
+ def find( tag )
57
+ a = []
58
+ a.push self if @tag == tag
59
+ @children.each do |c|
60
+ a = a + c.find( tag )
61
+ end
62
+ a
63
+ end
64
+
65
+ =begin
66
+ --- HtmlElem#search(data)
67
+ return an Array of HtmlElems, which have ((|data|)).
68
+ =end
69
+
70
+ def search( data )
71
+ a = []
72
+ a.push self if @data == data
73
+ @children.each do |c|
74
+ a = a + c.search( data )
75
+ end
76
+ a
77
+ end
78
+
79
+ =begin
80
+ --- HtmlElem#readlink(str)
81
+ return a Response, gotten with reading a Link have ((|str|)).
82
+ raise ElemNotFound exception, when no Links found.
83
+ =end
84
+
85
+ def readlink( str )
86
+ self.find( 'a' ).each do |link|
87
+ return link.read if link.data == str
88
+ end
89
+ raise ElemNotFound, "no Links have '#{str}' as data."
90
+ end
91
+
92
+ =begin
93
+ --- HtmlElem#has?(elem)
94
+ return true, when self have ((|elem|)) as child.
95
+ otherwise, return false.
96
+ ((|elem|)) should be a HtmlElem or a String.
97
+ =end
98
+
99
+ def has?( elem )
100
+ if elem.kind_of?( HtmlElem )
101
+ @children.include?( elem )
102
+ elsif elem.instance_of?( String )
103
+ @array.include?( elem )
104
+ else
105
+ false
106
+ end
107
+ end
108
+
109
+ =begin
110
+ --- HtmlElem#print(indent='') -- FOR TEST USE ONLY
111
+ print tree structure, from self to lower.
112
+ =end
113
+
114
+ def print( indent='' ) # not tested :-(
115
+ puts indent + inspect
116
+ @children.each do |c|
117
+ c.print( indent + ' ' )
118
+ end
119
+ end
120
+
121
+ end # class HtmlElem
122
+
123
+ end # module Web::Unit
124
+ end
@@ -0,0 +1,116 @@
1
+ =begin
2
+
3
+ = HTML Repair Library
4
+
5
+ htmlrepair.rb
6
+
7
+ Version 1.0.1
8
+
9
+ Copyright (C) 2000 MoonWolf Development
10
+
11
+ MoonWolf <moonwolf-ruby@moonwolf.com>
12
+
13
+ ��ά���줿��λ�������䤦��
14
+
15
+ == �Ȥ���
16
+
17
+ obj = HTMLSplit.new(html)
18
+ obj.repair
19
+
20
+ =end
21
+
22
+ require "web/unit/htmlsplit"
23
+ module Web
24
+ module Unit
25
+ class HTMLSplit #:nodoc: all
26
+
27
+ PARENTTAG = {
28
+ 'p' => %w(body table),
29
+ 'a' => %w(body),
30
+ 'thead' => %w(table),
31
+ 'tfoot' => %w(table),
32
+ 'tbody' => %w(table),
33
+ 'tr' => %w(table thead tfoor tbody),
34
+ 'td' => %w(tr),
35
+ 'th' => %w(tr),
36
+ 'li' => %w(ol ul),
37
+ 'dt' => %w(dl),
38
+ 'dd' => %w(dl),
39
+ 'col' => %w(colgroup),
40
+ 'param' => %w(applet),
41
+ 'area' => %w(map),
42
+ 'input' => %w(form),
43
+ 'textarea' => %w(form),
44
+ 'button' => %w(form),
45
+ 'select' => %w(form),
46
+ 'keygen' => %w(form),
47
+ 'label' => %w(form),
48
+ 'fieldset' => %w(form),
49
+ 'legend' => %w(fieldset),
50
+ 'option' => %w(select),
51
+ }
52
+
53
+ def repair
54
+ tag = []
55
+ doc = []
56
+ @document.each {|e|
57
+ case e
58
+ when EmptyElementTag
59
+ doc.push e
60
+ when StartTag
61
+ if PARENTTAG[e.name] && (a = tag.rindex(e.name))
62
+ #�ͥ��Ȥ���λ�����ξ�ά�������å�
63
+ flag = true
64
+ tag[a..-1].each {|t|
65
+ if PARENTTAG[e.name].include?(t)
66
+ #����ʥͥ���
67
+ flag = false
68
+ break
69
+ end
70
+ }
71
+ if flag
72
+ #��ά���줿��λ���������
73
+ while t=tag.pop
74
+ c = EndTag.new(t)
75
+ doc.push c
76
+ if t==e.name
77
+ break
78
+ end
79
+ end
80
+ end
81
+ else
82
+ end
83
+ #
84
+ tag.push e.name
85
+ doc.push e
86
+ when EndTag
87
+ if tag.include?(e.name)
88
+ while t = tag.pop
89
+ if t==e.name
90
+ break
91
+ else
92
+ c = EndTag.new(t)
93
+ doc.push c
94
+ end
95
+ end
96
+ else
97
+ end
98
+ doc.push e
99
+ when CharacterData
100
+ doc.push e
101
+ when Declaration
102
+ doc.push e
103
+ when Comment
104
+ doc.push e
105
+ else
106
+ doc.push e
107
+ end
108
+ }
109
+ while t = tag.pop
110
+ doc.push EndTag.new(t)
111
+ end
112
+ @document = doc
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,840 @@
1
+ module Web
2
+ module Unit #:nodoc: all
3
+
4
+ =begin Start of Document
5
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
6
+ <html>
7
+ <head>
8
+ <title>htmlsplit.rb</title>
9
+ <link href="rubydoc.css" rel="stylesheet">
10
+ </head>
11
+ <body>
12
+ | <a href="./">���</a> |
13
+ <h1>HTML Split Library</h1>
14
+ <p> HTML���ɤ߽񤭤��롣 �ɤ߹����ʸ��ϥ�����ʸ���������ˤʤ롣 to_s�᥽�åɤ�HTML���᤹���Ȥ�����롣</p>
15
+ <h2>���饹����</h2>
16
+ <table bgcolor="#FFFFFF" border="1">
17
+ <tr><td><a href="#HTMLSplit">HTMLSplit</a><td>HTML�򥿥���ʸ���ǡ�����ʬ�䤹�롣
18
+ <tr>
19
+ <td><a href="#CharacterData">CharacterData</a>
20
+ <td>ʸ���ǡ���
21
+ <tr><td><a href="#EmptyElementTag">EmptyElementTag</a>
22
+ <td>�����ǤΥ���
23
+ <tr>
24
+ <td><a href="#StartTag">StartTag</a>
25
+ <td>���ϥ���
26
+ <tr>
27
+ <td><a href="#EndTag">EndTag</a>
28
+ <td>�����
29
+ <tr>
30
+ <td><a href="#Comment">Comment</a>
31
+ <td>������
32
+ <tr>
33
+ <td><a href="#Declaration">Declaration</a>
34
+ <td>���(DOCTYPE)
35
+ <tr>
36
+ <td><a href="#SSI">SSI</a>
37
+ <td>SSI��
38
+ <tr>
39
+ <td><a href="#ERuby">ERuby</a>
40
+ <td>eRuby/ASP/JSP������ץȢ�
41
+ <tr>
42
+ <td><a href="#PHP">PHP</a>
43
+ <td>PHP������ץȢ�
44
+ </table>
45
+ ��������°���ͤʤɤ������ޤ줿������ץȤ�ǧ���Ǥ��ޤ���
46
+ <h2>�Ȥ��� </h2>
47
+ <h3>�ɤ߹���</h3>
48
+ <pre class="Exception"><samp>#!/usr/bin/ruby
49
+ require "htmlsplit"
50
+
51
+ obj = HTMlSplit.new(ARGF.read)</samp></pre>
52
+ <h3>����</h3>
53
+ <pre>
54
+ obj.document.each {|e|
55
+ print e.to_s
56
+ }
57
+ </pre>
58
+ <h3>°��������</h3>
59
+ <pre>
60
+ img = Tag('img/')
61
+ img['src']='xxx.png' #&lt;img src="xxx.png"&gt;
62
+
63
+ o = Tag('option')
64
+ o['selected']=true #&lt;option selected&gt;
65
+ </pre>
66
+ =end
67
+
68
+ require "cgi"
69
+ require "kconv"
70
+
71
+ =begin EmptyElementTag
72
+
73
+ <h2><a name="EmptyElementTag">EmptyElementTag</a></h2>
74
+ �����ǤΥ���
75
+ <h3>���饹�᥽�å�</h3>
76
+ <dl compact>
77
+ <dt>new(<var class="String">name</var>[,<var class="Hash">attr</var>])
78
+ <dd>���������֥������Ȥ��������롣 <var class="String">name</var>�ϥ�����̾�� <var class="Hash">attr</var>�ϥ�����°��nil�ޤ���Hash
79
+ </dl>
80
+ <h3>�᥽�å�</h3>
81
+ <dl compact>
82
+ <dt class="String">name
83
+ <dd>����̾���֤���
84
+ <dt class="Hash">attr
85
+ <dd>°�����֤���
86
+ <dt class="String">to_s
87
+ <dd>HTML���֤���
88
+ <dt class="String">self[<var class="String">key</var>]
89
+ <dd>key�˴�Ϣ�Ť���줿°���ͤ��֤��ޤ���
90
+ �������륭������Ͽ����Ƥ��ʤ����ˤϡ�nil���֤��ޤ���
91
+ <dt class="String">self[<var class="String">key</var>]= <var class="String">value</var>
92
+ <dd><var class="String">key</var>���Ф���<var class="String">value</var>���Ϣ�Ť��ޤ���
93
+ <var class="String">value</var>��nil�λ���<var class="String">key</var>���Ф����Ϣ��������ޤ���
94
+ </dl>
95
+ =end
96
+ class EmptyElementTag #:nodoc: all
97
+ def initialize(name,attr=nil)
98
+ @name = name.downcase
99
+ @attr = attr
100
+ end
101
+ attr_accessor :name
102
+ attr_accessor :attr
103
+ def to_s
104
+ if @attr
105
+ "<"+@name+@attr.keys.sort.collect{|n|
106
+ v = @attr[n]
107
+ if v==true
108
+ ' ' + n
109
+ else
110
+ ' ' + n + '="' + CGI::escapeHTML(v) + '"'
111
+ end
112
+ }.to_s+">"
113
+ else
114
+ "<#{@name}>"
115
+ end
116
+ end
117
+ def [](key)
118
+ attr and attr[key]
119
+ end
120
+ def []=(key,value)
121
+ if attr
122
+ attr[key]=value
123
+ else
124
+ attr = value and {key=>value}
125
+ end
126
+ end
127
+ end
128
+ =begin StartTag
129
+ <h2>StartTag</h2>
130
+ ���ϥ���
131
+ <h3>���饹�᥽�å�</h3>
132
+ <dl compact>
133
+ <dt>new(<var class="String">name</var>[,<var class="Hash">attr</var>])
134
+ <dd>���������֥������Ȥ��������롣 <var class="String">name</var>�ϥ�����̾�� <var class="Hash">attr</var>�ϥ�����°��nil�ޤ���Hash
135
+ </dl>
136
+ <h3>�᥽�å�</h3>
137
+ <dl compact>
138
+ <dt class="String">name
139
+ <dd>����̾���֤���
140
+ <dt class="Hash">attr
141
+ <dd>°�����֤���
142
+ <dt class="String">to_s
143
+ <dd>HTML���֤���
144
+ <dt class="String">self[<var class="String">key</var>]
145
+ <dd>key�˴�Ϣ�Ť���줿°���ͤ��֤��ޤ���
146
+ �������륭������Ͽ����Ƥ��ʤ����ˤϡ�nil���֤��ޤ���
147
+ <dt class="String">self[<var class="String">key</var>]= <var class="String">value</var>
148
+ <dd><var class="String">key</var>���Ф���<var class="String">value</var>���Ϣ�Ť��ޤ���
149
+ <var class="String">value</var>��nil�λ���<var class="String">key</var>���Ф����Ϣ��������ޤ���
150
+ </dl>
151
+ =end
152
+ class StartTag #:nodoc: all
153
+ attr_accessor :name
154
+ attr_accessor :attr
155
+ def initialize(name,attr=nil)
156
+ @name = name.downcase
157
+ @attr = attr
158
+ end
159
+ def to_s
160
+ if @attr
161
+ "<"+@name+@attr.keys.sort.collect{|n|
162
+ v = @attr[n]
163
+ if v==true
164
+ ' ' + n
165
+ else
166
+ ' ' + n + '="' + CGI::escapeHTML(v) + '"'
167
+ end
168
+ }.to_s+">"
169
+ else
170
+ "<#{@name}>"
171
+ end
172
+ end
173
+ def [](key)
174
+ attr and attr[key]
175
+ end
176
+ def []=(key,value)
177
+ if attr
178
+ attr[key]=value
179
+ else
180
+ attr = value and {key=>value}
181
+ end
182
+ end
183
+ end
184
+ =begin EndTag
185
+ <h2>EndTag</h2>
186
+ �����
187
+ <h3>���饹�᥽�å�</h3>
188
+ <dl compact>
189
+ <dt>new(<var class="String">name</var>)
190
+ <dd>���������֥������Ȥ��������롣 <var class="String">name</var>�ϥ�����̾��
191
+ </dl>
192
+ <h3>�᥽�å�</h3>
193
+ <dl compact>
194
+ <dt class="String">name
195
+ <dd>����̾���֤���
196
+ <dt class="String">to_s
197
+ <dd>HTML���֤���
198
+ </dl>
199
+ =end
200
+ class EndTag #:nodoc: all
201
+ def initialize(name)
202
+ @name = name.downcase
203
+ end
204
+ attr_accessor :name
205
+ def to_s
206
+ "</#{@name}>"
207
+ end
208
+ end
209
+ =begin CharacterData
210
+ <h2>CharacterData</h2>
211
+ ʸ���ǡ���
212
+ <h3>���饹�᥽�å�</h3>
213
+ <dl compact>
214
+ <dt>new(<var class="String">text</var>)
215
+ <dd>���������֥������Ȥ��������롣 <var class="String">text</var>�ϥƥ�����
216
+ </dl>
217
+ <h3>�᥽�å�</h3>
218
+ <dl compact>
219
+ <dt class="String">text
220
+ <dd>�ƥ����Ȥ��֤���
221
+ <dt class="String">to_s
222
+ <dd>HTML���֤���
223
+ </dl>
224
+ =end
225
+ class CharacterData #:nodoc: all
226
+ def initialize(text)
227
+ @text = text
228
+ end
229
+ attr_accessor :text
230
+ def to_s
231
+ @text
232
+ end
233
+ end
234
+ =begin Declaraion
235
+ <h2>Declaraion</h2>
236
+ SGML���
237
+ <h3>���饹�᥽�å�</h3>
238
+ <dl compact>
239
+ <dt>new(<var class="String">text</var>)
240
+ <dd>���������֥������Ȥ��������롣 <var class="String">text</var>�ϥƥ�����
241
+ </dl>
242
+ <h3>�᥽�å�</h3>
243
+ <dl compact>
244
+ <dt class="String">text
245
+ <dd>�ƥ����Ȥ��֤���
246
+ <dt class="String">to_s
247
+ <dd>HTML���֤���
248
+ </dl>
249
+ =end
250
+ class Declaration #:nodoc: all
251
+ def initialize(text)
252
+ @text = text
253
+ end
254
+ attr_accessor :text
255
+ def to_s
256
+ "<!#{@text}>"
257
+ end
258
+ end
259
+ =begin Comment
260
+ <h2>Comment</h2>
261
+ ������
262
+ <h3>���饹�᥽�å�</h3>
263
+ <dl compact>
264
+ <dt>new(<var class="String">text</var>)
265
+ <dd>���������֥������Ȥ��������롣 <var class="String">text</var>�ϥƥ�����
266
+ </dl>
267
+ <h3>�᥽�å�</h3>
268
+ <dl compact>
269
+ <dt class="String">text
270
+ <dd>�ƥ����Ȥ��֤���
271
+ <dt class="String">to_s
272
+ <dd>HTML���֤���
273
+ </dl>
274
+ =end
275
+ class Comment #:nodoc: all
276
+ def initialize(text)
277
+ @text = text
278
+ end
279
+ attr_accessor :text
280
+ def to_s
281
+ "<!--#{@text}-->"
282
+ end
283
+ end
284
+ =begin SSI
285
+ <h2>SSI</h2>
286
+ SSI
287
+ <h3>���饹�᥽�å�</h3>
288
+ <dl compact>
289
+ <dt>new(<var class="String">text</var>)
290
+ <dd>���������֥������Ȥ��������롣 <var class="String">text</var>�ϥƥ�����
291
+ </dl>
292
+ <h3>�᥽�å�</h3>
293
+ <dl compact>
294
+ <dt class="String">text
295
+ <dd>�ƥ����Ȥ��֤���
296
+ <dt class="String">to_s
297
+ <dd>HTML���֤���
298
+ </dl>
299
+ =end
300
+ class SSI #:nodoc: all
301
+ def initialize(text)
302
+ @text = text
303
+ end
304
+ attr_accessor :text
305
+ def to_s
306
+ "<!--#{@text}-->"
307
+ end
308
+ end
309
+ =begin ERuby
310
+ <h2>ERuby</h2>
311
+ eRuby/ASP/JSP������ץ�
312
+ <h3>���饹�᥽�å�</h3>
313
+ <dl compact>
314
+ <dt>new(<var class="String">text</var>)
315
+ <dd>���������֥������Ȥ��������롣 <var class="String">text</var>�ϥƥ�����
316
+ </dl>
317
+ <h3>�᥽�å�</h3>
318
+ <dl compact>
319
+ <dt class="String">text
320
+ <dd>�ƥ����Ȥ��֤���
321
+ <dt class="String">to_s
322
+ <dd>HTML���֤���
323
+ </dl>
324
+ =end
325
+ class ERuby
326
+ def initialize(text)
327
+ @text = text
328
+ end
329
+ attr_accessor :text
330
+ def to_s
331
+ "<%#{@text}%>"
332
+ end
333
+ end
334
+ =begin PHP
335
+ <h2>PHP</h2>
336
+ PHP������ץ�
337
+ <h3>���饹�᥽�å�</h3>
338
+ <dl compact>
339
+ <dt>new(<var class="String">text</var>)
340
+ <dd>���������֥������Ȥ��������롣 <var class="String">text</var>�ϥƥ�����
341
+ </dl>
342
+ <h3>�᥽�å�</h3>
343
+ <dl compact>
344
+ <dt class="String">text
345
+ <dd>�ƥ����Ȥ��֤���
346
+ <dt class="String">to_s
347
+ <dd>HTML���֤���
348
+ </dl>
349
+ =end
350
+ class PHP
351
+ attr_accessor :text
352
+ def initialize(text)
353
+ @text = text
354
+ end
355
+ def to_s
356
+ "<?#{@text}?>"
357
+ end
358
+ end
359
+ =begin HTMLSplit
360
+
361
+ <h2><a name="HTMLSplit">HTMLSplit</a></h2>
362
+ HTML�ɤ߽�
363
+ <h3>���饹�᥽�å�</h3>
364
+ <dl compact>
365
+ <dt>new(<var class="String">html</var>)
366
+ <dd>���������֥������Ȥ��������롣 <var class="String">html</var>��HTMLʸ��
367
+ </dl>
368
+ <h3>�᥽�å�</h3>
369
+ <dl compact>
370
+ <dt class="Array">document
371
+ <dd>�ɥ�����Ȥ�������֤���
372
+ <dt class="String">to_s
373
+ <dd>HTML���֤���
374
+ <dt class="Iterator">each {|<var>obj</var>,<var class="Array">tag</var>| ...}
375
+ <dd>�ɥ�����Ȥγƥ��֥�������(<var>obj</var>)���Ф��ƥ֥��å���ɾ�����ޤ���
376
+ <var class="Array">tag</var>�ϳ��ϥ����Υꥹ�ȡ� [ StartTag , <var class="Integer">����ǥ���</var>] ��
377
+ <dt class="Integer">index(<var class="Class">class</var>, <var class="Integer">start</var>, <var class="Integer">end</var>, <var>value</var>, <var class="Integer">count</var>) {|obj| ...}
378
+ <dd><var class="Integer">start</var>����<var class="Integer">end</var>�ޤǤ����Ǥ�<var class="Class">class</var>��������<var class="Integer">count</var>���ܤ����Ǥΰ��֤��֤��ޤ���
379
+ ���������Ǥ��ҤȤĤ�ʤ��ä����ˤ�nil���֤��ޤ���<br>
380
+ <var>value</var>��nil�ʳ����ͤ���ꤷ�����ˤ����Ǥ�<var>value</var>���������������å���Ԥ��ޤ���<var class="Class">class</var>��EmptyElementTag,StartTag,EndTag�λ��ϥ���̾������ʳ��ϥƥ����Ȥˤ�ä���Ӥ��ޤ���<br>
381
+ �֥��å�����ꤷ�ƸƤӽФ��줿���ˤϥ֥��å������Ǥ���������ɾ�����롣
382
+ <dt class="Integer">end_index(<var class="Integer">start</var>)
383
+ <dd><var class="Integer">start</var>���б�����EndTag�Υ���ǥ������֤��ޤ���
384
+ �б��������Ǥ��ʤ��ä����ˤ�nil���֤��ޤ���<br>
385
+ </dl>
386
+ =end
387
+ class HTMLSplit
388
+ EMPTY = %w(area base basefont bgsound br col frame hr img input isindex
389
+ keygen link meta nextid param spacer wbr)
390
+ def initialize(html)
391
+ @document = [] #�ѡ�������HTML�Υꥹ��
392
+ name = ''
393
+ text = ''
394
+ attr = {}
395
+ attrname = ''
396
+ state = :TEXT
397
+ #
398
+ html.each_byte {|c|
399
+ char = c.chr
400
+ case state
401
+ when :TEXT
402
+ if c==60
403
+ if text.length>0
404
+ @document << CharacterData.new(text)
405
+ end
406
+ name = ''
407
+ attr={}
408
+ state = :TAGNAME
409
+ else
410
+ text << char
411
+ end
412
+ when :TAGNAME
413
+ case char
414
+ when '>'
415
+ name.downcase!
416
+ if EMPTY.include?(name)
417
+ @document << EmptyElementTag.new(name,nil)
418
+ else
419
+ if name[0,1]=='/'
420
+ @document << EndTag.new(name[1..-1])
421
+ else
422
+ @document << StartTag.new(name,nil)
423
+ end
424
+ end
425
+ text = ''
426
+ state = :TEXT
427
+ when '!'
428
+ text = ''
429
+ state = :DECLARE
430
+ when '%'
431
+ text = ''
432
+ state = :ERUBY
433
+ when '?'
434
+ text = ''
435
+ state = :PHP
436
+ when /\s/
437
+ text=''
438
+ state = :SPACE
439
+ else
440
+ name << char
441
+ end
442
+ when :SPACE #°���֤ζ���
443
+ case char
444
+ when '>'
445
+ name.downcase!
446
+ if EMPTY.include?(name)
447
+ @document << EmptyElementTag.new(name,attr)
448
+ else
449
+ if name[0,1]=='/'
450
+ @document << EndTag.new(name[1..-1])
451
+ else
452
+ @document << StartTag.new(name,attr)
453
+ end
454
+ end
455
+ text = ''
456
+ state = :TEXT
457
+ when /\s/
458
+ else
459
+ attrname=char
460
+ state = :ATTRNAME
461
+ end
462
+ when :ATTRNAME #°��̾
463
+ case char
464
+ when /\s/
465
+ state = :BEFOREEQUAL
466
+ when '='
467
+ state = :AFTEREQUAL
468
+ when '>'
469
+ attr[attrname.downcase]=true
470
+ name.downcase!
471
+ if EMPTY.include?(name)
472
+ @document << EmptyElementTag.new(name,attr)
473
+ else
474
+ if name[0,1]=='/'
475
+ @document << EndTag.new(name[1..-1])
476
+ else
477
+ @document << StartTag.new(name,attr)
478
+ end
479
+ end
480
+ text = ''
481
+ state = :TEXT
482
+ else
483
+ attrname << char
484
+ end
485
+ when :BEFOREEQUAL #=
486
+ case char
487
+ when '='
488
+ state = :AFTEREQUAL
489
+ when '>'
490
+ attr[attrname.downcase]=true
491
+ name.downcase!
492
+ if EMPTY.include?(name)
493
+ @document << EmptyElementTag.new(name,attr)
494
+ else
495
+ if name[0,1]=='/'
496
+ @document << EndTag.new(name[1..-1])
497
+ else
498
+ @document << StartTag.new(name,attr)
499
+ end
500
+ end
501
+ text = ''
502
+ state = :TEXT
503
+ when /\s/
504
+ else
505
+ attr[attrname.downcase]=true
506
+ attrname = char
507
+ state = :ATTRNAME
508
+ end
509
+ when :AFTEREQUAL #=
510
+ case char
511
+ when "'"
512
+ text=''
513
+ state = :SQVALUE
514
+ when '"'
515
+ text=''
516
+ state = :DQVALUE
517
+ when '>'
518
+ attr[attrname.downcase]=true
519
+ name.downcase!
520
+ if EMPTY.include?(name)
521
+ @document << EmptyElementTag.new(name,attr)
522
+ else
523
+ if name[0,1]=='/'
524
+ @document << EndTag.new(name[1..-1])
525
+ else
526
+ @document << StartTag.new(name,attr)
527
+ end
528
+ end
529
+ text = ''
530
+ state = :TEXT
531
+ when /\s/
532
+ else
533
+ text=char
534
+ state = :VALUE
535
+ end
536
+ when :VALUE #��
537
+ case char
538
+ when /\s/
539
+ attr[attrname.downcase]=CGI::unescapeHTML(text)
540
+ state = :SPACE
541
+ when '>'
542
+ attr[attrname.downcase]=CGI::unescapeHTML(text)
543
+ name.downcase!
544
+ if EMPTY.include?(name)
545
+ @document << EmptyElementTag.new(name,attr)
546
+ else
547
+ if name[0,1]=='/'
548
+ @document << EndTag.new(name[1..-1])
549
+ else
550
+ @document << StartTag.new(name,attr)
551
+ end
552
+ end
553
+ text = ''
554
+ state = :TEXT
555
+ else
556
+ text << char
557
+ end
558
+ when :SQVALUE #'��'
559
+ if c==39
560
+ attr[attrname.downcase]=CGI::unescapeHTML(text)
561
+ state = :SPACE
562
+ else
563
+ text << char
564
+ end
565
+ when :DQVALUE #"��"
566
+ if c==34
567
+ attr[attrname.downcase]=CGI::unescapeHTML(text)
568
+ state = :SPACE
569
+ else
570
+ text << char
571
+ end
572
+ when :COMMENT
573
+ case char
574
+ when '>'
575
+ if text[-2,2]=='--' #�����Ƚ�λ
576
+ text = text[0..-3]
577
+ if text=~/^#[a-z]+/ #SSI
578
+ @document << SSI.new(text)
579
+ else
580
+ @document << Comment.new(text)
581
+ end
582
+ text = ''
583
+ state = :TEXT
584
+ else
585
+ text << char
586
+ end
587
+ else
588
+ text << char
589
+ end
590
+ when :ERUBY
591
+ case char
592
+ when '>'
593
+ if text[-1,1]=='%' #eRuby��λ
594
+ text = text[0..-2]
595
+ @document << ERuby.new(text)
596
+ text = ''
597
+ state = :TEXT
598
+ else
599
+ text << char
600
+ end
601
+ else
602
+ text << char
603
+ end
604
+ when :PHP
605
+ case char
606
+ when '>'
607
+ if text[-1,1]=='?' #eRuby��λ
608
+ text = text[0..-2]
609
+ @document << PHP.new(text)
610
+ text = ''
611
+ state = :TEXT
612
+ else
613
+ text << char
614
+ end
615
+ else
616
+ text << char
617
+ end
618
+ when :DECLARE
619
+ case char
620
+ when '>'
621
+ @document << Declaration.new(text)
622
+ text = ''
623
+ state = :TEXT
624
+ else
625
+ text << char
626
+ if text=='--'
627
+ text = ''
628
+ state = :COMMENT
629
+ end
630
+ end
631
+ end
632
+ }
633
+ #EOF���
634
+ case state
635
+ when :TEXT
636
+ @document << CharacterData.new(text) if text.length>0
637
+ when :TAGNAME
638
+ @document << CharacterData.new('<'+text)
639
+ when :SPACE #°���֤ζ���
640
+ name.downcase!
641
+ if EMPTY.include?(name)
642
+ @document << EmptyElementTag.new(name,attr)
643
+ else
644
+ if name[0,1]=='/'
645
+ @document << EndTag.new(name[1..-1])
646
+ else
647
+ @document << StartTag.new(name,attr)
648
+ end
649
+ end
650
+ when :ATTRNAME #°��̾
651
+ attr[attrname.downcase]=true
652
+ name.downcase!
653
+ if EMPTY.include?(name)
654
+ @document << EmptyElementTag.new(name,attr)
655
+ else
656
+ if name[0,1]=='/'
657
+ @document << EndTag.new(name[1..-1])
658
+ else
659
+ @document << StartTag.new(name,attr)
660
+ end
661
+ end
662
+ when :BEFOREEQUAL #=
663
+ attr[attrname.downcase]=true
664
+ name.downcase!
665
+ if EMPTY.include?(name)
666
+ @document << EmptyElementTag.new(name,attr)
667
+ else
668
+ if name[0,1]=='/'
669
+ @document << EndTag.new(name[1..-1])
670
+ else
671
+ @document << StartTag.new(name,attr)
672
+ end
673
+ end
674
+ when :AFTEREQUAL #=
675
+ attr[attrname.downcase]=true
676
+ name.downcase!
677
+ if EMPTY.include?(name)
678
+ @document << EmptyElementTag.new(name,attr)
679
+ else
680
+ if name[0,1]=='/'
681
+ @document << EndTag.new(name[1..-1])
682
+ else
683
+ @document << StartTag.new(name,attr)
684
+ end
685
+ end
686
+ when :VALUE #��
687
+ attr[attrname.downcase]=CGI::unescapeHTML(text)
688
+ name.downcase!
689
+ if EMPTY.include?(name)
690
+ @document << EmptyElementTag.new(name,attr)
691
+ else
692
+ if name[0,1]=='/'
693
+ @document << EndTag.new(name[1..-1])
694
+ else
695
+ @document << StartTag.new(name,attr)
696
+ end
697
+ end
698
+ when :SQVALUE #'��'
699
+ attr[attrname.downcase]=CGI::unescapeHTML(text)
700
+ when :DQVALUE #"��"
701
+ attr[attrname.downcase]=CGI::unescapeHTML(text)
702
+ when :COMMENT
703
+ if text=~/^#[a-zA-Z]+/ #SSI
704
+ @document << SSI.new(text)
705
+ else
706
+ @document << Comment.new(text)
707
+ end
708
+ when :ERUBY
709
+ @document << ERuby.new(text)
710
+ when :PHP
711
+ @document << PHP.new(text)
712
+ when :DECLARE
713
+ @document << Declaration.new(text)
714
+ end
715
+ end
716
+ #
717
+ attr_accessor :document
718
+ #
719
+ def to_s
720
+ s = ''
721
+ @document.each {|e|
722
+ s<<(e.to_s)
723
+ }
724
+ s
725
+ end
726
+ #
727
+ def each
728
+ tag = []
729
+ i = 0
730
+ @document.each {|e|
731
+ case e
732
+ when StartTag
733
+ tag.push [e,i]
734
+ when EndTag
735
+ idx = nil
736
+ (tag.size-1).downto(0) {|j|
737
+ if tag[j][0].name==e.name
738
+ idx = j
739
+ break
740
+ end
741
+ }
742
+ #
743
+ if idx
744
+ if idx==0
745
+ tag = []
746
+ else
747
+ tag = tag[0..idx-1]
748
+ end
749
+ end
750
+ else
751
+ end
752
+ yield e,tag
753
+ i += 1
754
+ }
755
+ end
756
+ #
757
+ def index(_class,_start=0,_end=-1,value=nil,count=1)
758
+ idx=_start
759
+ found=false
760
+ @document[_start.._end].each {|obj|
761
+ if obj.type==_class
762
+ if value
763
+ case obj
764
+ when StartTag,EmptyElementTag,EndTag
765
+ if value===obj.name
766
+ if (not iterator?) or yield(obj)
767
+ if (count-=1)<=0
768
+ found = true
769
+ break
770
+ end
771
+ end
772
+ end
773
+ else
774
+ if value===obj.text
775
+ if (not iterator?) or yield(obj)
776
+ if (count-=1)<=0
777
+ found = true
778
+ break
779
+ end
780
+ end
781
+ end
782
+ end
783
+ else
784
+ if (not iterator?) or yield(obj)
785
+ if (count-=1)<=0
786
+ found = true
787
+ break
788
+ end
789
+ end
790
+ end
791
+ end
792
+ idx+=1
793
+ }
794
+ if found
795
+ idx
796
+ else
797
+ nil
798
+ end
799
+ end
800
+ #
801
+ def end_index(start_index)
802
+ tag = []
803
+ end_index = nil
804
+ (start_index...@document.size).each {|idx|
805
+ e= @document[idx]
806
+ case e
807
+ when StartTag
808
+ tag.push [e,idx]
809
+ when EndTag
810
+ i = nil
811
+ (tag.size-1).downto(0) {|j|
812
+ if tag[j][0].name==e.name
813
+ i = j
814
+ break
815
+ end
816
+ }
817
+ #
818
+ if i
819
+ if i==0
820
+ tag = []
821
+ else
822
+ tag = tag[0..i-1]
823
+ end
824
+ end
825
+ if tag.size==0
826
+ end_index = idx
827
+ break
828
+ end
829
+ else
830
+ end
831
+ }
832
+ end_index
833
+ end
834
+ end
835
+ =begin End of Document
836
+ </body>
837
+ </html>
838
+ =end
839
+ end
840
+ end