narf 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,263 @@
|
|
1
|
+
<?xml version="1.0" ?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
6
|
+
<head>
|
7
|
+
<title>index-ja.rd</title>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<h1><a name="label:0" id="label:0">WebUnit</a></h1><!-- RDLabel: "WebUnit" -->
|
11
|
+
<h2><a name="label:1" id="label:1">WebUnit�Ȥ�</a></h2><!-- RDLabel: "WebUnit�Ȥ�" -->
|
12
|
+
<p>WebUnit �ϥ֥饦������Ѥ����˥����֥�����(html/cgi)��
|
13
|
+
�ƥ��Ȥ��뤿��� Ruby API �Ǥ���
|
14
|
+
���Ĥ���ν줿Ruby�Υƥ��ȥե졼���� - RubyUnit���Ȥ߹�碌�ƻ��Ѥ���
|
15
|
+
�����֥�����(html/cgi)�Υƥ��Ȥ�ư�����뤳�Ȥ��Ǥ��ޤ���</p>
|
16
|
+
<p>HttpUnit��JUnit��Ȥäƥƥ��ȤƤ����ΤǤ�����
|
17
|
+
�ץ������� ruby �ǽƤ���Ȥ��ˡ�
|
18
|
+
�ƥ��Ȥ� java �ǽΤϷ��ʤΤǡ����ޤ�����</p>
|
19
|
+
<h2><a name="label:2" id="label:2">�����ǻ��Ѥ��Ƥ��륽�եȥ�����</a></h2><!-- RDLabel: "�����ǻ��Ѥ��Ƥ��륽�եȥ�����" -->
|
20
|
+
<p>WebUnit �Ǥϰʲ��Υ��եȥ���������Ѥ��Ƥ��ޤ���
|
21
|
+
htmlrepair/htmlsplit �� html-parser �� WebUnit ��Ʊ�����ޤ�����</p>
|
22
|
+
<p>�ʤ���RubyUnit �� NQXML�Ϥ��餫���ᥤ�ȡ��뤷�Ƥ���ɬ�פ�����ޤ���</p>
|
23
|
+
<ul>
|
24
|
+
<li><a href="http://homepage1.nifty.com/markey/ruby/rubyunit/index_e.html">RubyUnit</a>
|
25
|
+
�ޤ��� <a href="http://www.ruby-lang.org/raa/list.rhtml?name=testunit">testunit</a></li>
|
26
|
+
<li><a href="http://www.moonwolf.com/ruby/">htmlrepair/htmlsplit</a></li>
|
27
|
+
<li><a href="http://www.jin.gr.jp/~nahi/Ruby/html-parser/README.htm">html-parser</a></li>
|
28
|
+
<li><a href="http://www.io.com/~jimm/downloads/nqxml/index.html">NQXML</a>
|
29
|
+
�ޤ��� <a href="http://www.ruby-lang.org/raa/list.rhtml?name=rexml">REXML</a></li>
|
30
|
+
</ul>
|
31
|
+
<h2><a name="label:3" id="label:3">����������ɤȥ��ȡ���</a></h2><!-- RDLabel: "����������ɤȥ��ȡ���" -->
|
32
|
+
<p><a href="http://xpenguin.biz/download/webunit/"><URL:http://xpenguin.biz/download/webunit/></a> ����
|
33
|
+
webunit-20YYMMDD-*.tar.gz �����������ɤ���Ŭ���ʥǥ��쥯�ȥ��Ÿ�����ơ�
|
34
|
+
<code>ruby install.rb</code> ���Ƥ���������</p>
|
35
|
+
<h2><a name="label:4" id="label:4">������</a></h2><!-- RDLabel: "������" -->
|
36
|
+
<p>cgi �ʲ��� httpd ���饢�������Ǥ������ webunit �ȸ���̾���ǥ���ơ�
|
37
|
+
test/test_*.rb �� runtest.rb �ʤɤ����Ѥ��Ƽ¹Ԥ��ޤ���</p>
|
38
|
+
<pre>% ln -s webunit/cgi $DOCUMENT_ROOT/tmp/webunit
|
39
|
+
% cp webunit/cgi/auth/.htpasswd /tmp
|
40
|
+
% URLBASE=http://localhost/tmp/ runtest.rb test_link.rb
|
41
|
+
|
42
|
+
|
43
|
+
require 'webunit/webunit'
|
44
|
+
|
45
|
+
# get start HTML page
|
46
|
+
url = 'test-1.html'
|
47
|
+
response = WebUnit::Response::get( url )
|
48
|
+
|
49
|
+
# test HTML page contents
|
50
|
+
assert_title( 'test-1', response )
|
51
|
+
assert_equals( 1, response.forms.size )
|
52
|
+
|
53
|
+
form = response.form
|
54
|
+
|
55
|
+
# test form of HTML page contents
|
56
|
+
assert_equals( 'ntext', form.parameters[0].name )
|
57
|
+
assert_equals( 'npassword', form.parameters[1].name )
|
58
|
+
|
59
|
+
# execute CGI script, after setting parameters
|
60
|
+
form.parameters[0].value = "this is test"
|
61
|
+
form.parameters[1].value = '!@#$%'
|
62
|
+
response = form.submit
|
63
|
+
|
64
|
+
# test output from CGI script
|
65
|
+
assert_equals( 'result', response.title )
|
66
|
+
assert_equals( 1, response.links.size )
|
67
|
+
assert_equals( 'http://....', response.links[0] )
|
68
|
+
|
69
|
+
# read link
|
70
|
+
response = response.links[0].read</pre>
|
71
|
+
<h2><a name="label:5" id="label:5">���۾��</a></h2><!-- RDLabel: "���۾��" -->
|
72
|
+
<p>�ܥץ������ϥե���եȥ������Ǥ���
|
73
|
+
GPL(the GNU GeneralPublic License)��
|
74
|
+
�ޤ��ϡ�Ruby���Τ�Ʊ�������ܥץ�����������ۤǤ��ޤ���
|
75
|
+
GPL�ˤĤ��Ƥ�COPYING�ե�����Ȥ��Ʋ�������</p>
|
76
|
+
<h2><a name="label:6" id="label:6">�Х���ݡ���</a></h2><!-- RDLabel: "�Х���ݡ���" -->
|
77
|
+
<p><a href="mailto:yt@xpenguin.biz"><URL:mailto:yt@xpenguin.biz></a></p>
|
78
|
+
<h2><a name="label:7" id="label:7">�ѹ�����</a></h2><!-- RDLabel: "�ѹ�����" -->
|
79
|
+
<h3><a name="label:8" id="label:8">20020410-alpha -> 20030121</a></h3><!-- RDLabel: "20020410-alpha -> 20030121" -->
|
80
|
+
<ul>
|
81
|
+
<li>enable using "Test::Unit" for Testing Framework. (by Kouhei Sutou)</li>
|
82
|
+
<li>appends XML Parser support "REXML". (by Kouhei Sutou)</li>
|
83
|
+
<li>supports multipart formdata. ready file transfer test. (by Narushima Hironori)</li>
|
84
|
+
<li>changes document type sdf to rd. (by Narushima Hironori)</li>
|
85
|
+
<li>changes installer to setup.rb. (by Narushima Hironori)</li>
|
86
|
+
<li>fix Textarea#query_data and Parser#feed. (Thanks to Torsten Rueger)</li>
|
87
|
+
</ul>
|
88
|
+
<h3><a name="label:9" id="label:9">20020330-alpha -> 20020410-alpha</a></h3><!-- RDLabel: "20020330-alpha -> 20020410-alpha" -->
|
89
|
+
<ul>
|
90
|
+
<li>XmlDocument -> DomWalker : rename</li>
|
91
|
+
<li>fix for 1.7 parser.(Thanks to Kazuhiro NISHIYAMA)</li>
|
92
|
+
<li>fix install.rb for "--program-suffix".(Thanks to Kazuhiro NISHIYAMA)</li>
|
93
|
+
</ul>
|
94
|
+
<h3><a name="label:10" id="label:10">20011019-alpha -> 20020330-alpha</a></h3><!-- RDLabel: "20011019-alpha -> 20020330-alpha" -->
|
95
|
+
<ul>
|
96
|
+
<li>XmlDocument#size : new.</li>
|
97
|
+
<li>mail addres of author is changed.</li>
|
98
|
+
</ul>
|
99
|
+
<h3><a name="label:11" id="label:11">20011019-alpha -> 20011022-alpha</a></h3><!-- RDLabel: "20011019-alpha -> 20011022-alpha" -->
|
100
|
+
<ul>
|
101
|
+
<li>XmlDocument#change_node : bug fix.</li>
|
102
|
+
</ul>
|
103
|
+
<h3><a name="label:12" id="label:12">20011002-alpha -> 20011019-alpha</a></h3><!-- RDLabel: "20011002-alpha -> 20011019-alpha" -->
|
104
|
+
<ul>
|
105
|
+
<li>XmlDocument : new - class to test xml document.</li>
|
106
|
+
</ul>
|
107
|
+
<h3><a name="label:13" id="label:13">20010919-alpha -> 20011002-alpha</a></h3><!-- RDLabel: "20010919-alpha -> 20011002-alpha" -->
|
108
|
+
<ul>
|
109
|
+
<li>Parser#do_input : support input tag without form tag. (Thanks to IKAGAWA, Kauztomo)</li>
|
110
|
+
<li>Response#init_http : append header(Content-Type) for POST method.</li>
|
111
|
+
<li>Response#init_http : catch IOError of HTTP::finish (for ruby 1.6.5)</li>
|
112
|
+
</ul>
|
113
|
+
<h3><a name="label:14" id="label:14">20010912-alpha -> 20010919-alpha</a></h3><!-- RDLabel: "20010912-alpha -> 20010919-alpha" -->
|
114
|
+
<ul>
|
115
|
+
<li>Response#get,post,init_http : to use BasicAuth.</li>
|
116
|
+
<li>sample/cgi : remove space charactor between '#!' and '/usr/bin/env'</li>
|
117
|
+
</ul>
|
118
|
+
<h3><a name="label:15" id="label:15">20010714-alpha -> 20010912-alpha</a></h3><!-- RDLabel: "20010714-alpha -> 20010912-alpha" -->
|
119
|
+
<ul>
|
120
|
+
<li>Responss : use Net::HTTP::new_implementation.</li>
|
121
|
+
<li>HtmlElem : fix inspect output when @tag is nil.( as toplevel )</li>
|
122
|
+
<li>sgml-parser.rb(line:257) : bug fix, fail when nested tags.</li>
|
123
|
+
<li>html-parser/install.rb : fix.</li>
|
124
|
+
</ul>
|
125
|
+
<h3><a name="label:16" id="label:16">20010618-alpha -> 20010714-alpha</a></h3><!-- RDLabel: "20010618-alpha -> 20010714-alpha" -->
|
126
|
+
<ul>
|
127
|
+
<li>Parser : add link tag to SingleTags.</li>
|
128
|
+
<li>Parser#start_a : execute complete_url, unless the href begins '#'.</li>
|
129
|
+
<li>Link : append onClick attribute, and reader.</li>
|
130
|
+
<li>Response#init_http : retry, when Errno::EPIPE</li>
|
131
|
+
<li>Response::html : append <html> tag, when there is no <html> tag.</li>
|
132
|
+
</ul>
|
133
|
+
<h3><a name="label:17" id="label:17">20010611-alpha -> 20010618-alpha</a></h3><!-- RDLabel: "20010611-alpha -> 20010618-alpha" -->
|
134
|
+
<ul>
|
135
|
+
<li>add sample</li>
|
136
|
+
</ul>
|
137
|
+
<h3><a name="label:18" id="label:18">20010604-alpha -> 20010611-alpha</a></h3><!-- RDLabel: "20010604-alpha -> 20010611-alpha" -->
|
138
|
+
<ul>
|
139
|
+
<li>HtmlElem#name : new</li>
|
140
|
+
<li>Response#init_html : new, to use WebUnit without http access.</li>
|
141
|
+
<li>(code using Response#new) : change to Response#new.init_http</li>
|
142
|
+
<li>Response#init_http,feed, : divide initialize.</li>
|
143
|
+
<li>perse_url : correspond to relative url and 'file:' prefix.</li>
|
144
|
+
<li>perse_url : add '-' to regexp, will match to hostname.</li>
|
145
|
+
<li>assert_urls : add success case, use orthop_url for expected url.</li>
|
146
|
+
</ul>
|
147
|
+
<h3><a name="label:19" id="label:19">20010521-alpha -> 20010604-alpha</a></h3><!-- RDLabel: "20010521-alpha -> 20010604-alpha" -->
|
148
|
+
<ul>
|
149
|
+
<li>include contrib/{html-parser,htmlrepair} : Thanks these authors.
|
150
|
+
- html-parser : Takahiro Maebashi
|
151
|
+
- htmlrepair : MoonWolf</li>
|
152
|
+
<li>installer supports to install contrib/{html-parser,htmlrepair}</li>
|
153
|
+
</ul>
|
154
|
+
<h3><a name="label:20" id="label:20">20010507-alpha -> 20010521-alpha</a></h3><!-- RDLabel: "20010507-alpha -> 20010521-alpha" -->
|
155
|
+
<ul>
|
156
|
+
<li>Response#initialize : use $URLBASE when url is relational</li>
|
157
|
+
<li>Parser#do_img: new</li>
|
158
|
+
<li>Response#add_image, Response#images, Response#image : new</li>
|
159
|
+
<li>Image : new</li>
|
160
|
+
</ul>
|
161
|
+
<h3><a name="label:21" id="label:21">20010330-alpha -> 20010507-alpha</a></h3><!-- RDLabel: "20010330-alpha -> 20010507-alpha" -->
|
162
|
+
<ul>
|
163
|
+
<li>sample, contrib: only directory</li>
|
164
|
+
<li>install.rb : new</li>
|
165
|
+
<li>all files : reject TAB code ( expect COPYING and Makefile )</li>
|
166
|
+
<li>bin : make some commands</li>
|
167
|
+
<li>doc : separate document files from cgi directory</li>
|
168
|
+
<li>tests : split files, and add testcase methods.</li>
|
169
|
+
<li>Utils#complete_url : bug fix</li>
|
170
|
+
<li>TestCase#setup : set $URLBASE as @urlbase, Response::reset, restore Cookies</li>
|
171
|
+
<li>TestCase#teardown : Response::reset, keep Cookies</li>
|
172
|
+
<li>Cookies#cookies/cookies= : new</li>
|
173
|
+
<li>Response#reset: close http connection</li>
|
174
|
+
<li>assert_urls : new</li>
|
175
|
+
<li>WebUnit#assert_equal_url : -> assert_urls</li>
|
176
|
+
<li>Select#value : new</li>
|
177
|
+
<li>assert_select_option : new</li>
|
178
|
+
<li>HtmlElem#initialize : add default value for 2nd argument.</li>
|
179
|
+
<li>assert_title : new - show response.body with message.</li>
|
180
|
+
<li>HtmlElem#extract : new - make string with nested HtmlElems.</li>
|
181
|
+
<li>Response#pbody : use Response#format</li>
|
182
|
+
<li>Response#format : new</li>
|
183
|
+
<li>MemWriter : new - used by Response#format</li>
|
184
|
+
</ul>
|
185
|
+
<h3><a name="label:22" id="label:22">20010314-alpha -> 20010330-alpha</a></h3><!-- RDLabel: "20010314-alpha -> 20010330-alpha" -->
|
186
|
+
<ul>
|
187
|
+
<li>Response#pbody : new - print orthopped Response#body.</li>
|
188
|
+
<li>Select#select : accept Array of String(value|data) and Integer(index)</li>
|
189
|
+
<li>assert_include : add using HtmlElem#has?</li>
|
190
|
+
<li>Link#target : new</li>
|
191
|
+
<li>Response#freeze,Form#freeze : new</li>
|
192
|
+
<li>Select#value= : </li>
|
193
|
+
<li>Form#submit : </li>
|
194
|
+
</ul>
|
195
|
+
<h3><a name="label:23" id="label:23">20010223-alpha -> 20010314-alpha</a></h3><!-- RDLabel: "20010223-alpha -> 20010314-alpha" -->
|
196
|
+
<ul>
|
197
|
+
<li>Paser#start_a : replace "&amp;" -> "&" of href. bug of sgml-parser?</li>
|
198
|
+
<li>Table#row_index,col_index : new</li>
|
199
|
+
<li>Form#store_test_data : new</li>
|
200
|
+
<li>assert_input,assert_attrs,assert_include : new</li>
|
201
|
+
<li>InputRadio#value= : bug fix</li>
|
202
|
+
<li>Textarea#initialize, Select#initialize, SelectOption#initialize : set type</li>
|
203
|
+
<li>Parser#attrs_to_hash : bug fix</li>
|
204
|
+
<li>Response#push : no longer support, puts WARNING</li>
|
205
|
+
<li>Response#click : support for readlink and submit</li>
|
206
|
+
<li>Utils#complete_url : <- Response#complete_url & Parser#complete_url</li>
|
207
|
+
<li>JSciriptOpenObject : new</li>
|
208
|
+
<li>Response#redirect : new</li>
|
209
|
+
<li>Form#submit, Response#submit : support InputImage ( add args )</li>
|
210
|
+
<li>InputImage : new</li>
|
211
|
+
<li>Input#inspect : bug fix.</li>
|
212
|
+
<li>Response#initialize : better performance with keeping connection.</li>
|
213
|
+
<li>Table#at : to access TableRow with one argument. ( two args for Cell )</li>
|
214
|
+
<li>Parser#complete_url : use orthop_url</li>
|
215
|
+
<li>Utils#orthop_url : '//', '/\./', '[^/]*/\.\./' -> '/'</li>
|
216
|
+
<li>TestCase#initialize : append '/' if last char of URLBASE isn't '/'</li>
|
217
|
+
<li>TableRow : new ( Table is also changed )</li>
|
218
|
+
<li>Response : attr_accessor -> attr_reader</li>
|
219
|
+
<li>HtmlElem#inspect : change format, and stop recursive.</li>
|
220
|
+
<li>HtmlElem#print : change format as inspect.</li>
|
221
|
+
<li>Response#readlink : use HtmlElem#readlink</li>
|
222
|
+
<li>HtmlElem#readlink : new</li>
|
223
|
+
<li>Response#click : alias of Response#readlink</li>
|
224
|
+
<li>Response#submit,push : same as Response#forms[0].submit</li>
|
225
|
+
<li>Response#params : same as Response#forms[0].params</li>
|
226
|
+
<li>Response#link,form,table,frame : same as Response#*[0]</li>
|
227
|
+
<li>Response#search,find : new</li>
|
228
|
+
<li>HtmlElem#search : new</li>
|
229
|
+
<li>change file struct.</li>
|
230
|
+
</ul>
|
231
|
+
<h3><a name="label:24" id="label:24">20010216-alpha -> 20010223-alpha</a></h3><!-- RDLabel: "20010216-alpha -> 20010223-alpha" -->
|
232
|
+
<ul>
|
233
|
+
<li>Cookies#header : bug fix. ( handle when path == nil )</li>
|
234
|
+
<li>Parser#endtag : raise BadHtmlTags exception</li>
|
235
|
+
<li>Response#readlink : new ( raise ElemNotFound when failed )</li>
|
236
|
+
<li>rename exception : NotFound -> HttpNotFound</li>
|
237
|
+
<li>unify linefeed code to '\n'(0x0a) on each files.</li>
|
238
|
+
</ul>
|
239
|
+
<h3><a name="label:25" id="label:25">20010215-alpha -> 20010216-alpha</a></h3><!-- RDLabel: "20010215-alpha -> 20010216-alpha" -->
|
240
|
+
<ul>
|
241
|
+
<li>Frame#read : bug fix.</li>
|
242
|
+
<li>Response#initialize : raise NotFound exception</li>
|
243
|
+
<li>Param#query_data : rename method from data</li>
|
244
|
+
<li>InputRadio#query_data : rename method from data</li>
|
245
|
+
<li>InputCheckBox#query_data : rename method from data</li>
|
246
|
+
<li>InputSubmit#query_data : rename method from data</li>
|
247
|
+
<li>InputReset#query_data : rename method from data</li>
|
248
|
+
<li>Select#query_data : rename method from data, and so on.</li>
|
249
|
+
<li>SelectOption#query_data : rename method from data</li>
|
250
|
+
<li>Form#submit : Param#query_data -> Param#query_data</li>
|
251
|
+
<li>SelectOption#value : return data, when value is nil</li>
|
252
|
+
<li>SelectOption#value= : remove</li>
|
253
|
+
<li>SelectOption#data : remove</li>
|
254
|
+
<li>SelectOption#data= : remove</li>
|
255
|
+
<li>SelectOption#stat= : remove</li>
|
256
|
+
<li>Param#value : method -> attr_accessor</li>
|
257
|
+
<li>InputRadio#value= : new ( from Param#value )</li>
|
258
|
+
<li>Textarea#value : new ( as SelectOption#value )</li>
|
259
|
+
<li>Cookies#add : new</li>
|
260
|
+
</ul>
|
261
|
+
|
262
|
+
</body>
|
263
|
+
</html>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
= WebUnit
|
4
|
+
|
5
|
+
== WebUnit�Ȥ�
|
6
|
+
|
7
|
+
WebUnit �ϥ֥饦������Ѥ����˥����֥�����(html/cgi)��
|
8
|
+
�ƥ��Ȥ��뤿��� Ruby API �Ǥ���
|
9
|
+
���Ĥ���ν줿Ruby�Υƥ��ȥե졼���� - RubyUnit���Ȥ߹�碌�ƻ��Ѥ���
|
10
|
+
�����֥�����(html/cgi)�Υƥ��Ȥ�ư�����뤳�Ȥ��Ǥ��ޤ���
|
11
|
+
|
12
|
+
HttpUnit��JUnit��Ȥäƥƥ��ȤƤ����ΤǤ�����
|
13
|
+
�ץ������� ruby �ǽƤ���Ȥ��ˡ�
|
14
|
+
�ƥ��Ȥ� java �ǽΤϷ��ʤΤǡ����ޤ�����
|
15
|
+
|
16
|
+
== �����ǻ��Ѥ��Ƥ��륽�եȥ�����
|
17
|
+
|
18
|
+
WebUnit �Ǥϰʲ��Υ��եȥ���������Ѥ��Ƥ��ޤ���
|
19
|
+
htmlrepair/htmlsplit �� html-parser �� WebUnit ��Ʊ�����ޤ�����
|
20
|
+
|
21
|
+
�ʤ���RubyUnit �� NQXML�Ϥ��餫���ᥤ�ȡ��뤷�Ƥ���ɬ�פ�����ޤ���
|
22
|
+
|
23
|
+
* ((<RubyUnit|URL:http://homepage1.nifty.com/markey/ruby/rubyunit/index_e.html>))
|
24
|
+
�ޤ��� ((<testunit|URL:http://www.ruby-lang.org/raa/list.rhtml?name=testunit>))
|
25
|
+
* ((<"htmlrepair/htmlsplit"|URL:http://www.moonwolf.com/ruby/>))
|
26
|
+
* ((<html-parser|URL:http://www.jin.gr.jp/~nahi/Ruby/html-parser/README.htm>))
|
27
|
+
* ((<NQXML|URL:http://www.io.com/~jimm/downloads/nqxml/index.html>))
|
28
|
+
�ޤ��� ((<REXML|URL:http://www.ruby-lang.org/raa/list.rhtml?name=rexml>))
|
29
|
+
|
30
|
+
== ����������ɤȥ��ȡ���
|
31
|
+
|
32
|
+
((<URL:http://xpenguin.biz/download/webunit/>)) ����
|
33
|
+
webunit-20YYMMDD-*.tar.gz �����������ɤ���Ŭ���ʥǥ��쥯�ȥ��Ÿ�����ơ�
|
34
|
+
(({ruby install.rb})) ���Ƥ���������
|
35
|
+
|
36
|
+
== ������
|
37
|
+
|
38
|
+
cgi �ʲ��� httpd ���饢�������Ǥ������ webunit �ȸ���̾���ǥ���ơ�
|
39
|
+
test/test_*.rb �� runtest.rb �ʤɤ����Ѥ��Ƽ¹Ԥ��ޤ���
|
40
|
+
|
41
|
+
<<<example.rd
|
42
|
+
|
43
|
+
== ���۾��
|
44
|
+
|
45
|
+
�ܥץ������ϥե���եȥ������Ǥ���
|
46
|
+
GPL(the GNU GeneralPublic License)��
|
47
|
+
�ޤ��ϡ�Ruby���Τ�Ʊ�������ܥץ�����������ۤǤ��ޤ���
|
48
|
+
GPL�ˤĤ��Ƥ�COPYING�ե�����Ȥ��Ʋ�������
|
49
|
+
|
50
|
+
== �Х���ݡ���
|
51
|
+
|
52
|
+
((<URL:mailto:yt@xpenguin.biz>))
|
53
|
+
|
54
|
+
== �ѹ�����
|
55
|
+
|
56
|
+
<<<changes.rd
|
57
|
+
|
58
|
+
# $Id: index-ja.rd,v 1.1.1.1 2003/01/21 11:50:39 yuichi Exp $
|
59
|
+
|
60
|
+
=end
|
data/examples/wiki.rb
ADDED
data/examples/wiki.rb~
ADDED
data/install.rb
ADDED
@@ -0,0 +1,1022 @@
|
|
1
|
+
#
|
2
|
+
# This file is automatically generated. DO NOT MODIFY!
|
3
|
+
#
|
4
|
+
# install.rb
|
5
|
+
#
|
6
|
+
# Copyright (c) 2000-2002 Minero Aoki <aamine@loveruby.net>
|
7
|
+
#
|
8
|
+
# This program is free software.
|
9
|
+
# You can distribute/modify this program under the terms of
|
10
|
+
# the GNU Lesser General Public License version 2.
|
11
|
+
#
|
12
|
+
|
13
|
+
### begin compat.rb
|
14
|
+
|
15
|
+
unless Enumerable.instance_methods.include? 'inject' then
|
16
|
+
module Enumerable
|
17
|
+
def inject( result )
|
18
|
+
each do |i|
|
19
|
+
result = yield(result, i)
|
20
|
+
end
|
21
|
+
result
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def File.read_all( fname )
|
27
|
+
File.open(fname, 'rb') {|f| return f.read }
|
28
|
+
end
|
29
|
+
|
30
|
+
def File.write( fname, str )
|
31
|
+
File.open(fname, 'wb') {|f| f.write str }
|
32
|
+
end
|
33
|
+
|
34
|
+
### end compat.rb
|
35
|
+
### begin config.rb
|
36
|
+
|
37
|
+
if i = ARGV.index(/\A--rbconfig=/) then
|
38
|
+
file = $'
|
39
|
+
ARGV.delete_at(i)
|
40
|
+
require file
|
41
|
+
else
|
42
|
+
require 'rbconfig'
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
class ConfigTable
|
47
|
+
|
48
|
+
c = ::Config::CONFIG
|
49
|
+
|
50
|
+
rubypath = c['bindir'] + '/' + c['ruby_install_name']
|
51
|
+
|
52
|
+
major = c['MAJOR'].to_i
|
53
|
+
minor = c['MINOR'].to_i
|
54
|
+
teeny = c['TEENY'].to_i
|
55
|
+
version = "#{major}.#{minor}"
|
56
|
+
|
57
|
+
# ruby ver. >= 1.4.4?
|
58
|
+
newpath_p = ((major >= 2) or
|
59
|
+
((major == 1) and
|
60
|
+
((minor >= 5) or
|
61
|
+
((minor == 4) and (teeny >= 4)))))
|
62
|
+
|
63
|
+
re = Regexp.new('\A' + Regexp.quote(c['prefix']))
|
64
|
+
subprefix = lambda {|path|
|
65
|
+
re === path and path.sub(re, '$prefix')
|
66
|
+
}
|
67
|
+
|
68
|
+
if c['rubylibdir'] then
|
69
|
+
# 1.6.3 < V
|
70
|
+
stdruby = subprefix.call(c['rubylibdir'])
|
71
|
+
siteruby = subprefix.call(c['sitedir'])
|
72
|
+
versite = subprefix.call(c['sitelibdir'])
|
73
|
+
sodir = subprefix.call(c['sitearchdir'])
|
74
|
+
elsif newpath_p then
|
75
|
+
# 1.4.4 <= V <= 1.6.3
|
76
|
+
stdruby = "$prefix/lib/ruby/#{version}"
|
77
|
+
siteruby = subprefix.call(c['sitedir'])
|
78
|
+
versite = siteruby + '/' + version
|
79
|
+
sodir = "$site-ruby/#{c['arch']}"
|
80
|
+
else
|
81
|
+
# V < 1.4.4
|
82
|
+
stdruby = "$prefix/lib/ruby/#{version}"
|
83
|
+
siteruby = "$prefix/lib/ruby/#{version}/site_ruby"
|
84
|
+
versite = siteruby
|
85
|
+
sodir = "$site-ruby/#{c['arch']}"
|
86
|
+
end
|
87
|
+
|
88
|
+
DESCRIPTER = [
|
89
|
+
[ 'prefix', [ c['prefix'],
|
90
|
+
'path',
|
91
|
+
'path prefix of target environment' ] ],
|
92
|
+
[ 'std-ruby', [ stdruby,
|
93
|
+
'path',
|
94
|
+
'the directory for standard ruby libraries' ] ],
|
95
|
+
[ 'site-ruby-common', [ siteruby,
|
96
|
+
'path',
|
97
|
+
'the directory for version-independent non-standard ruby libraries' ] ],
|
98
|
+
[ 'site-ruby', [ versite,
|
99
|
+
'path',
|
100
|
+
'the directory for non-standard ruby libraries' ] ],
|
101
|
+
[ 'bin-dir', [ '$prefix/bin',
|
102
|
+
'path',
|
103
|
+
'the directory for commands' ] ],
|
104
|
+
[ 'rb-dir', [ '$site-ruby',
|
105
|
+
'path',
|
106
|
+
'the directory for ruby scripts' ] ],
|
107
|
+
[ 'so-dir', [ sodir,
|
108
|
+
'path',
|
109
|
+
'the directory for ruby extentions' ] ],
|
110
|
+
[ 'data-dir', [ '$prefix/share',
|
111
|
+
'path',
|
112
|
+
'the directory for shared data' ] ],
|
113
|
+
[ 'ruby-path', [ rubypath,
|
114
|
+
'path',
|
115
|
+
'path to set to #! line' ] ],
|
116
|
+
[ 'ruby-prog', [ rubypath,
|
117
|
+
'name',
|
118
|
+
'the ruby program using for installation' ] ],
|
119
|
+
[ 'make-prog', [ 'make',
|
120
|
+
'name',
|
121
|
+
'the make program to compile ruby extentions' ] ],
|
122
|
+
[ 'without-ext', [ 'no',
|
123
|
+
'yes/no',
|
124
|
+
'does not compile/install ruby extentions' ] ]
|
125
|
+
]
|
126
|
+
|
127
|
+
SAVE_FILE = 'config.save'
|
128
|
+
|
129
|
+
def ConfigTable.each_name( &block )
|
130
|
+
keys().each( &block )
|
131
|
+
end
|
132
|
+
|
133
|
+
def ConfigTable.keys
|
134
|
+
DESCRIPTER.collect {|k,*dummy| k }
|
135
|
+
end
|
136
|
+
|
137
|
+
def ConfigTable.each_definition( &block )
|
138
|
+
DESCRIPTER.each( &block )
|
139
|
+
end
|
140
|
+
|
141
|
+
def ConfigTable.get_entry( name )
|
142
|
+
name, ent = DESCRIPTER.assoc(name)
|
143
|
+
ent
|
144
|
+
end
|
145
|
+
|
146
|
+
def ConfigTable.get_entry!( name )
|
147
|
+
get_entry(name) or raise ArgumentError, "no such config: #{name}"
|
148
|
+
end
|
149
|
+
|
150
|
+
def ConfigTable.add_entry( name, vals )
|
151
|
+
ConfigTable::DESCRIPTER.push [name,vals]
|
152
|
+
end
|
153
|
+
|
154
|
+
def ConfigTable.remove_entry( name )
|
155
|
+
get_entry name or raise ArgumentError, "no such config: #{name}"
|
156
|
+
DESCRIPTER.delete_if {|n,arr| n == name }
|
157
|
+
end
|
158
|
+
|
159
|
+
def ConfigTable.config_key?( name )
|
160
|
+
get_entry(name) ? true : false
|
161
|
+
end
|
162
|
+
|
163
|
+
def ConfigTable.bool_config?( name )
|
164
|
+
ent = get_entry(name) or return false
|
165
|
+
ent[1] == 'yes/no'
|
166
|
+
end
|
167
|
+
|
168
|
+
def ConfigTable.value_config?( name )
|
169
|
+
ent = get_entry(name) or return false
|
170
|
+
ent[1] != 'yes/no'
|
171
|
+
end
|
172
|
+
|
173
|
+
def ConfigTable.path_config?( name )
|
174
|
+
ent = get_entry(name) or return false
|
175
|
+
ent[1] == 'path'
|
176
|
+
end
|
177
|
+
|
178
|
+
|
179
|
+
class << self
|
180
|
+
|
181
|
+
alias newobj new
|
182
|
+
|
183
|
+
def new
|
184
|
+
c = newobj()
|
185
|
+
c.__send__ :init
|
186
|
+
c
|
187
|
+
end
|
188
|
+
|
189
|
+
def load
|
190
|
+
c = newobj()
|
191
|
+
File.file? SAVE_FILE or
|
192
|
+
raise InstallError, "#{File.basename $0} config first"
|
193
|
+
File.foreach( SAVE_FILE ) do |line|
|
194
|
+
k, v = line.split( '=', 2 )
|
195
|
+
c.instance_eval {
|
196
|
+
@table[k] = v.strip
|
197
|
+
}
|
198
|
+
end
|
199
|
+
c
|
200
|
+
end
|
201
|
+
|
202
|
+
end
|
203
|
+
|
204
|
+
def initialize
|
205
|
+
@table = {}
|
206
|
+
end
|
207
|
+
|
208
|
+
def init
|
209
|
+
DESCRIPTER.each do |k, (default, vname, desc, default2)|
|
210
|
+
@table[k] = default
|
211
|
+
end
|
212
|
+
end
|
213
|
+
private :init
|
214
|
+
|
215
|
+
def save
|
216
|
+
File.open( SAVE_FILE, 'w' ) {|f|
|
217
|
+
@table.each do |k, v|
|
218
|
+
f.printf "%s=%s\n", k, v if v
|
219
|
+
end
|
220
|
+
}
|
221
|
+
end
|
222
|
+
|
223
|
+
def []=( k, v )
|
224
|
+
ConfigTable.config_key? k or raise InstallError, "unknown config option #{k}"
|
225
|
+
if ConfigTable.path_config? k then
|
226
|
+
@table[k] = (v[0,1] != '$') ? File.expand_path(v) : v
|
227
|
+
else
|
228
|
+
@table[k] = v
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
def []( key )
|
233
|
+
@table[key] or return nil
|
234
|
+
@table[key].gsub( %r<\$([^/]+)> ) { self[$1] }
|
235
|
+
end
|
236
|
+
|
237
|
+
def set_raw( key, val )
|
238
|
+
@table[key] = val
|
239
|
+
end
|
240
|
+
|
241
|
+
def get_raw( key )
|
242
|
+
@table[key]
|
243
|
+
end
|
244
|
+
|
245
|
+
end
|
246
|
+
|
247
|
+
|
248
|
+
class MetaConfigEnvironment
|
249
|
+
|
250
|
+
def self.eval_file( file )
|
251
|
+
return unless File.file? file
|
252
|
+
new.instance_eval File.read_all(file), file, 1
|
253
|
+
end
|
254
|
+
|
255
|
+
private
|
256
|
+
|
257
|
+
def config_names
|
258
|
+
ConfigTable.keys
|
259
|
+
end
|
260
|
+
|
261
|
+
def config?( name )
|
262
|
+
ConfigTable.config_key? name
|
263
|
+
end
|
264
|
+
|
265
|
+
def bool_config?( name )
|
266
|
+
ConfigTable.bool_config? name
|
267
|
+
end
|
268
|
+
|
269
|
+
def value_config?( name )
|
270
|
+
ConfigTable.value_config? name
|
271
|
+
end
|
272
|
+
|
273
|
+
def path_config?( name )
|
274
|
+
ConfigTable.path_config? name
|
275
|
+
end
|
276
|
+
|
277
|
+
def add_config( name, argname, default, desc )
|
278
|
+
ConfigTable.add_entry name,[default,argname,desc]
|
279
|
+
end
|
280
|
+
|
281
|
+
def add_path_config( name, default, desc )
|
282
|
+
add_config name, 'path', default, desc
|
283
|
+
end
|
284
|
+
|
285
|
+
def add_bool_config( name, default, desc )
|
286
|
+
add_config name, 'yes/no', default ? 'yes' : 'no', desc
|
287
|
+
end
|
288
|
+
|
289
|
+
def set_config_default( name, default )
|
290
|
+
if bool_config? name then
|
291
|
+
ConfigTable.get_entry!(name)[0] = default ? 'yes' : 'no'
|
292
|
+
else
|
293
|
+
ConfigTable.get_entry!(name)[0] = default
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
297
|
+
def remove_config( name )
|
298
|
+
ent = ConfigTable.get_entry(name)
|
299
|
+
ConfigTable.remove_entry name
|
300
|
+
ent
|
301
|
+
end
|
302
|
+
|
303
|
+
end
|
304
|
+
|
305
|
+
### end config.rb
|
306
|
+
### begin fileop.rb
|
307
|
+
|
308
|
+
module FileOperations
|
309
|
+
|
310
|
+
def mkdir_p( dname, prefix = nil )
|
311
|
+
dname = prefix + dname if prefix
|
312
|
+
$stderr.puts "mkdir -p #{dname}" if verbose?
|
313
|
+
return if no_harm?
|
314
|
+
|
315
|
+
# does not check '/'... it's too abnormal case
|
316
|
+
dirs = dname.split(%r_(?=/)_)
|
317
|
+
if /\A[a-z]:\z/i === dirs[0] then
|
318
|
+
disk = dirs.shift
|
319
|
+
dirs[0] = disk + dirs[0]
|
320
|
+
end
|
321
|
+
dirs.each_index do |idx|
|
322
|
+
path = dirs[0..idx].join('')
|
323
|
+
Dir.mkdir path unless dir? path
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
def rm_f( fname )
|
328
|
+
$stderr.puts "rm -f #{fname}" if verbose?
|
329
|
+
return if no_harm?
|
330
|
+
|
331
|
+
if File.exist? fname or File.symlink? fname then
|
332
|
+
File.chmod 0777, fname
|
333
|
+
File.unlink fname
|
334
|
+
end
|
335
|
+
end
|
336
|
+
|
337
|
+
def rm_rf( dn )
|
338
|
+
$stderr.puts "rm -rf #{dn}" if verbose?
|
339
|
+
return if no_harm?
|
340
|
+
|
341
|
+
Dir.chdir dn
|
342
|
+
Dir.foreach('.') do |fn|
|
343
|
+
next if fn == '.'
|
344
|
+
next if fn == '..'
|
345
|
+
if dir? fn then
|
346
|
+
verbose_off {
|
347
|
+
rm_rf fn
|
348
|
+
}
|
349
|
+
else
|
350
|
+
verbose_off {
|
351
|
+
rm_f fn
|
352
|
+
}
|
353
|
+
end
|
354
|
+
end
|
355
|
+
Dir.chdir '..'
|
356
|
+
Dir.rmdir dn
|
357
|
+
end
|
358
|
+
|
359
|
+
def mv( src, dest )
|
360
|
+
rm_f dest
|
361
|
+
begin
|
362
|
+
File.link src, dest
|
363
|
+
rescue
|
364
|
+
File.write dest, File.read_all(src)
|
365
|
+
File.chmod File.stat(src).mode, dest
|
366
|
+
end
|
367
|
+
rm_f src
|
368
|
+
end
|
369
|
+
|
370
|
+
def install( from, dest, mode, prefix = nil )
|
371
|
+
$stderr.puts "install #{from} #{dest}" if verbose?
|
372
|
+
return if no_harm?
|
373
|
+
|
374
|
+
realdest = prefix + dest if prefix
|
375
|
+
if dir? realdest then
|
376
|
+
realdest += '/' + File.basename(from)
|
377
|
+
end
|
378
|
+
str = File.read_all(from)
|
379
|
+
if diff? str, realdest then
|
380
|
+
verbose_off {
|
381
|
+
rm_f realdest if File.exist? realdest
|
382
|
+
}
|
383
|
+
File.write realdest, str
|
384
|
+
File.chmod mode, realdest
|
385
|
+
|
386
|
+
File.open( objdir + '/InstalledFiles', 'a' ) {|f| f.puts realdest }
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
390
|
+
def diff?( orig, targ )
|
391
|
+
return true unless File.exist? targ
|
392
|
+
orig != File.read_all(targ)
|
393
|
+
end
|
394
|
+
|
395
|
+
def command( str )
|
396
|
+
$stderr.puts str if verbose?
|
397
|
+
system str or raise RuntimeError, "'system #{str}' failed"
|
398
|
+
end
|
399
|
+
|
400
|
+
def ruby( str )
|
401
|
+
command config('ruby-prog') + ' ' + str
|
402
|
+
end
|
403
|
+
|
404
|
+
def dir?( dname )
|
405
|
+
# for corrupted windows stat()
|
406
|
+
File.directory?( (dname[-1,1] == '/') ? dname : dname + '/' )
|
407
|
+
end
|
408
|
+
|
409
|
+
def all_files( dname )
|
410
|
+
Dir.open( dname ) {|d|
|
411
|
+
return d.find_all {|n| File.file? "#{dname}/#{n}" }
|
412
|
+
}
|
413
|
+
end
|
414
|
+
|
415
|
+
def all_dirs( dname )
|
416
|
+
Dir.open( dname ) {|d|
|
417
|
+
return d.find_all {|n| dir? "#{dname}/#{n}" } - %w(. ..)
|
418
|
+
}
|
419
|
+
end
|
420
|
+
|
421
|
+
end
|
422
|
+
|
423
|
+
### end fileop.rb
|
424
|
+
### begin base.rb
|
425
|
+
|
426
|
+
class InstallError < StandardError; end
|
427
|
+
|
428
|
+
|
429
|
+
class Installer
|
430
|
+
|
431
|
+
Version = '3.1.2'
|
432
|
+
Copyright = 'Copyright (c) 2000-2002 Minero Aoki'
|
433
|
+
|
434
|
+
|
435
|
+
@toplevel = nil
|
436
|
+
|
437
|
+
def self.declear_toplevel_installer( inst )
|
438
|
+
@toplevel and
|
439
|
+
raise ArgumentError, 'more than one toplevel installer decleared'
|
440
|
+
@toplevel = inst
|
441
|
+
end
|
442
|
+
|
443
|
+
def self.toplevel_installer
|
444
|
+
@toplevel
|
445
|
+
end
|
446
|
+
|
447
|
+
|
448
|
+
FILETYPES = %w( bin lib ext data )
|
449
|
+
|
450
|
+
include FileOperations
|
451
|
+
|
452
|
+
def initialize( config, opt, srcroot, objroot )
|
453
|
+
@config = config
|
454
|
+
@options = opt
|
455
|
+
@srcdir = File.expand_path(srcroot)
|
456
|
+
@objdir = File.expand_path(objroot)
|
457
|
+
@currdir = '.'
|
458
|
+
end
|
459
|
+
|
460
|
+
def inspect
|
461
|
+
"#<#{type} #{__id__}>"
|
462
|
+
end
|
463
|
+
|
464
|
+
#
|
465
|
+
# configs/options
|
466
|
+
#
|
467
|
+
|
468
|
+
def get_config( key )
|
469
|
+
@config[key]
|
470
|
+
end
|
471
|
+
|
472
|
+
alias config get_config
|
473
|
+
|
474
|
+
def set_config( key, val )
|
475
|
+
@config[key] = val
|
476
|
+
end
|
477
|
+
|
478
|
+
def no_harm?
|
479
|
+
@options['no-harm']
|
480
|
+
end
|
481
|
+
|
482
|
+
def verbose?
|
483
|
+
@options['verbose']
|
484
|
+
end
|
485
|
+
|
486
|
+
def verbose_off
|
487
|
+
save, @options['verbose'] = @options['verbose'], false
|
488
|
+
yield
|
489
|
+
@options['verbose'] = save
|
490
|
+
end
|
491
|
+
|
492
|
+
#
|
493
|
+
# srcdir/objdir
|
494
|
+
#
|
495
|
+
|
496
|
+
attr_reader :srcdir
|
497
|
+
alias srcdir_root srcdir
|
498
|
+
alias package_root srcdir
|
499
|
+
|
500
|
+
def curr_srcdir
|
501
|
+
"#{@srcdir}/#{@currdir}"
|
502
|
+
end
|
503
|
+
|
504
|
+
attr_reader :objdir
|
505
|
+
alias objdir_root objdir
|
506
|
+
|
507
|
+
def curr_objdir
|
508
|
+
"#{@objdir}/#{@currdir}"
|
509
|
+
end
|
510
|
+
|
511
|
+
def srcfile( path )
|
512
|
+
curr_srcdir + '/' + path
|
513
|
+
end
|
514
|
+
|
515
|
+
def srcexist?( path )
|
516
|
+
File.exist? srcfile(path)
|
517
|
+
end
|
518
|
+
|
519
|
+
def srcdirectory?( path )
|
520
|
+
dir? srcfile(path)
|
521
|
+
end
|
522
|
+
|
523
|
+
def srcfile?( path )
|
524
|
+
File.file? srcfile(path)
|
525
|
+
end
|
526
|
+
|
527
|
+
def srcentries( path = '.' )
|
528
|
+
Dir.open( curr_srcdir + '/' + path ) {|d|
|
529
|
+
return d.to_a - %w(. ..) - hookfilenames
|
530
|
+
}
|
531
|
+
end
|
532
|
+
|
533
|
+
def srcfiles( path = '.' )
|
534
|
+
srcentries(path).find_all {|fname|
|
535
|
+
File.file? File.join(curr_srcdir, path, fname)
|
536
|
+
}
|
537
|
+
end
|
538
|
+
|
539
|
+
def srcdirectories( path = '.' )
|
540
|
+
srcentries(path).find_all {|fname|
|
541
|
+
dir? File.join(curr_srcdir, path, fname)
|
542
|
+
}
|
543
|
+
end
|
544
|
+
|
545
|
+
def dive_into( rel )
|
546
|
+
# skip source control directories
|
547
|
+
if (File.basename(rel) =~ /^(\.svn|CVS)$/)
|
548
|
+
return
|
549
|
+
end
|
550
|
+
return unless dir? "#{@srcdir}/#{rel}"
|
551
|
+
|
552
|
+
dir = File.basename(rel)
|
553
|
+
Dir.mkdir dir unless dir? dir
|
554
|
+
save = Dir.pwd
|
555
|
+
Dir.chdir dir
|
556
|
+
$stderr.puts '---> ' + rel if verbose?
|
557
|
+
@currdir = rel
|
558
|
+
yield
|
559
|
+
Dir.chdir save
|
560
|
+
$stderr.puts '<--- ' + rel if verbose?
|
561
|
+
@currdir = File.dirname(rel)
|
562
|
+
end
|
563
|
+
|
564
|
+
#
|
565
|
+
# config
|
566
|
+
#
|
567
|
+
|
568
|
+
def exec_config
|
569
|
+
exec_task_traverse 'config'
|
570
|
+
end
|
571
|
+
|
572
|
+
def config_dir_bin( rel )
|
573
|
+
end
|
574
|
+
|
575
|
+
def config_dir_lib( rel )
|
576
|
+
end
|
577
|
+
|
578
|
+
def config_dir_ext( rel )
|
579
|
+
extconf if extdir? curr_srcdir
|
580
|
+
end
|
581
|
+
|
582
|
+
def extconf
|
583
|
+
opt = @options['config-opt'].join(' ')
|
584
|
+
command "#{config('ruby-prog')} #{curr_srcdir}/extconf.rb #{opt}"
|
585
|
+
end
|
586
|
+
|
587
|
+
def config_dir_data( rel )
|
588
|
+
end
|
589
|
+
|
590
|
+
#
|
591
|
+
# setup
|
592
|
+
#
|
593
|
+
|
594
|
+
def exec_setup
|
595
|
+
exec_task_traverse 'setup'
|
596
|
+
end
|
597
|
+
|
598
|
+
def setup_dir_bin( relpath )
|
599
|
+
all_files( curr_srcdir ).each do |fname|
|
600
|
+
add_rubypath "#{curr_srcdir}/#{fname}"
|
601
|
+
end
|
602
|
+
end
|
603
|
+
|
604
|
+
SHEBANG_RE = /\A\#!\s*\S*ruby\S*/
|
605
|
+
|
606
|
+
def add_rubypath( path )
|
607
|
+
$stderr.puts %Q<set #! line to "\#!#{config('ruby-path')}" for #{path} ...> if verbose?
|
608
|
+
return if no_harm?
|
609
|
+
|
610
|
+
tmpfile = File.basename(path) + '.tmp'
|
611
|
+
begin
|
612
|
+
File.open( path ) {|r|
|
613
|
+
File.open( tmpfile, 'w' ) {|w|
|
614
|
+
first = r.gets
|
615
|
+
return unless SHEBANG_RE === first # reject '/usr/bin/env ruby'
|
616
|
+
|
617
|
+
w.print first.sub( SHEBANG_RE, '#!' + config('ruby-path') )
|
618
|
+
w.write r.read
|
619
|
+
} }
|
620
|
+
mv tmpfile, File.basename(path)
|
621
|
+
ensure
|
622
|
+
rm_f tmpfile if File.exist? tmpfile
|
623
|
+
end
|
624
|
+
end
|
625
|
+
|
626
|
+
def setup_dir_lib( relpath )
|
627
|
+
end
|
628
|
+
|
629
|
+
def setup_dir_ext( relpath )
|
630
|
+
if extdir? curr_srcdir then
|
631
|
+
make
|
632
|
+
end
|
633
|
+
end
|
634
|
+
|
635
|
+
def make
|
636
|
+
command config('make-prog')
|
637
|
+
end
|
638
|
+
|
639
|
+
def setup_dir_data( relpath )
|
640
|
+
end
|
641
|
+
|
642
|
+
#
|
643
|
+
# install
|
644
|
+
#
|
645
|
+
|
646
|
+
def exec_install
|
647
|
+
exec_task_traverse 'install'
|
648
|
+
end
|
649
|
+
|
650
|
+
def install_dir_bin( rel )
|
651
|
+
install_files targfiles, config('bin-dir') + '/' + rel, 0755
|
652
|
+
end
|
653
|
+
|
654
|
+
def install_dir_lib( rel )
|
655
|
+
install_files targfiles, config('rb-dir') + '/' + rel, 0644
|
656
|
+
end
|
657
|
+
|
658
|
+
def install_dir_ext( rel )
|
659
|
+
if extdir? curr_srcdir then
|
660
|
+
install_dir_ext_main File.dirname(rel)
|
661
|
+
end
|
662
|
+
end
|
663
|
+
|
664
|
+
def install_dir_ext_main( rel )
|
665
|
+
install_files allext('.'), config('so-dir') + '/' + rel, 0555
|
666
|
+
end
|
667
|
+
|
668
|
+
def install_dir_data( rel )
|
669
|
+
install_files targfiles, config('data-dir') + '/' + rel, 0644
|
670
|
+
end
|
671
|
+
|
672
|
+
def install_files( list, dest, mode )
|
673
|
+
# Skip the narf CVS directories
|
674
|
+
unless dest =~ /CVS/
|
675
|
+
mkdir_p dest, @options['install-prefix']
|
676
|
+
list.each do |fname|
|
677
|
+
install fname, dest, mode, @options['install-prefix']
|
678
|
+
end
|
679
|
+
end
|
680
|
+
end
|
681
|
+
|
682
|
+
def targfiles
|
683
|
+
(targfilenames() - hookfilenames()).collect {|fname|
|
684
|
+
File.exist?(fname) ? fname : File.join(curr_srcdir(), fname)
|
685
|
+
}
|
686
|
+
end
|
687
|
+
|
688
|
+
def targfilenames
|
689
|
+
[ curr_srcdir(), '.' ].inject([]) {|ret, dir|
|
690
|
+
ret | all_files(dir)
|
691
|
+
}
|
692
|
+
end
|
693
|
+
|
694
|
+
def hookfilenames
|
695
|
+
%w( pre-%s post-%s pre-%s.rb post-%s.rb ).collect {|fmt|
|
696
|
+
%w( config setup install clean ).collect {|t| sprintf fmt, t }
|
697
|
+
}.flatten
|
698
|
+
end
|
699
|
+
|
700
|
+
def allext( dir )
|
701
|
+
_allext(dir) or raise InstallError,
|
702
|
+
"no extention exists: Have you done 'ruby #{$0} setup' ?"
|
703
|
+
end
|
704
|
+
|
705
|
+
DLEXT = /\.#{ ::Config::CONFIG['DLEXT'] }\z/
|
706
|
+
|
707
|
+
def _allext( dir )
|
708
|
+
Dir.open( dir ) {|d|
|
709
|
+
return d.find_all {|fname| DLEXT === fname }
|
710
|
+
}
|
711
|
+
end
|
712
|
+
|
713
|
+
#
|
714
|
+
# clean
|
715
|
+
#
|
716
|
+
|
717
|
+
def exec_clean
|
718
|
+
exec_task_traverse 'clean'
|
719
|
+
rm_f 'config.save'
|
720
|
+
rm_f 'InstalledFiles'
|
721
|
+
end
|
722
|
+
|
723
|
+
def clean_dir_bin( rel )
|
724
|
+
end
|
725
|
+
|
726
|
+
def clean_dir_lib( rel )
|
727
|
+
end
|
728
|
+
|
729
|
+
def clean_dir_ext( rel )
|
730
|
+
clean
|
731
|
+
end
|
732
|
+
|
733
|
+
def clean
|
734
|
+
command config('make-prog') + ' clean' if File.file? 'Makefile'
|
735
|
+
end
|
736
|
+
|
737
|
+
def clean_dir_data( rel )
|
738
|
+
end
|
739
|
+
|
740
|
+
#
|
741
|
+
# lib
|
742
|
+
#
|
743
|
+
|
744
|
+
def exec_task_traverse( task )
|
745
|
+
run_hook 'pre-' + task
|
746
|
+
FILETYPES.each do |type|
|
747
|
+
if config('without-ext') == 'yes' and type == 'ext' then
|
748
|
+
$stderr.puts 'skipping ext/* by user option' if verbose?
|
749
|
+
next
|
750
|
+
end
|
751
|
+
traverse task, type, task + '_dir_' + type
|
752
|
+
end
|
753
|
+
run_hook 'post-' + task
|
754
|
+
end
|
755
|
+
|
756
|
+
def traverse( task, rel, mid )
|
757
|
+
dive_into( rel ) {
|
758
|
+
run_hook 'pre-' + task
|
759
|
+
__send__ mid, rel.sub( %r_\A.*?(?:/|\z)_, '' )
|
760
|
+
all_dirs( curr_srcdir ).each do |d|
|
761
|
+
traverse task, rel + '/' + d, mid
|
762
|
+
end
|
763
|
+
run_hook 'post-' + task
|
764
|
+
}
|
765
|
+
end
|
766
|
+
|
767
|
+
def run_hook( name )
|
768
|
+
try_run_hook curr_srcdir + '/' + name or
|
769
|
+
try_run_hook curr_srcdir + '/' + name + '.rb'
|
770
|
+
end
|
771
|
+
|
772
|
+
def try_run_hook( fname )
|
773
|
+
return false unless File.file? fname
|
774
|
+
|
775
|
+
env = self.dup
|
776
|
+
begin
|
777
|
+
env.instance_eval File.read_all(fname), fname, 1
|
778
|
+
rescue
|
779
|
+
raise InstallError, "hook #{fname} failed:\n" + $!.message
|
780
|
+
end
|
781
|
+
true
|
782
|
+
end
|
783
|
+
|
784
|
+
def extdir?( dir )
|
785
|
+
File.exist? dir + '/MANIFEST'
|
786
|
+
end
|
787
|
+
|
788
|
+
end
|
789
|
+
|
790
|
+
### end base.rb
|
791
|
+
### begin toplevel.rb
|
792
|
+
|
793
|
+
class ToplevelInstaller < Installer
|
794
|
+
|
795
|
+
TASKS = [
|
796
|
+
[ 'config', 'saves your configurations' ],
|
797
|
+
[ 'show', 'shows current configuration' ],
|
798
|
+
[ 'setup', 'compiles extention or else' ],
|
799
|
+
[ 'install', 'installs files' ],
|
800
|
+
[ 'clean', "does `make clean' for each extention" ]
|
801
|
+
]
|
802
|
+
|
803
|
+
|
804
|
+
def initialize( root )
|
805
|
+
super nil, {'verbose' => true}, root, '.'
|
806
|
+
Installer.declear_toplevel_installer self
|
807
|
+
end
|
808
|
+
|
809
|
+
|
810
|
+
def execute
|
811
|
+
run_metaconfigs
|
812
|
+
|
813
|
+
case task = parsearg_global()
|
814
|
+
when 'config'
|
815
|
+
@config = ConfigTable.new
|
816
|
+
else
|
817
|
+
@config = ConfigTable.load
|
818
|
+
end
|
819
|
+
parsearg_TASK task
|
820
|
+
|
821
|
+
exectask task
|
822
|
+
end
|
823
|
+
|
824
|
+
|
825
|
+
def run_metaconfigs
|
826
|
+
MetaConfigEnvironment.eval_file "#{srcdir_root}/#{metaconfig}"
|
827
|
+
end
|
828
|
+
|
829
|
+
def metaconfig
|
830
|
+
'metaconfig'
|
831
|
+
end
|
832
|
+
|
833
|
+
|
834
|
+
def exectask( task )
|
835
|
+
if task == 'show' then
|
836
|
+
exec_show
|
837
|
+
else
|
838
|
+
try task
|
839
|
+
end
|
840
|
+
end
|
841
|
+
|
842
|
+
def try( task )
|
843
|
+
$stderr.printf "#{File.basename $0}: entering %s phase...\n", task if verbose?
|
844
|
+
begin
|
845
|
+
__send__ 'exec_' + task
|
846
|
+
rescue
|
847
|
+
$stderr.printf "%s failed\n", task
|
848
|
+
raise
|
849
|
+
end
|
850
|
+
$stderr.printf "#{File.basename $0}: %s done.\n", task if verbose?
|
851
|
+
end
|
852
|
+
|
853
|
+
#
|
854
|
+
# processing arguments
|
855
|
+
#
|
856
|
+
|
857
|
+
def parsearg_global
|
858
|
+
task_re = /\A(?:#{TASKS.collect {|i| i[0] }.join '|'})\z/
|
859
|
+
|
860
|
+
while arg = ARGV.shift do
|
861
|
+
case arg
|
862
|
+
when /\A\w+\z/
|
863
|
+
task_re === arg or raise InstallError, "wrong task: #{arg}"
|
864
|
+
return arg
|
865
|
+
|
866
|
+
when '-q', '--quiet'
|
867
|
+
@options['verbose'] = false
|
868
|
+
|
869
|
+
when '--verbose'
|
870
|
+
@options['verbose'] = true
|
871
|
+
|
872
|
+
when '-h', '--help'
|
873
|
+
print_usage $stdout
|
874
|
+
exit 0
|
875
|
+
|
876
|
+
when '-v', '--version'
|
877
|
+
puts "#{File.basename $0} version #{Version}"
|
878
|
+
exit 0
|
879
|
+
|
880
|
+
when '--copyright'
|
881
|
+
puts Copyright
|
882
|
+
exit 0
|
883
|
+
|
884
|
+
else
|
885
|
+
raise InstallError, "unknown global option '#{arg}'"
|
886
|
+
end
|
887
|
+
end
|
888
|
+
|
889
|
+
raise InstallError, 'no task or global option given'
|
890
|
+
end
|
891
|
+
|
892
|
+
|
893
|
+
def parsearg_TASK( task )
|
894
|
+
mid = "parsearg_#{task}"
|
895
|
+
if respond_to? mid, true then
|
896
|
+
__send__ mid
|
897
|
+
else
|
898
|
+
ARGV.empty? or
|
899
|
+
raise InstallError, "#{task}: unknown options: #{ARGV.join ' '}"
|
900
|
+
end
|
901
|
+
end
|
902
|
+
|
903
|
+
def parsearg_config
|
904
|
+
re = /\A--(#{ConfigTable.keys.join '|'})(?:=(.*))?\z/
|
905
|
+
@options['config-opt'] = []
|
906
|
+
|
907
|
+
while i = ARGV.shift do
|
908
|
+
if /\A--?\z/ === i then
|
909
|
+
@options['config-opt'] = ARGV.dup
|
910
|
+
break
|
911
|
+
end
|
912
|
+
m = re.match(i) or raise InstallError, "config: unknown option #{i}"
|
913
|
+
name, value = m.to_a[1,2]
|
914
|
+
if value then
|
915
|
+
if ConfigTable.bool_config?(name) then
|
916
|
+
/\A(y(es)?|n(o)?|t(rue)?|f(alse))\z/i === value or raise InstallError, "config: --#{name} allows only yes/no for argument"
|
917
|
+
value = (/\Ay(es)?|\At(rue)/i === value) ? 'yes' : 'no'
|
918
|
+
end
|
919
|
+
else
|
920
|
+
ConfigTable.bool_config?(name) or raise InstallError, "config: --#{name} requires argument"
|
921
|
+
value = 'yes'
|
922
|
+
end
|
923
|
+
@config[name] = value
|
924
|
+
end
|
925
|
+
end
|
926
|
+
|
927
|
+
def parsearg_install
|
928
|
+
@options['no-harm'] = false
|
929
|
+
@options['install-prefix'] = ''
|
930
|
+
while a = ARGV.shift do
|
931
|
+
case a
|
932
|
+
when /\A--no-harm\z/
|
933
|
+
@options['no-harm'] = true
|
934
|
+
when /\A--prefix=(.*)\z/
|
935
|
+
path = $1
|
936
|
+
path = File.expand_path(path) unless path[0,1] == '/'
|
937
|
+
@options['install-prefix'] = path
|
938
|
+
else
|
939
|
+
raise InstallError, "install: unknown option #{a}"
|
940
|
+
end
|
941
|
+
end
|
942
|
+
end
|
943
|
+
|
944
|
+
|
945
|
+
def print_usage( out )
|
946
|
+
out.puts
|
947
|
+
out.puts 'Usage:'
|
948
|
+
out.puts " ruby #{File.basename $0} <global option>"
|
949
|
+
out.puts " ruby #{File.basename $0} [<global options>] <task> [<task options>]"
|
950
|
+
|
951
|
+
fmt = " %-20s %s\n"
|
952
|
+
out.puts
|
953
|
+
out.puts 'Global options:'
|
954
|
+
out.printf fmt, '-q,--quiet', 'suppress message outputs'
|
955
|
+
out.printf fmt, ' --verbose', 'output messages verbosely'
|
956
|
+
out.printf fmt, '-h,--help', 'print this message'
|
957
|
+
out.printf fmt, '-v,--version', 'print version and quit'
|
958
|
+
out.printf fmt, '--copyright', 'print copyright and quit'
|
959
|
+
|
960
|
+
out.puts
|
961
|
+
out.puts 'Tasks:'
|
962
|
+
TASKS.each do |name, desc|
|
963
|
+
out.printf " %-10s %s\n", name, desc
|
964
|
+
end
|
965
|
+
|
966
|
+
out.puts
|
967
|
+
out.puts 'Options for config:'
|
968
|
+
ConfigTable.each_definition do |name, (default, arg, desc, default2)|
|
969
|
+
out.printf " %-20s %s [%s]\n",
|
970
|
+
'--'+ name + (ConfigTable.bool_config?(name) ? '' : '='+arg),
|
971
|
+
desc,
|
972
|
+
default2 || default
|
973
|
+
end
|
974
|
+
out.printf " %-20s %s [%s]\n",
|
975
|
+
'--rbconfig=path', 'your rbconfig.rb to load', "running ruby's"
|
976
|
+
|
977
|
+
out.puts
|
978
|
+
out.puts 'Options for install:'
|
979
|
+
out.printf " %-20s %s [%s]\n",
|
980
|
+
'--no-harm', 'only display what to do if given', 'off'
|
981
|
+
|
982
|
+
out.puts
|
983
|
+
end
|
984
|
+
|
985
|
+
#
|
986
|
+
# config
|
987
|
+
#
|
988
|
+
|
989
|
+
def exec_config
|
990
|
+
super
|
991
|
+
@config.save
|
992
|
+
end
|
993
|
+
|
994
|
+
#
|
995
|
+
# show
|
996
|
+
#
|
997
|
+
|
998
|
+
def exec_show
|
999
|
+
ConfigTable.each_name do |k|
|
1000
|
+
v = @config.get_raw(k)
|
1001
|
+
if not v or v.empty? then
|
1002
|
+
v = '(not specified)'
|
1003
|
+
end
|
1004
|
+
printf "%-10s %s\n", k, v
|
1005
|
+
end
|
1006
|
+
end
|
1007
|
+
|
1008
|
+
end
|
1009
|
+
|
1010
|
+
### end toplevel.rb
|
1011
|
+
|
1012
|
+
if $0 == __FILE__ then
|
1013
|
+
begin
|
1014
|
+
installer = ToplevelInstaller.new( File.dirname($0) )
|
1015
|
+
installer.execute
|
1016
|
+
rescue
|
1017
|
+
raise if $DEBUG
|
1018
|
+
$stderr.puts $!.message
|
1019
|
+
$stderr.puts "try 'ruby #{$0} --help' for usage"
|
1020
|
+
exit 1
|
1021
|
+
end
|
1022
|
+
end
|