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.
- data/ChangeLog +163 -0
- data/InstalledFiles +2227 -0
- data/README +124 -0
- data/TODO +88 -0
- data/bin/narftest +17 -0
- data/bug.rb +9 -0
- data/build.rb +314 -0
- data/build.rb~ +314 -0
- data/config.save +12 -0
- data/doc/apache_cgi.txt +17 -0
- data/doc/fastcgi.txt +19 -0
- data/doc/mod_ruby.txt +7 -0
- data/doc/rdoc/classes/Web.html +366 -0
- data/doc/rdoc/classes/Web.src/M000002.html +15 -0
- data/doc/rdoc/classes/Web.src/M000003.html +15 -0
- data/doc/rdoc/classes/Web.src/M000004.html +15 -0
- data/doc/rdoc/classes/Web.src/M000005.html +15 -0
- data/doc/rdoc/classes/Web.src/M000006.html +20 -0
- data/doc/rdoc/classes/Web.src/M000007.html +18 -0
- data/doc/rdoc/classes/Web.src/M000008.html +18 -0
- data/doc/rdoc/classes/Web.src/M000009.html +18 -0
- data/doc/rdoc/classes/Web.src/M000010.html +15 -0
- data/doc/rdoc/classes/Web.src/M000011.html +15 -0
- data/doc/rdoc/classes/Web.src/M000012.html +15 -0
- data/doc/rdoc/classes/Web/CGD.html +173 -0
- data/doc/rdoc/classes/Web/CGD.src/M000037.html +24 -0
- data/doc/rdoc/classes/Web/CGD.src/M000038.html +23 -0
- data/doc/rdoc/classes/Web/CGD.src/M000039.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000040.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000041.html +23 -0
- data/doc/rdoc/classes/Web/CGI.html +946 -0
- data/doc/rdoc/classes/Web/CGI.src/M000051.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000052.html +24 -0
- data/doc/rdoc/classes/Web/CGI.src/M000053.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000054.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000055.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000056.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000057.html +17 -0
- data/doc/rdoc/classes/Web/CGI.src/M000058.html +34 -0
- data/doc/rdoc/classes/Web/CGI.src/M000059.html +22 -0
- data/doc/rdoc/classes/Web/CGI.src/M000060.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000061.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000062.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000063.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000064.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000065.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000066.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000067.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000068.html +13 -0
- data/doc/rdoc/classes/Web/CGI.src/M000069.html +13 -0
- data/doc/rdoc/classes/Web/CGI.src/M000070.html +13 -0
- data/doc/rdoc/classes/Web/CGI.src/M000071.html +13 -0
- data/doc/rdoc/classes/Web/CGI.src/M000072.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000073.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000074.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000075.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000076.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000077.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000078.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000079.html +36 -0
- data/doc/rdoc/classes/Web/CGI.src/M000080.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000081.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000082.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000083.html +17 -0
- data/doc/rdoc/classes/Web/CGI.src/M000084.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000085.html +16 -0
- data/doc/rdoc/classes/Web/CGI.src/M000086.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000087.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000088.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000089.html +16 -0
- data/doc/rdoc/classes/Web/CGI.src/M000090.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000091.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000092.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000093.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000094.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000095.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000096.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000097.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000098.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000099.html +43 -0
- data/doc/rdoc/classes/Web/CGI.src/M000100.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000101.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000102.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000103.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000104.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000105.html +24 -0
- data/doc/rdoc/classes/Web/CGI.src/M000106.html +24 -0
- data/doc/rdoc/classes/Web/CGI.src/M000107.html +22 -0
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.html +104 -0
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000118.html +15 -0
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000119.html +15 -0
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000120.html +15 -0
- data/doc/rdoc/classes/Web/Mime.html +122 -0
- data/doc/rdoc/classes/Web/Mime.src/M000118.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000119.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000120.html +23 -0
- data/doc/rdoc/classes/Web/Mime.src/M000121.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000122.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000123.html +23 -0
- data/doc/rdoc/classes/Web/Mime.src/M000124.html +15 -0
- data/doc/rdoc/classes/Web/Narflates.html +132 -0
- data/doc/rdoc/classes/Web/Parser.html +219 -0
- data/doc/rdoc/classes/Web/Parser.src/M000013.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000014.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000015.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000016.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000017.html +30 -0
- data/doc/rdoc/classes/Web/Parser.src/M000018.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000019.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000020.html +27 -0
- data/doc/rdoc/classes/Web/Parser.src/M000021.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000022.html +16 -0
- data/doc/rdoc/classes/Web/Parser.src/M000023.html +18 -0
- data/doc/rdoc/classes/Web/Session.html +178 -0
- data/doc/rdoc/classes/Web/Session.src/M000042.html +20 -0
- data/doc/rdoc/classes/Web/Session.src/M000043.html +19 -0
- data/doc/rdoc/classes/Web/Session.src/M000044.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000045.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000046.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000047.html +17 -0
- data/doc/rdoc/classes/Web/Session.src/M000048.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000049.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000050.html +16 -0
- data/doc/rdoc/classes/Web/Testing.html +474 -0
- data/doc/rdoc/classes/Web/Testing.src/M000024.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000025.html +25 -0
- data/doc/rdoc/classes/Web/Testing.src/M000026.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000027.html +28 -0
- data/doc/rdoc/classes/Web/Testing.src/M000028.html +58 -0
- data/doc/rdoc/classes/Web/Testing.src/M000029.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000030.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000031.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000032.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000033.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000034.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000035.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000036.html +18 -0
- data/doc/rdoc/classes/Web/Upload.html +160 -0
- data/doc/rdoc/classes/Web/Upload.src/M000108.html +25 -0
- data/doc/rdoc/classes/Web/Upload.src/M000109.html +18 -0
- data/doc/rdoc/classes/Web/Upload.src/M000110.html +16 -0
- data/doc/rdoc/classes/Web/Upload.src/M000111.html +16 -0
- data/doc/rdoc/classes/Web/Wiki.html +249 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000112.html +25 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000113.html +15 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000114.html +26 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000115.html +21 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000116.html +18 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000117.html +19 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/README.html +226 -0
- data/doc/rdoc/files/doc/apache_cgi_txt.html +82 -0
- data/doc/rdoc/files/doc/fastcgi_txt.html +82 -0
- data/doc/rdoc/files/doc/mod_ruby_txt.html +62 -0
- data/doc/rdoc/files/doc/webrick_txt.html +79 -0
- data/doc/rdoc/files/examples/examples_rdoc.html +73 -0
- data/doc/rdoc/files/lib/web/cgi_rb.html +75 -0
- data/doc/rdoc/files/lib/web/mime_rb.html +67 -0
- data/doc/rdoc/files/lib/web/parser_rb.html +73 -0
- data/doc/rdoc/files/lib/web/session_rb.html +73 -0
- data/doc/rdoc/files/lib/web/template_rb.html +73 -0
- data/doc/rdoc/files/lib/web/testing_rb.html +67 -0
- data/doc/rdoc/files/lib/web/upload_rb.html +73 -0
- data/doc/rdoc/files/lib/web/wiki_rb.html +79 -0
- data/doc/rdoc/files/lib/web_rb.html +116 -0
- data/doc/rdoc/files/lib/web_rb.src/M000001.html +15 -0
- data/doc/rdoc/fr_class_index.html +47 -0
- data/doc/rdoc/fr_file_index.html +52 -0
- data/doc/rdoc/fr_method_index.html +158 -0
- data/doc/rdoc/index.html +22 -0
- data/doc/rdoc/rdoc-style.css +99 -0
- data/doc/webrick.txt +23 -0
- data/examples/admin.rb +8 -0
- data/examples/admin.rb~ +5 -0
- data/examples/cookbook.rdoc +247 -0
- data/examples/cookbook.rdoc~ +238 -0
- data/examples/examples.rdoc +19 -0
- data/examples/examples.rdoc~ +17 -0
- data/examples/hello.world.rb +5 -0
- data/examples/hello.world.rb~ +3 -0
- data/examples/session.rb +34 -0
- data/examples/session.rb~ +31 -0
- data/examples/test/test.hello.world.rb +9 -0
- data/examples/test/test.hello.world.rb~ +9 -0
- data/examples/test/test.session.rb +37 -0
- data/examples/test/test.session.rb~ +37 -0
- data/examples/webunit/COPYING +340 -0
- data/examples/webunit/Makefile +14 -0
- data/examples/webunit/TIPS-ja.html +126 -0
- data/examples/webunit/TIPS-ja.rd +154 -0
- data/examples/webunit/TODO-ja.html +35 -0
- data/examples/webunit/TODO-ja.rd +28 -0
- data/examples/webunit/changes.rd +185 -0
- data/examples/webunit/conv/digit-0.cgi +40 -0
- data/examples/webunit/conv/digit-0.rb +21 -0
- data/examples/webunit/conv/digit-1.cgi +44 -0
- data/examples/webunit/conv/digit-1.rb +17 -0
- data/examples/webunit/conv/digit.cgi +59 -0
- data/examples/webunit/conv/digit.rb +23 -0
- data/examples/webunit/conv/test_digit-0.rb +16 -0
- data/examples/webunit/conv/test_digit-1.rb +19 -0
- data/examples/webunit/conv/test_digit.rb +26 -0
- data/examples/webunit/conv/test_digit_view-0.rb +76 -0
- data/examples/webunit/conv/test_digit_view-1.rb +102 -0
- data/examples/webunit/conv/test_digit_view.rb +134 -0
- data/examples/webunit/example.rd +37 -0
- data/examples/webunit/index-en.html +263 -0
- data/examples/webunit/index-en.rd +60 -0
- data/examples/webunit/index-ja.html +263 -0
- data/examples/webunit/index-ja.rd +60 -0
- data/examples/wiki.rb +7 -0
- data/examples/wiki.rb~ +5 -0
- data/install.rb +1022 -0
- data/lib/web.rb +290 -0
- data/lib/web.rb~ +290 -0
- data/lib/web/#assertinclude.rb# +110 -0
- data/lib/web/action.rb +82 -0
- data/lib/web/assertinclude.rb +110 -0
- data/lib/web/assertinclude.rb~ +110 -0
- data/lib/web/buffer.rb +20 -0
- data/lib/web/cgi.rb +641 -0
- data/lib/web/cgi.rb~ +640 -0
- data/lib/web/formreader.rb +317 -0
- data/lib/web/forms.rb +104 -0
- data/lib/web/htmlparser/html-parser.rb +429 -0
- data/lib/web/htmlparser/html-parser.rb~ +429 -0
- data/lib/web/htmlparser/sgml-parser.rb +332 -0
- data/lib/web/htmlparser/sgml-parser.rb~ +332 -0
- data/lib/web/htmltools/element.rb +296 -0
- data/lib/web/htmltools/element.rb~ +296 -0
- data/lib/web/htmltools/stparser.rb +276 -0
- data/lib/web/htmltools/stparser.rb~ +276 -0
- data/lib/web/htmltools/tags.rb +286 -0
- data/lib/web/htmltools/tags.rb~ +286 -0
- data/lib/web/htmltools/tree.rb +139 -0
- data/lib/web/htmltools/tree.rb~ +139 -0
- data/lib/web/htmltools/xmltree.rb +160 -0
- data/lib/web/htmltools/xmltree.rb~ +160 -0
- data/lib/web/htmltools/xpath.rb +71 -0
- data/lib/web/htmltools/xpath.rb~ +71 -0
- data/lib/web/mime.rb +82 -0
- data/lib/web/parser.rb +266 -0
- data/lib/web/parser.rb~ +266 -0
- data/lib/web/request.rb~ +238 -0
- data/lib/web/resources/mime.types +483 -0
- data/lib/web/runner.rb +26 -0
- data/lib/web/runner.rb~ +26 -0
- data/lib/web/sapi/fastcgi.rb +26 -0
- data/lib/web/sapi/fastcgi.rb~ +25 -0
- data/lib/web/sapi/mod_ruby.rb +46 -0
- data/lib/web/sapi/mod_ruby.rb~ +46 -0
- data/lib/web/sapi/webrick.rb +91 -0
- data/lib/web/sapi/webrick.rb~ +89 -0
- data/lib/web/session.rb +75 -0
- data/lib/web/session.rb~ +75 -0
- data/lib/web/simpledispatcher.rb +155 -0
- data/lib/web/strscanparser.rb +24 -0
- data/lib/web/tagparser.rb +96 -0
- data/lib/web/tagparser.rb~ +96 -0
- data/lib/web/template.rb +613 -0
- data/lib/web/template.rb~ +613 -0
- data/lib/web/testing.rb +546 -0
- data/lib/web/testing.rb~ +546 -0
- data/lib/web/traceoutput.rb +32 -0
- data/lib/web/unit.rb +27 -0
- data/lib/web/unit/assert.rb +154 -0
- data/lib/web/unit/converter.rb +148 -0
- data/lib/web/unit/cookie.rb +120 -0
- data/lib/web/unit/domwalker.rb +187 -0
- data/lib/web/unit/exception.rb +15 -0
- data/lib/web/unit/form.rb +118 -0
- data/lib/web/unit/formatter.rb +314 -0
- data/lib/web/unit/frame.rb +39 -0
- data/lib/web/unit/html-parser.rb +432 -0
- data/lib/web/unit/htmlelem.rb +124 -0
- data/lib/web/unit/htmlrepair.rb +116 -0
- data/lib/web/unit/htmlsplit.rb +840 -0
- data/lib/web/unit/image.rb +27 -0
- data/lib/web/unit/jscript.rb +32 -0
- data/lib/web/unit/link.rb +35 -0
- data/lib/web/unit/params.rb +323 -0
- data/lib/web/unit/parser.rb +226 -0
- data/lib/web/unit/resources/assert.html +101 -0
- data/lib/web/unit/resources/auth/index.html +5 -0
- data/lib/web/unit/resources/badtags.html +7 -0
- data/lib/web/unit/resources/cookie.cgi +33 -0
- data/lib/web/unit/resources/document.xml +13 -0
- data/lib/web/unit/resources/form.html +150 -0
- data/lib/web/unit/resources/frame-0.html +10 -0
- data/lib/web/unit/resources/frame-1.html +10 -0
- data/lib/web/unit/resources/frame.html +10 -0
- data/lib/web/unit/resources/image.html +17 -0
- data/lib/web/unit/resources/images/x.gif +0 -0
- data/lib/web/unit/resources/images/y.gif +0 -0
- data/lib/web/unit/resources/jscript-0.html +10 -0
- data/lib/web/unit/resources/jscript-1.html +10 -0
- data/lib/web/unit/resources/jscript.html +19 -0
- data/lib/web/unit/resources/link.html +19 -0
- data/lib/web/unit/resources/multipart.cgi +28 -0
- data/lib/web/unit/resources/multipart.html +74 -0
- data/lib/web/unit/resources/params.html +65 -0
- data/lib/web/unit/resources/redirect.cgi +13 -0
- data/lib/web/unit/resources/response.html +67 -0
- data/lib/web/unit/resources/simple.cgi +14 -0
- data/lib/web/unit/resources/stock.cgi +35 -0
- data/lib/web/unit/resources/table.html +83 -0
- data/lib/web/unit/response.rb +469 -0
- data/lib/web/unit/response.rb~ +461 -0
- data/lib/web/unit/runtest.rb +44 -0
- data/lib/web/unit/sgml-parser.rb +336 -0
- data/lib/web/unit/table.rb +150 -0
- data/lib/web/unit/testcase.rb +49 -0
- data/lib/web/unit/ui/cui/testrunner.rb +52 -0
- data/lib/web/unit/ui/cui/testrunner.rb~ +50 -0
- data/lib/web/unit/utils.rb +70 -0
- data/lib/web/unit/webunit.rb +28 -0
- data/lib/web/upload.rb +55 -0
- data/lib/web/upload.rb~ +262 -0
- data/lib/web/wiki.rb +506 -0
- data/lib/web/wiki.rb~ +506 -0
- data/lib/web/wiki/linker.rb +72 -0
- data/lib/web/wiki/linker.rb~ +72 -0
- data/lib/web/wiki/mime.rb~ +68 -0
- data/lib/web/wiki/page.rb +192 -0
- data/lib/web/wiki/page.rb~ +192 -0
- data/lib/web/wiki/resources/#edit.html# +65 -0
- data/lib/web/wiki/resources/admin.html +13 -0
- data/lib/web/wiki/resources/admin.html~ +13 -0
- data/lib/web/wiki/resources/asset_history.html +3 -0
- data/lib/web/wiki/resources/basic.html +1 -0
- data/lib/web/wiki/resources/default-content_editor.html +1 -0
- data/lib/web/wiki/resources/default-content_editor.html~ +1 -0
- data/lib/web/wiki/resources/edit.html +1 -1
- data/lib/web/wiki/resources/edit.html~ +1 -1
- data/lib/web/wiki/resources/ekit-content_editor.html +1 -0
- data/lib/web/wiki/resources/home.html +10 -0
- data/lib/web/wiki/resources/home.html~ +10 -0
- data/lib/web/wiki/resources/htmlarea/ChangeLog +1185 -0
- data/lib/web/wiki/resources/htmlarea/dialog.js +72 -0
- data/lib/web/wiki/resources/htmlarea/examples/2-areas.cgi +16 -0
- data/lib/web/wiki/resources/htmlarea/examples/2-areas.html +158 -0
- data/lib/web/wiki/resources/htmlarea/examples/context-menu.html +95 -0
- data/lib/web/wiki/resources/htmlarea/examples/core.html +184 -0
- data/lib/web/wiki/resources/htmlarea/examples/css.html +88 -0
- data/lib/web/wiki/resources/htmlarea/examples/custom.css +29 -0
- data/lib/web/wiki/resources/htmlarea/examples/full-page.html +75 -0
- data/lib/web/wiki/resources/htmlarea/examples/fully-loaded.html +248 -0
- data/lib/web/wiki/resources/htmlarea/examples/index.html +40 -0
- data/lib/web/wiki/resources/htmlarea/examples/spell-checker.html +132 -0
- data/lib/web/wiki/resources/htmlarea/examples/table-operations.html +116 -0
- data/lib/web/wiki/resources/htmlarea/examples/test.cgi +21 -0
- data/lib/web/wiki/resources/htmlarea/htmlarea.css +180 -0
- data/lib/web/wiki/resources/htmlarea/htmlarea.js +2175 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_about.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_center.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_justify.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_left.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_right.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_blank.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_charmap.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_color_bg.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_color_fg.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_copy.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_custom.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_cut.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_bold.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_italic.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_strike.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_sub.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_sup.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_underline.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_help.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_hr.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_html.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_image.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_indent_less.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_indent_more.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_left_to_right.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_link.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_list_bullet.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_list_num.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_paste.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_redo.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_right_to_left.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_save.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_show_border.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_splitcel.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_undo.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/fullscreen_maximize.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/fullscreen_minimize.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/insert_table.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/index.html +199 -0
- data/lib/web/wiki/resources/htmlarea/lang/b5.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/cz.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/da.js +38 -0
- data/lib/web/wiki/resources/htmlarea/lang/de.js +54 -0
- data/lib/web/wiki/resources/htmlarea/lang/ee.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/el.js +75 -0
- data/lib/web/wiki/resources/htmlarea/lang/en.js +88 -0
- data/lib/web/wiki/resources/htmlarea/lang/es.js +51 -0
- data/lib/web/wiki/resources/htmlarea/lang/fi.js +46 -0
- data/lib/web/wiki/resources/htmlarea/lang/fr.js +61 -0
- data/lib/web/wiki/resources/htmlarea/lang/gb.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/he.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/hu.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/it.js +54 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-euc.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-jis.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-sjis.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-utf8.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/lt.js +55 -0
- data/lib/web/wiki/resources/htmlarea/lang/lv.js +55 -0
- data/lib/web/wiki/resources/htmlarea/lang/nb.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/nl.js +90 -0
- data/lib/web/wiki/resources/htmlarea/lang/no.js +79 -0
- data/lib/web/wiki/resources/htmlarea/lang/pl.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/pt_br.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ro.js +80 -0
- data/lib/web/wiki/resources/htmlarea/lang/ru.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/se.js +38 -0
- data/lib/web/wiki/resources/htmlarea/lang/si.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/vn.js +51 -0
- data/lib/web/wiki/resources/htmlarea/license.txt +30 -0
- data/lib/web/wiki/resources/htmlarea/plugins/CSS/css.js +116 -0
- data/lib/web/wiki/resources/htmlarea/plugins/CSS/lang/en.js +2 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/context-menu.js +416 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/de.js +59 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/el.js +57 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/en.js +66 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/nl.js +66 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/menu.css +64 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/full-page.js +143 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/img/docprop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/en.js +25 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/ro.js +25 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/popups/docprop.html +131 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/test.html +89 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/cz.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/da.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/de.js +28 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/en.js +38 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/hu.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/it.js +28 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/ro.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/readme-tech.html +114 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi +210 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-style.css +10 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html +122 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js +397 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-checker.js +79 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/table-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/cz.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/da.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/de.js +81 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/el.js +81 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/en.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/fi.js +66 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/hu.js +63 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/it.js +81 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/nl.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/no.js +91 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/ro.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/table-operations.js +1160 -0
- data/lib/web/wiki/resources/htmlarea/popupdiv.js +369 -0
- data/lib/web/wiki/resources/htmlarea/popups/about.html +378 -0
- data/lib/web/wiki/resources/htmlarea/popups/blank.html +2 -0
- data/lib/web/wiki/resources/htmlarea/popups/custom2.html +35 -0
- data/lib/web/wiki/resources/htmlarea/popups/editor_help.html +16 -0
- data/lib/web/wiki/resources/htmlarea/popups/fullscreen.html +133 -0
- data/lib/web/wiki/resources/htmlarea/popups/insert_image.html +191 -0
- data/lib/web/wiki/resources/htmlarea/popups/insert_table.html +174 -0
- data/lib/web/wiki/resources/htmlarea/popups/link.html +142 -0
- data/lib/web/wiki/resources/htmlarea/popups/old-fullscreen.html +131 -0
- data/lib/web/wiki/resources/htmlarea/popups/old_insert_image.html +206 -0
- data/lib/web/wiki/resources/htmlarea/popups/popup.js +109 -0
- data/lib/web/wiki/resources/htmlarea/popups/select_color.html +347 -0
- data/lib/web/wiki/resources/htmlarea/popupwin.js +139 -0
- data/lib/web/wiki/resources/htmlarea/reference.html +523 -0
- data/lib/web/wiki/resources/htmlarea/release-notes.html +165 -0
- data/lib/web/wiki/resources/ie-content_editor.html +1 -0
- data/lib/web/wiki/resources/ie-content_editor.js +196 -0
- data/lib/web/wiki/resources/illustration.html +1 -0
- data/lib/web/wiki/resources/illustration.html~ +1 -0
- data/lib/web/wiki/resources/images.html +1 -0
- data/lib/web/wiki/resources/index.html +4 -0
- data/lib/web/wiki/resources/index.html~ +4 -0
- data/lib/web/wiki/resources/more_news.html +5 -0
- data/lib/web/wiki/resources/more_news.html~ +5 -0
- data/lib/web/wiki/resources/more_news_rss_0.91.html +23 -0
- data/lib/web/wiki/resources/narf-logo.gif +0 -0
- data/lib/web/wiki/resources/page_history.html +19 -0
- data/lib/web/wiki/resources/page_history.html~ +19 -0
- data/lib/web/wiki/resources/template.html +13 -0
- data/lib/web/wiki/resources/template.html~ +13 -0
- data/lib/web/wiki/resources/test_upload.gif +0 -0
- data/lib/web/wiki/resources/text-styles.css +1 -0
- data/lib/web/writableio.rb +33 -0
- data/narf-0.5.1.gem +0 -0
- data/narf.gemspec +40 -0
- data/narf.gemspec~ +52 -0
- data/pre-setup.rb +5 -0
- data/sapi/apache_cgi/INSTALL.txt~ +9 -0
- data/sapi/apache_cgi/README~ +0 -0
- data/sapi/apache_cgi/src/narf.c +13 -0
- data/sapi/fastcgi/INSTALL.txt~ +17 -0
- data/sapi/mod_ruby/INSTALL.txt~ +5 -0
- data/sapi/webrick/INSTALL.txt~ +21 -0
- data/sapi/webrick/run_webrick.rb~ +16 -0
- data/scripts/dump.rb +14 -0
- data/scripts/makedist.rb +49 -0
- data/scripts/upload.html +5 -0
- data/scripts/uri.rb +41 -0
- data/scripts/uri/common.rb +432 -0
- data/scripts/uri/ftp.rb +149 -0
- data/scripts/uri/generic.rb +1106 -0
- data/scripts/uri/http.rb +76 -0
- data/scripts/uri/https.rb +26 -0
- data/scripts/uri/ldap.rb +238 -0
- data/scripts/uri/mailto.rb +260 -0
- data/scripts/urireg.rb +174 -0
- data/test/bufferedtestrunner.rb +112 -0
- data/test/mod_ruby_stub.rb +39 -0
- data/test/mod_ruby_stub.rb~ +38 -0
- data/test/stringio.rb +2 -0
- data/test/test.action.rb +142 -0
- data/test/test.action.rb~ +142 -0
- data/test/test.app.rb +0 -0
- data/test/test.assertinclude.rb +109 -0
- data/test/test.assertinclude.rb~ +109 -0
- data/test/test.formreader-2.0.rb +352 -0
- data/test/test.formreader.rb +465 -0
- data/test/test.mime-type.rb +23 -0
- data/test/test.narf.cgi.rb +101 -0
- data/test/test.narf.cgi.rb~ +105 -0
- data/test/test.request.rb +328 -0
- data/test/test.request.rb~ +318 -0
- data/test/test.response.rb +565 -0
- data/test/test.response.rb~ +556 -0
- data/test/test.session.rb +50 -0
- data/test/test.simpledispatcher.rb +188 -0
- data/test/test.tagparser.rb +65 -0
- data/test/test.template.rb +831 -0
- data/test/test.template.rb~ +832 -0
- data/test/test.testing2.rb +341 -0
- data/test/test.web.test.rb +463 -0
- data/test/test.web.test.rb~ +461 -0
- data/test/testfiles/basictemplate.tpl +1 -0
- data/test/testfiles/explorer5.multipart.data +9 -0
- data/test/testfiles/form.html +7 -0
- data/test/testfiles/mozilla.multipart.data +9 -0
- data/test/testfiles/netscape4.multipart.data +9 -0
- data/test/testfiles/pic hydra.png +1 -0
- data/test/testfiles/post.data +1 -0
- data/test/testfiles/print.text +1 -0
- data/test/testfiles/text +1 -0
- data/test/webunit/dont_get_it.test_webunit.rb +27 -0
- data/test/webunit/ref +38 -0
- data/test/webunit/resources/uploadfile1.txt +1 -0
- data/test/webunit/resources/uploadfile2.txt +1 -0
- data/test/webunit/test_assert.rb +169 -0
- data/test/webunit/test_cookie.rb +128 -0
- data/test/webunit/test_cookie.rb~ +128 -0
- data/test/webunit/test_domwalker.rb +83 -0
- data/test/webunit/test_form.rb +43 -0
- data/test/webunit/test_form.rb~ +43 -0
- data/test/webunit/test_frame.rb +43 -0
- data/test/webunit/test_htmlelem.rb +75 -0
- data/test/webunit/test_image.rb +46 -0
- data/test/webunit/test_jscript.rb +58 -0
- data/test/webunit/test_link.rb +87 -0
- data/test/webunit/test_multipart.rb +53 -0
- data/test/webunit/test_multipart.rb~ +53 -0
- data/test/webunit/test_params.rb +212 -0
- data/test/webunit/test_params.rb~ +211 -0
- data/test/webunit/test_parser.rb +31 -0
- data/test/webunit/test_response.rb +145 -0
- data/test/webunit/test_response.rb~ +145 -0
- data/test/webunit/test_site/assert.html +101 -0
- data/test/webunit/test_site/assert.html~ +1 -0
- data/test/webunit/test_site/auth/index.html +5 -0
- data/test/webunit/test_site/auth/index.html~ +1 -0
- data/test/webunit/test_site/badtags.html +7 -0
- data/test/webunit/test_site/badtags.html~ +1 -0
- data/test/webunit/test_site/cookie.cgi +37 -0
- data/test/webunit/test_site/cookie.cgi~ +35 -0
- data/test/webunit/test_site/document.xml +13 -0
- data/test/webunit/test_site/document.xml~ +1 -0
- data/test/webunit/test_site/form.html +150 -0
- data/test/webunit/test_site/form.html~ +1 -0
- data/test/webunit/test_site/frame-0.html +10 -0
- data/test/webunit/test_site/frame-0.html~ +1 -0
- data/test/webunit/test_site/frame-1.html +10 -0
- data/test/webunit/test_site/frame-1.html~ +1 -0
- data/test/webunit/test_site/frame.html +10 -0
- data/test/webunit/test_site/frame.html~ +1 -0
- data/test/webunit/test_site/image.html +17 -0
- data/test/webunit/test_site/image.html~ +1 -0
- data/test/webunit/test_site/images/x.gif +0 -0
- data/test/webunit/test_site/images/y.gif +0 -0
- data/test/webunit/test_site/include.cgi~ +10 -0
- data/test/webunit/test_site/jscript-0.html +10 -0
- data/test/webunit/test_site/jscript-0.html~ +1 -0
- data/test/webunit/test_site/jscript-1.html +10 -0
- data/test/webunit/test_site/jscript-1.html~ +1 -0
- data/test/webunit/test_site/jscript.html +19 -0
- data/test/webunit/test_site/jscript.html~ +1 -0
- data/test/webunit/test_site/link.html +19 -0
- data/test/webunit/test_site/link.html~ +1 -0
- data/test/webunit/test_site/multipart.cgi +27 -0
- data/test/webunit/test_site/multipart.cgi~ +25 -0
- data/test/webunit/test_site/multipart.html +74 -0
- data/test/webunit/test_site/multipart.html~ +1 -0
- data/test/webunit/test_site/params.html +65 -0
- data/test/webunit/test_site/params.html~ +1 -0
- data/test/webunit/test_site/redirect.cgi +14 -0
- data/test/webunit/test_site/redirect.cgi~ +14 -0
- data/test/webunit/test_site/response.html +67 -0
- data/test/webunit/test_site/response.html~ +1 -0
- data/test/webunit/test_site/simple.cgi +17 -0
- data/test/webunit/test_site/simple.cgi~ +17 -0
- data/test/webunit/test_site/stock.cgi +36 -0
- data/test/webunit/test_site/stock.cgi~ +34 -0
- data/test/webunit/test_site/table.html +83 -0
- data/test/webunit/test_site/table.html~ +1 -0
- data/test/webunit/test_site/test.cgi~ +25 -0
- data/test/webunit/test_table.rb +70 -0
- data/test/webunit/test_utils.rb +107 -0
- data/test/wiki/test.history.rb +277 -0
- data/test/wiki/test.history.rb~ +254 -0
- data/test/wiki/test.illustration_page.rb +287 -0
- data/test/wiki/test.illustration_page.rb~ +287 -0
- data/test/wiki/test.linker.rb +197 -0
- data/test/wiki/test.tarpit.rb +40 -0
- data/test/wiki/test.wiki.rb +295 -0
- data/test/wiki/test.wiki.rb~ +295 -0
- data/test/wikitestroot/big_image.jpg +0 -0
- data/test/wikitestroot/mime.types +483 -0
- data/test/wikitestroot/test_upload.gif +0 -0
- data/vandals.test.txt +3 -0
- metadata +768 -0
data/README
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
=== Purpose
|
|
2
|
+
|
|
3
|
+
NARF is a replacement for, and derivative of, the Ruby CGI
|
|
4
|
+
library. It exists one reason:
|
|
5
|
+
|
|
6
|
+
* To trivialize web development
|
|
7
|
+
|
|
8
|
+
We hope that these 3 lines of development will accomplish our task:
|
|
9
|
+
|
|
10
|
+
* To provide a clean API for writing Web applications.
|
|
11
|
+
|
|
12
|
+
* To make it very easy to write testable Web applications (using
|
|
13
|
+
Web::Testing), and provide a template system (Web::Narflates).
|
|
14
|
+
|
|
15
|
+
* To test the above goals by developing integrated, high quality,
|
|
16
|
+
configurable versions of common web apps in a simple and easy
|
|
17
|
+
to use manner. The heart of http://www.narf-lib.org, Web::Wiki
|
|
18
|
+
is an easy to use wiki. Not the only one, but it does make
|
|
19
|
+
us eat our own dogfood :-)
|
|
20
|
+
|
|
21
|
+
NARF does all of this as a regular CGI application. It also runs in-process under fastcgi, mod_ruby, and webrick. View these files for details:
|
|
22
|
+
|
|
23
|
+
* sapi/fastcgi/INSTALL.txt
|
|
24
|
+
* sapi/mod_ruby/INSTALL.txt
|
|
25
|
+
* sapi/webrick/INSTALL.txt
|
|
26
|
+
|
|
27
|
+
=== Installation
|
|
28
|
+
|
|
29
|
+
Run the installer for NARF:
|
|
30
|
+
|
|
31
|
+
ruby build.rb test (optional)
|
|
32
|
+
|
|
33
|
+
ruby install.rb config
|
|
34
|
+
ruby install.rb setup
|
|
35
|
+
ruby install.rb install
|
|
36
|
+
|
|
37
|
+
=== Dependencies
|
|
38
|
+
|
|
39
|
+
NARF requires the following packages on ruby 1.6. These packages are included in ruby 1.8:
|
|
40
|
+
|
|
41
|
+
testunit (unit testing framework):
|
|
42
|
+
http://testunit.talbott.ws/packages/testunit-0.1.6.tar.gz
|
|
43
|
+
|
|
44
|
+
strscan (string scanner library):
|
|
45
|
+
http://www.loveruby.net/archive/strscan/strscan-0.6.5.tar.gz
|
|
46
|
+
|
|
47
|
+
You can use raa-install (http://www.ruby-lang.org/raa/list.rhtml?id=729) for
|
|
48
|
+
this:
|
|
49
|
+
raa-install -i testunit
|
|
50
|
+
raa-install -i strscan
|
|
51
|
+
|
|
52
|
+
=== Hello World
|
|
53
|
+
|
|
54
|
+
require 'web'
|
|
55
|
+
Web << 'Hello World'
|
|
56
|
+
|
|
57
|
+
=== Testing an App
|
|
58
|
+
|
|
59
|
+
If you haven't noticed, NARF has a cgi style api. It's also has a testing api. Given these files:
|
|
60
|
+
|
|
61
|
+
script.rb
|
|
62
|
+
test.rb
|
|
63
|
+
|
|
64
|
+
where script.rb is:
|
|
65
|
+
|
|
66
|
+
#!/usr/bin/ruby
|
|
67
|
+
require 'web'
|
|
68
|
+
|
|
69
|
+
Web << "param is #{Web["param"]}"
|
|
70
|
+
|
|
71
|
+
and test.rb is:
|
|
72
|
+
|
|
73
|
+
require 'web'
|
|
74
|
+
require 'test/unit'
|
|
75
|
+
|
|
76
|
+
class MyAppTest < Test::Unit::TestCase
|
|
77
|
+
include Web::Testing
|
|
78
|
+
|
|
79
|
+
def test_prints_content
|
|
80
|
+
do_request "script.rb", "param" => "THIS!"
|
|
81
|
+
assert_content "param is THIS!"
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
Do this to run tests:
|
|
86
|
+
|
|
87
|
+
ruby test.rb
|
|
88
|
+
|
|
89
|
+
See Web::Testing for more examples.
|
|
90
|
+
|
|
91
|
+
=== Websites
|
|
92
|
+
|
|
93
|
+
Home page:
|
|
94
|
+
http://www.narf-lib.org
|
|
95
|
+
|
|
96
|
+
Project info page, including downloads and CVS instructions:
|
|
97
|
+
http://www.sourceforge.net/projects/narf-lib
|
|
98
|
+
|
|
99
|
+
=== Credits
|
|
100
|
+
|
|
101
|
+
Narf was written by Tom Clarke and Patrick May, partly based on cgi.rb
|
|
102
|
+
written by Wakou Aoyama. It makes significant use of ruby-htmltools,
|
|
103
|
+
written by Ned Konz. Also, Keunwoo Lee patched Request.read_multipart
|
|
104
|
+
to be cleaner.
|
|
105
|
+
|
|
106
|
+
NARF contains code from the following projects, and we are in their debt:
|
|
107
|
+
|
|
108
|
+
ruby-htmltools::
|
|
109
|
+
This is a Ruby library for building trees representing HTML structure.
|
|
110
|
+
http://bike-nomad.com/ruby
|
|
111
|
+
sgml-parser::
|
|
112
|
+
The html-parser package is a variant language implementation of the
|
|
113
|
+
Python's SGML parser (sgmllib.py), HTML parser (htmllib.py) and
|
|
114
|
+
Formatter (formatter.py).
|
|
115
|
+
http://www.jin.gr.jp/%7Enahi/Ruby/html-parser/README.html
|
|
116
|
+
webunit::
|
|
117
|
+
WebUnit is Ruby API for testing html/cgi without browser, and is
|
|
118
|
+
idealy suited for automated unit testing of web sites when combined
|
|
119
|
+
with a Ruby unit test framework such as RubyUnit. It was designed
|
|
120
|
+
and implemented by Masaki Suketa.
|
|
121
|
+
http://www.xpenguin.biz/download/webunit/index-en.html
|
|
122
|
+
|
|
123
|
+
Thanks also go to http://www.sourceforge.net for hosting the
|
|
124
|
+
project's CVS and website
|
data/TODO
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
=== TODO:
|
|
2
|
+
|
|
3
|
+
Miscellaneous
|
|
4
|
+
|
|
5
|
+
* Fix tests that rely on tmp, to work on Windows
|
|
6
|
+
|
|
7
|
+
* Remove Web.process from all tests
|
|
8
|
+
(how about, seperate cgi tests from framework tests instead of
|
|
9
|
+
deleting all the cgi tests. and move Web.process to Web::CGI)
|
|
10
|
+
|
|
11
|
+
* Remove all rdoc files from CVS
|
|
12
|
+
|
|
13
|
+
* Rename repository to narf-lib or narf
|
|
14
|
+
|
|
15
|
+
Web::Narflates
|
|
16
|
+
|
|
17
|
+
* Replace the Foreach syntax with the following:
|
|
18
|
+
<narf:foreach item="i" in="credits">
|
|
19
|
+
|
|
20
|
+
* Add support for RadioButtons
|
|
21
|
+
|
|
22
|
+
* pass through all values not depended on by the tag parser.
|
|
23
|
+
|
|
24
|
+
* Add support for links so that they correctly link to the current
|
|
25
|
+
cgi, or to a different one.
|
|
26
|
+
|
|
27
|
+
* Support form submits, and redirects to urls of the form "?foo=bar",
|
|
28
|
+
ie no script is mentioned.
|
|
29
|
+
|
|
30
|
+
* Provide a hook into test_unit to allow sessions to be automatically reset
|
|
31
|
+
before a setup
|
|
32
|
+
|
|
33
|
+
* Have the tag parser report which tag was not matched
|
|
34
|
+
|
|
35
|
+
* The following line produces an unhelpful error message:
|
|
36
|
+
<narf:foreach from"items" item="item">
|
|
37
|
+
|
|
38
|
+
* Make VarNotFoundException report a better error message, including
|
|
39
|
+
line number and what var was not found. Print out some context from
|
|
40
|
+
the template too.
|
|
41
|
+
|
|
42
|
+
* Add better error reporting (including line numbers and context) for
|
|
43
|
+
template parse errors.
|
|
44
|
+
|
|
45
|
+
* Add tests to test Web::Link
|
|
46
|
+
|
|
47
|
+
Web::Testing
|
|
48
|
+
|
|
49
|
+
* Allow clicking of links in a test.
|
|
50
|
+
|
|
51
|
+
* Add support for submitting a form to a CGI other than the current one.
|
|
52
|
+
|
|
53
|
+
* Have Values in textarea's and value attributes in other fields
|
|
54
|
+
correctly escaped so all escaping issues are handled.
|
|
55
|
+
|
|
56
|
+
* Add support for specific buttons to be submitted on a form.
|
|
57
|
+
|
|
58
|
+
* Provide a default form submit that submits any un-named form on the
|
|
59
|
+
page.
|
|
60
|
+
|
|
61
|
+
* Allow a request to be made directly to a form, passing in objects
|
|
62
|
+
(objects should be serialized, unserialized before passing)
|
|
63
|
+
|
|
64
|
+
* Add an assert that a particular template was used
|
|
65
|
+
assert_form_displayed MyTemplate
|
|
66
|
+
|
|
67
|
+
* Add a way to find out how long an array is in a test
|
|
68
|
+
|
|
69
|
+
* Add error reporting for when a template can not be found
|
|
70
|
+
|
|
71
|
+
* Report errors for unrecognized parameters for do_request
|
|
72
|
+
|
|
73
|
+
* Have assert_includes handle array fields to allow for parameters
|
|
74
|
+
with array types.
|
|
75
|
+
|
|
76
|
+
Web::SimpleDispatcher
|
|
77
|
+
|
|
78
|
+
* Support for useful data-binding might include
|
|
79
|
+
- Optionally, not having eveything written back to the form
|
|
80
|
+
- Automatic data type conversions, perhaps specified in a form tag.
|
|
81
|
+
|
|
82
|
+
* Submit could do with a more helpful error message. If a field is not
|
|
83
|
+
present, it could list out the fields that are present.
|
|
84
|
+
|
|
85
|
+
* Have do request automatically encode objects
|
|
86
|
+
|
|
87
|
+
* Make sure round trip object serialization works correctly
|
|
88
|
+
|
data/bin/narftest
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
require 'test/unit'
|
|
3
|
+
require 'test/unit/ui/console/testrunner'
|
|
4
|
+
require 'test/unit/testcase'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
$:.replace(["#{Dir.pwd}/src","#{Dir.pwd}/config"].concat($:))
|
|
8
|
+
|
|
9
|
+
require 'web'
|
|
10
|
+
|
|
11
|
+
$RUNNING_AS_TEST=true
|
|
12
|
+
|
|
13
|
+
Dir["tests/*.rb"].each { |test|
|
|
14
|
+
require test
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
Web.set_docroot File.join(Dir.pwd,"html")
|
data/bug.rb
ADDED
data/build.rb
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# require 'stringio'
|
|
4
|
+
|
|
5
|
+
# GC.disable
|
|
6
|
+
require 'ftools'
|
|
7
|
+
require 'find'
|
|
8
|
+
|
|
9
|
+
def temp_dir
|
|
10
|
+
(ENV["TEMP"] || "/tmp").gsub(/\\+/, "/")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def make_temp( path )
|
|
14
|
+
File.join( temp_dir, path)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def File.rm_rf( path )
|
|
20
|
+
if File.exists? path
|
|
21
|
+
doomed = []
|
|
22
|
+
Find.find( path ) { |filename|
|
|
23
|
+
doomed.push filename
|
|
24
|
+
}
|
|
25
|
+
doomed.reverse.each{ |filename|
|
|
26
|
+
if File.directory? filename
|
|
27
|
+
Dir.rmdir( filename )
|
|
28
|
+
else
|
|
29
|
+
File.delete( filename )
|
|
30
|
+
end
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
module Test
|
|
36
|
+
module Unit
|
|
37
|
+
class TestCase
|
|
38
|
+
@@subclasses = []
|
|
39
|
+
|
|
40
|
+
def TestCase.inherited(sub)
|
|
41
|
+
@@subclasses.push sub
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def TestCase.all_suite
|
|
45
|
+
suite = Test::Unit::TestSuite.new
|
|
46
|
+
@@subclasses.each{ |sub|
|
|
47
|
+
suite << sub.suite # te
|
|
48
|
+
}
|
|
49
|
+
suite
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
class Target
|
|
56
|
+
@@targets = {}
|
|
57
|
+
def Target.run(name="")
|
|
58
|
+
if (keys.include? name)
|
|
59
|
+
@@targets[name].run
|
|
60
|
+
else
|
|
61
|
+
help_text
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def Target.keys
|
|
66
|
+
@@targets.keys.sort
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def Target.first
|
|
70
|
+
keys.first
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def Target.justify
|
|
74
|
+
justify = 0
|
|
75
|
+
|
|
76
|
+
keys.each { |key|
|
|
77
|
+
justify = key.length if (key.length > justify)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
justify + 1
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def Target.help_text
|
|
84
|
+
text = "Usage: ruby build.rb [ #{ keys.join( " | ") } ]" + $/
|
|
85
|
+
text += @@targets[keys.first].help_text( "Options: ", justify )
|
|
86
|
+
keys.slice(1...keys.length).each{ |key|
|
|
87
|
+
text += @@targets[key].help_text( " ", justify )
|
|
88
|
+
}
|
|
89
|
+
puts text
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
attr_reader :name, :description
|
|
93
|
+
def initialize( name, description, &run )
|
|
94
|
+
@name = name
|
|
95
|
+
@description = description
|
|
96
|
+
@run = run || Target.method(:help_text)
|
|
97
|
+
@@targets[name] = self
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def run
|
|
101
|
+
$stderr.puts "Target: " + name + " | " + description
|
|
102
|
+
@run.call
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def help_text( prefix, justify )
|
|
106
|
+
prefix + name.ljust(justify) + " -- " + description + $/
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
Target.new( "upload_doc", "upload doc" ) {
|
|
111
|
+
Target.run( "rdoc" )
|
|
112
|
+
`scp -r doc/rdoc/* patsplat@ssh.narf-lib.org:~/narf-lib.org/doc`
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
Target.new( "rdoc", "build rdoc" ) {
|
|
116
|
+
begin
|
|
117
|
+
require 'rdoc/rdoc'
|
|
118
|
+
|
|
119
|
+
rdoc = RDoc::RDoc.new
|
|
120
|
+
rdoc.document( [
|
|
121
|
+
# set the output directory
|
|
122
|
+
"-o",
|
|
123
|
+
"doc/rdoc/",
|
|
124
|
+
|
|
125
|
+
# set the main page
|
|
126
|
+
"--main",
|
|
127
|
+
"README",
|
|
128
|
+
|
|
129
|
+
# list the files to be excluded
|
|
130
|
+
"--exclude",
|
|
131
|
+
/htmltools|htmlparser|unit|writableio|tagparser|strscanparser|web\/action|assertinclude|buffer|formreader|forms|runner|simpledispatcher|traceoutput|linker|page|lib\/web\/sapi/,
|
|
132
|
+
|
|
133
|
+
# list the files / dirs to be parsed for documentation
|
|
134
|
+
"README",
|
|
135
|
+
"examples/examples.rdoc",
|
|
136
|
+
"lib/web.rb",
|
|
137
|
+
"lib/web",
|
|
138
|
+
"doc/apache_cgi.txt",
|
|
139
|
+
"doc/fastcgi.txt",
|
|
140
|
+
"doc/mod_ruby.txt",
|
|
141
|
+
"doc/webrick.txt"
|
|
142
|
+
|
|
143
|
+
] )
|
|
144
|
+
rescue LoadError => error
|
|
145
|
+
puts "Building the rdocs will require 'rdoc/rdoc'"
|
|
146
|
+
puts "visit http://rdoc.sourceforge.net/ to obtain this library"
|
|
147
|
+
end
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
Target.new( "test", "run narf unit tests" ) {
|
|
151
|
+
require 'test/unit'
|
|
152
|
+
require 'test/unit/ui/console/testrunner'
|
|
153
|
+
|
|
154
|
+
$:.replace(['lib'].concat($:))
|
|
155
|
+
|
|
156
|
+
require 'web'
|
|
157
|
+
|
|
158
|
+
Dir["test/*.rb"].each { |test|
|
|
159
|
+
require test
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
# buffered test runner is a custom made test runner
|
|
163
|
+
# that lives in the test dir
|
|
164
|
+
Test::Unit::UI::Console::TestRunner.new(Test::Unit::TestCase.all_suite
|
|
165
|
+
).start
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
Target.new( "testwiki", "test narf wiki" ) {
|
|
169
|
+
require 'test/unit'
|
|
170
|
+
require 'test/unit/ui/console/testrunner'
|
|
171
|
+
|
|
172
|
+
$:.replace(['./lib/'].concat($:))
|
|
173
|
+
|
|
174
|
+
require 'web'
|
|
175
|
+
require 'web/wiki'
|
|
176
|
+
|
|
177
|
+
def setup_wiki
|
|
178
|
+
File.rm_rf( Web::Wiki::store_dir )
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
alias :teardown_wiki :setup_wiki
|
|
182
|
+
|
|
183
|
+
Web::Wiki::set_pref(:store_dir => make_temp("test.pages/"),
|
|
184
|
+
:store_url => "../test.pages/",
|
|
185
|
+
:tarpit_dir => make_temp("tarpit/"),
|
|
186
|
+
:vandals => "vandals.test.txt",
|
|
187
|
+
:baseurl => "wiki.rb" )
|
|
188
|
+
Web.set_docroot( File.join(Dir.pwd,"examples") )
|
|
189
|
+
|
|
190
|
+
# a bunch of the illustration_page functions don't work on windows
|
|
191
|
+
#require 'test/wiki/test.illustration_page.rb'
|
|
192
|
+
Dir["test/wiki/*.rb"].each { |test|
|
|
193
|
+
require test
|
|
194
|
+
}
|
|
195
|
+
#require 'test/wiki/test.wiki.rb'
|
|
196
|
+
|
|
197
|
+
# buffered test runner is a custom made test runner
|
|
198
|
+
# that lives in the test dir
|
|
199
|
+
Test::Unit::UI::Console::TestRunner.new(Test::Unit::TestCase.all_suite).start
|
|
200
|
+
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
Target.new( "testwebunit", "test web unit" ) {
|
|
204
|
+
$: << "lib"
|
|
205
|
+
ENV['URLBASE'] = ARGV[1] || "http://www.hexane.org/webtest/"
|
|
206
|
+
|
|
207
|
+
require 'web/unit/runtest'
|
|
208
|
+
|
|
209
|
+
Web::Unit.runtest(Dir["test/webunit/test*.rb"])
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
Target.new( "testexamples", "test narf examples" ) {
|
|
213
|
+
require 'test/unit'
|
|
214
|
+
require 'test/unit/ui/console/testrunner'
|
|
215
|
+
|
|
216
|
+
$:.replace(['./lib/'].concat($:))
|
|
217
|
+
|
|
218
|
+
require 'web'
|
|
219
|
+
require 'web/wiki'
|
|
220
|
+
|
|
221
|
+
Web.set_docroot File.join(Dir.pwd,"examples")
|
|
222
|
+
|
|
223
|
+
Dir["examples/test/*.rb"].each { |test|
|
|
224
|
+
require test
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
# buffered test runner is a custom made test runner
|
|
228
|
+
# that lives in the test dir
|
|
229
|
+
Test::Unit::UI::Console::TestRunner.new(Test::Unit::TestCase.all_suite ).start
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def install_dir
|
|
234
|
+
$:.find { |dir|
|
|
235
|
+
/site_ruby\/\d.\d\z/ =~ dir
|
|
236
|
+
} + "/"
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
FILES = [ "web",
|
|
240
|
+
"web.rb",
|
|
241
|
+
"web/action.rb",
|
|
242
|
+
"web/assertinclude.rb",
|
|
243
|
+
"web/buffer.rb",
|
|
244
|
+
"web/request.rb",
|
|
245
|
+
"web/session.rb",
|
|
246
|
+
"web/template.rb",
|
|
247
|
+
"web/writableio.rb",
|
|
248
|
+
"web/rhp.rb" ]
|
|
249
|
+
|
|
250
|
+
OLD_FILES = [ "web",
|
|
251
|
+
"narf.rb",
|
|
252
|
+
"narf/app.rb",
|
|
253
|
+
"narf/assertinclude.rb",
|
|
254
|
+
"narf/buffer.rb",
|
|
255
|
+
"narf/request.rb",
|
|
256
|
+
"narf/session.rb",
|
|
257
|
+
"narf/template.rb",
|
|
258
|
+
"narf/writableio.rb" ]
|
|
259
|
+
|
|
260
|
+
Target.new( "uninstall", "delete narf files from site_ruby" ){
|
|
261
|
+
|
|
262
|
+
file_list = (FILES.reverse | OLD_FILES.reverse ).collect{|file|
|
|
263
|
+
install_dir + file
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
file_list.push( "/usr/bin/rhp")
|
|
267
|
+
|
|
268
|
+
file_list.each{ |file|
|
|
269
|
+
if File.exists? file
|
|
270
|
+
if File.stat(file).directory?
|
|
271
|
+
Dir.delete file
|
|
272
|
+
else
|
|
273
|
+
File.delete file
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
Target.new( "compile_narf_runner", "" ) {
|
|
280
|
+
Dir.mkdir "bin" unless File.exists? "bin"
|
|
281
|
+
narf_c = File.open( 'sapi/apache_cgi/src/narf.c', 'r' ) { |f|
|
|
282
|
+
f.read
|
|
283
|
+
}
|
|
284
|
+
require 'rbconfig'
|
|
285
|
+
narf_c.gsub!( /(ruby)/, Config::CONFIG["bindir"] + "/ruby" )
|
|
286
|
+
File.open( 'sapi/apache_cgi/src/narf-path_adjusted.c', 'wb') { |f|
|
|
287
|
+
f.write(narf_c)
|
|
288
|
+
}
|
|
289
|
+
`gcc sapi/apache_cgi/src/narf-path_adjusted.c -o sapi/apache_cgi/bin/narf`
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
Target.new( "install", "install narf in site ruby" ){
|
|
293
|
+
|
|
294
|
+
Target.run( "uninstall" )
|
|
295
|
+
Target.run( "compile_rhp" )
|
|
296
|
+
|
|
297
|
+
FILES.each{ |file|
|
|
298
|
+
from, to = "lib/" + file, install_dir + file
|
|
299
|
+
|
|
300
|
+
if (File.stat(from).directory?)
|
|
301
|
+
unless File.exists? to
|
|
302
|
+
puts "Creating #{to}"
|
|
303
|
+
Dir.mkdir to
|
|
304
|
+
end
|
|
305
|
+
else
|
|
306
|
+
puts "#{ from } => #{ to }...\n"
|
|
307
|
+
File.copy( from, to )
|
|
308
|
+
end
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
File.copy( "rhp", "/usr/bin/rhp" )
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
Target.run( ARGV[0] ) if ($0 == __FILE__)
|