qwikdoc 0.0.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/.gitignore +5 -0
- data/.rspec +2 -0
- data/CHANGES +3 -0
- data/COPYING +340 -0
- data/Gemfile +3 -0
- data/README.md +10 -0
- data/Rakefile +10 -0
- data/TextFormattingRules +137 -0
- data/TextFormattingRules.ja +143 -0
- data/bin/qwikdoc +34 -0
- data/lib/qwik_doc.rb +15 -0
- data/lib/qwik_doc/hack.rb +184 -0
- data/qwikdoc.gemspec +26 -0
- data/spec/qwik_doc_spec.rb +305 -0
- data/spec/spec_helper.rb +12 -0
- data/vendor/qwik/Makefile +63 -0
- data/vendor/qwik/Rakefile +17 -0
- data/vendor/qwik/act-aa.rb +83 -0
- data/vendor/qwik/act-archive.rb +386 -0
- data/vendor/qwik/act-attach.rb +304 -0
- data/vendor/qwik/act-backup.rb +236 -0
- data/vendor/qwik/act-basic.rb +325 -0
- data/vendor/qwik/act-book.rb +161 -0
- data/vendor/qwik/act-calc.rb +371 -0
- data/vendor/qwik/act-charset.rb +251 -0
- data/vendor/qwik/act-christel.rb +112 -0
- data/vendor/qwik/act-chronology.rb +149 -0
- data/vendor/qwik/act-code.rb +155 -0
- data/vendor/qwik/act-comment.rb +554 -0
- data/vendor/qwik/act-config.rb +49 -0
- data/vendor/qwik/act-counter.rb +125 -0
- data/vendor/qwik/act-day.rb +96 -0
- data/vendor/qwik/act-describe.rb +135 -0
- data/vendor/qwik/act-diary.rb +109 -0
- data/vendor/qwik/act-edit.rb +317 -0
- data/vendor/qwik/act-embed-html.rb +296 -0
- data/vendor/qwik/act-emode.rb +150 -0
- data/vendor/qwik/act-event.rb +187 -0
- data/vendor/qwik/act-file.rb +303 -0
- data/vendor/qwik/act-files.rb +771 -0
- data/vendor/qwik/act-getpass.rb +295 -0
- data/vendor/qwik/act-history.rb +136 -0
- data/vendor/qwik/act-html.rb +204 -0
- data/vendor/qwik/act-httpauth.rb +147 -0
- data/vendor/qwik/act-include.rb +142 -0
- data/vendor/qwik/act-interwiki.rb +189 -0
- data/vendor/qwik/act-isearch.rb +109 -0
- data/vendor/qwik/act-keywords.rb +137 -0
- data/vendor/qwik/act-lang.rb +81 -0
- data/vendor/qwik/act-license.rb +63 -0
- data/vendor/qwik/act-list.rb +287 -0
- data/vendor/qwik/act-login.rb +410 -0
- data/vendor/qwik/act-logout.rb +60 -0
- data/vendor/qwik/act-mail.rb +159 -0
- data/vendor/qwik/act-map.rb +292 -0
- data/vendor/qwik/act-md5.rb +42 -0
- data/vendor/qwik/act-mdlb.rb +741 -0
- data/vendor/qwik/act-media.rb +416 -0
- data/vendor/qwik/act-member.rb +157 -0
- data/vendor/qwik/act-menu.rb +142 -0
- data/vendor/qwik/act-metadata.rb +323 -0
- data/vendor/qwik/act-mlsubmitform.rb +49 -0
- data/vendor/qwik/act-monitor.rb +167 -0
- data/vendor/qwik/act-new.rb +418 -0
- data/vendor/qwik/act-pagelist.rb +248 -0
- data/vendor/qwik/act-password.rb +145 -0
- data/vendor/qwik/act-plan.rb +210 -0
- data/vendor/qwik/act-povray.rb +230 -0
- data/vendor/qwik/act-presen.rb +380 -0
- data/vendor/qwik/act-redirect.rb +133 -0
- data/vendor/qwik/act-ring.rb +1071 -0
- data/vendor/qwik/act-rrefs.rb +255 -0
- data/vendor/qwik/act-ruby.rb +116 -0
- data/vendor/qwik/act-sample.rb +170 -0
- data/vendor/qwik/act-save.rb +295 -0
- data/vendor/qwik/act-schedule.rb +374 -0
- data/vendor/qwik/act-search.rb +180 -0
- data/vendor/qwik/act-searchwords.rb +51 -0
- data/vendor/qwik/act-sendpass.rb +83 -0
- data/vendor/qwik/act-site.rb +89 -0
- data/vendor/qwik/act-sitebackup.rb +419 -0
- data/vendor/qwik/act-sitelog.rb +118 -0
- data/vendor/qwik/act-smil.rb +299 -0
- data/vendor/qwik/act-status.rb +220 -0
- data/vendor/qwik/act-style.rb +608 -0
- data/vendor/qwik/act-table.rb +263 -0
- data/vendor/qwik/act-tableform.rb +241 -0
- data/vendor/qwik/act-tag.rb +103 -0
- data/vendor/qwik/act-text.rb +70 -0
- data/vendor/qwik/act-textarea.rb +164 -0
- data/vendor/qwik/act-theme.rb +346 -0
- data/vendor/qwik/act-toc.rb +112 -0
- data/vendor/qwik/act-typekey.rb +198 -0
- data/vendor/qwik/act-under-const.rb +94 -0
- data/vendor/qwik/act-webservice.rb +321 -0
- data/vendor/qwik/act-wema.rb +558 -0
- data/vendor/qwik/act-wysiwyg.rb +238 -0
- data/vendor/qwik/action.rb +325 -0
- data/vendor/qwik/autoreload.rb +98 -0
- data/vendor/qwik/bench-bench.rb +28 -0
- data/vendor/qwik/bench-emode.rb +47 -0
- data/vendor/qwik/bench-format-xml.rb +70 -0
- data/vendor/qwik/bench-large-table.rb +62 -0
- data/vendor/qwik/bench-md5.rb +14 -0
- data/vendor/qwik/bench-module-session.rb +19 -0
- data/vendor/qwik/bench-page.rb +50 -0
- data/vendor/qwik/bench-s-md5.rb +28 -0
- data/vendor/qwik/bench-session.rb +25 -0
- data/vendor/qwik/bench-textformat.rb +31 -0
- data/vendor/qwik/catalog-factory.rb +91 -0
- data/vendor/qwik/catalog-ja.rb +479 -0
- data/vendor/qwik/catalog-ml-ja.rb +145 -0
- data/vendor/qwik/check-act-monitor.rb +112 -0
- data/vendor/qwik/check-act-monitor2.rb +46 -0
- data/vendor/qwik/check-act-theme.rb +27 -0
- data/vendor/qwik/check-event.rb +112 -0
- data/vendor/qwik/check-event2.rb +55 -0
- data/vendor/qwik/check-htree-rexml.rb +77 -0
- data/vendor/qwik/check-htree.rb +51 -0
- data/vendor/qwik/check-libxml.rb +135 -0
- data/vendor/qwik/check-many-pages.rb +47 -0
- data/vendor/qwik/check-monitor.rb +33 -0
- data/vendor/qwik/check-observer.rb +67 -0
- data/vendor/qwik/check-server.rb +61 -0
- data/vendor/qwik/check-uuencode.rb +33 -0
- data/vendor/qwik/check-webdav.rb +65 -0
- data/vendor/qwik/check-xml-xpath.rb +27 -0
- data/vendor/qwik/common-backtrace.rb +94 -0
- data/vendor/qwik/common-basic.rb +111 -0
- data/vendor/qwik/common-condition.rb +142 -0
- data/vendor/qwik/common-error.rb +48 -0
- data/vendor/qwik/common-gettext.rb +50 -0
- data/vendor/qwik/common-javascript.rb +45 -0
- data/vendor/qwik/common-notice.rb +132 -0
- data/vendor/qwik/common-plain.rb +105 -0
- data/vendor/qwik/common-plugin.rb +111 -0
- data/vendor/qwik/common-res.rb +76 -0
- data/vendor/qwik/common-resolve.rb +92 -0
- data/vendor/qwik/common-send.rb +171 -0
- data/vendor/qwik/common-session.rb +139 -0
- data/vendor/qwik/common-surface.rb +261 -0
- data/vendor/qwik/common-url.rb +90 -0
- data/vendor/qwik/compat/Makefile +12 -0
- data/vendor/qwik/compat/add_load_path.rb +1 -0
- data/vendor/qwik/config.rb +299 -0
- data/vendor/qwik/db-b-backup.rb +142 -0
- data/vendor/qwik/db-backup.rb +184 -0
- data/vendor/qwik/db-berkeley.rb +306 -0
- data/vendor/qwik/db-filesystem.rb +305 -0
- data/vendor/qwik/db-indexer.rb +154 -0
- data/vendor/qwik/db-searchwords.rb +238 -0
- data/vendor/qwik/description-ja.rb +267 -0
- data/vendor/qwik/description.rb +256 -0
- data/vendor/qwik/dev-add-copyright.rb +23 -0
- data/vendor/qwik/dev-backup.rb +24 -0
- data/vendor/qwik/dev-bench.rb +175 -0
- data/vendor/qwik/dev-calctime.rb +52 -0
- data/vendor/qwik/dev-css-compressor.rb +60 -0
- data/vendor/qwik/dev-extract-catalog.rb +102 -0
- data/vendor/qwik/dev-js-compressor.rb +73 -0
- data/vendor/qwik/dev-release.rb +235 -0
- data/vendor/qwik/dev-replace.rb +353 -0
- data/vendor/qwik/dev-sendmail.rb +25 -0
- data/vendor/qwik/farm.rb +283 -0
- data/vendor/qwik/gettext.rb +56 -0
- data/vendor/qwik/group-cond.rb +157 -0
- data/vendor/qwik/group-config.rb +247 -0
- data/vendor/qwik/group-confirm.rb +147 -0
- data/vendor/qwik/group-db.rb +326 -0
- data/vendor/qwik/group-mail.rb +195 -0
- data/vendor/qwik/group-member.rb +307 -0
- data/vendor/qwik/group-sendmail.rb +231 -0
- data/vendor/qwik/group-site.rb +374 -0
- data/vendor/qwik/group-sweep.rb +63 -0
- data/vendor/qwik/group.rb +157 -0
- data/vendor/qwik/helper.rb +6 -0
- data/vendor/qwik/html-generator.rb +104 -0
- data/vendor/qwik/html-to-wabisabi.rb +149 -0
- data/vendor/qwik/htree-diff.rb +87 -0
- data/vendor/qwik/htree-format-xml.rb +57 -0
- data/vendor/qwik/htree-generator.rb +144 -0
- data/vendor/qwik/htree-get.rb +251 -0
- data/vendor/qwik/htree-html-generator.rb +179 -0
- data/vendor/qwik/htree-template.rb +263 -0
- data/vendor/qwik/htree-to-wabisabi.rb +171 -0
- data/vendor/qwik/loadlib.rb +79 -0
- data/vendor/qwik/logger.rb +115 -0
- data/vendor/qwik/mail-body.rb +171 -0
- data/vendor/qwik/mail-header.rb +474 -0
- data/vendor/qwik/mail-multipart.rb +193 -0
- data/vendor/qwik/mail-parse.rb +147 -0
- data/vendor/qwik/mail.rb +341 -0
- data/vendor/qwik/mailaddress.rb +83 -0
- data/vendor/qwik/mdlb-model.rb +81 -0
- data/vendor/qwik/mdlb-sample.rb +324 -0
- data/vendor/qwik/ml-catalog-factory.rb +27 -0
- data/vendor/qwik/ml-exception.rb +15 -0
- data/vendor/qwik/ml-generator.rb +28 -0
- data/vendor/qwik/ml-gettext.rb +137 -0
- data/vendor/qwik/ml-logger.rb +82 -0
- data/vendor/qwik/ml-memory.rb +65 -0
- data/vendor/qwik/ml-msg-validator.rb +86 -0
- data/vendor/qwik/ml-processor.rb +609 -0
- data/vendor/qwik/ml-quickml-server.rb +122 -0
- data/vendor/qwik/ml-sendmail.rb +0 -0
- data/vendor/qwik/ml-server.rb +107 -0
- data/vendor/qwik/ml-session.rb +348 -0
- data/vendor/qwik/ml-sweeper.rb +101 -0
- data/vendor/qwik/mock-logger.rb +65 -0
- data/vendor/qwik/mock-sendmail.rb +78 -0
- data/vendor/qwik/mock-socket.rb +82 -0
- data/vendor/qwik/modulobe.rb +406 -0
- data/vendor/qwik/mongrel-server.rb +72 -0
- data/vendor/qwik/page-files.rb +249 -0
- data/vendor/qwik/page-generate.rb +82 -0
- data/vendor/qwik/page-get.rb +262 -0
- data/vendor/qwik/page-images.rb +168 -0
- data/vendor/qwik/page-put.rb +128 -0
- data/vendor/qwik/page-rrefs.rb +154 -0
- data/vendor/qwik/page-title.rb +0 -0
- data/vendor/qwik/page-wikidb.rb +234 -0
- data/vendor/qwik/page.rb +67 -0
- data/vendor/qwik/pages.rb +444 -0
- data/vendor/qwik/parse-plugin.rb +249 -0
- data/vendor/qwik/parser-emode.rb +116 -0
- data/vendor/qwik/parser-inline.rb +273 -0
- data/vendor/qwik/parser.rb +350 -0
- data/vendor/qwik/password.rb +183 -0
- data/vendor/qwik/periodic.rb +79 -0
- data/vendor/qwik/qp.rb +56 -0
- data/vendor/qwik/qwik-service.rb +341 -0
- data/vendor/qwik/qwik.rb +5 -0
- data/vendor/qwik/qwikweb-adduser.rb +34 -0
- data/vendor/qwik/qwikweb-catalog-validator.rb +110 -0
- data/vendor/qwik/qwikweb-incgen.rb +28 -0
- data/vendor/qwik/qwikweb-makesite.rb +41 -0
- data/vendor/qwik/qwikweb-server.rb +44 -0
- data/vendor/qwik/qwikweb-showpassword.rb +26 -0
- data/vendor/qwik/qwikweb-watchlog.rb +67 -0
- data/vendor/qwik/request-path.rb +304 -0
- data/vendor/qwik/request-ua.rb +76 -0
- data/vendor/qwik/request-webrick.rb +81 -0
- data/vendor/qwik/request.rb +91 -0
- data/vendor/qwik/resolve-tdiary.rb +292 -0
- data/vendor/qwik/resolve.rb +121 -0
- data/vendor/qwik/response.rb +228 -0
- data/vendor/qwik/server-memory.rb +57 -0
- data/vendor/qwik/server-webrick.rb +102 -0
- data/vendor/qwik/server.rb +252 -0
- data/vendor/qwik/site-config.rb +149 -0
- data/vendor/qwik/site-db.rb +136 -0
- data/vendor/qwik/site-event.rb +162 -0
- data/vendor/qwik/site-files.rb +86 -0
- data/vendor/qwik/site-group.rb +103 -0
- data/vendor/qwik/site-index.rb +47 -0
- data/vendor/qwik/site-log.rb +64 -0
- data/vendor/qwik/site-member.rb +230 -0
- data/vendor/qwik/site-monitor.rb +97 -0
- data/vendor/qwik/site-pages.rb +62 -0
- data/vendor/qwik/site-plan.rb +139 -0
- data/vendor/qwik/site-report.rb +282 -0
- data/vendor/qwik/site-resolve.rb +230 -0
- data/vendor/qwik/site-rrefs.rb +18 -0
- data/vendor/qwik/site-search.rb +180 -0
- data/vendor/qwik/site-timeline.rb +153 -0
- data/vendor/qwik/site-url.rb +189 -0
- data/vendor/qwik/site.rb +76 -0
- data/vendor/qwik/smil-time.rb +105 -0
- data/vendor/qwik/smtp-session.rb +331 -0
- data/vendor/qwik/template-generator.rb +149 -0
- data/vendor/qwik/template.rb +85 -0
- data/vendor/qwik/test-common.rb +10 -0
- data/vendor/qwik/test-ml-info.rb +225 -0
- data/vendor/qwik/test-module-ml.rb +142 -0
- data/vendor/qwik/test-module-path.rb +110 -0
- data/vendor/qwik/test-module-public.rb +70 -0
- data/vendor/qwik/test-module-server.rb +98 -0
- data/vendor/qwik/test-module-session.rb +264 -0
- data/vendor/qwik/test-module-suite.rb +91 -0
- data/vendor/qwik/test-ms-applemail.rb +59 -0
- data/vendor/qwik/test-ms-attach.rb +174 -0
- data/vendor/qwik/test-ms-basic.rb +40 -0
- data/vendor/qwik/test-ms-close.rb +35 -0
- data/vendor/qwik/test-ms-confirm.rb +75 -0
- data/vendor/qwik/test-ms-ignore-spam.rb +57 -0
- data/vendor/qwik/test-ms-japanese.rb +97 -0
- data/vendor/qwik/test-ms-jfilename.rb +82 -0
- data/vendor/qwik/test-ms-large.rb +58 -0
- data/vendor/qwik/test-ms-member.rb +103 -0
- data/vendor/qwik/test-ms-multipart.rb +84 -0
- data/vendor/qwik/test-ms-org.rb +129 -0
- data/vendor/qwik/test-ms-plan.rb +130 -0
- data/vendor/qwik/test-ms-post.rb +53 -0
- data/vendor/qwik/test-ms-quopri.rb +76 -0
- data/vendor/qwik/test-sub-quopri.rb +45 -0
- data/vendor/qwik/test-submit-base64.rb +59 -0
- data/vendor/qwik/test-submit-forward.rb +61 -0
- data/vendor/qwik/test-submit-html-mail.rb +52 -0
- data/vendor/qwik/test-submit-japanese.rb +135 -0
- data/vendor/qwik/test-submit-jfilename.rb +144 -0
- data/vendor/qwik/test-submit-uuencode.rb +71 -0
- data/vendor/qwik/test-suite-all.rb +8 -0
- data/vendor/qwik/test-suite-basic.rb +9 -0
- data/vendor/qwik/test-suite-ml.rb +9 -0
- data/vendor/qwik/test-typekey.rb +64 -0
- data/vendor/qwik/testunit.rb +45 -0
- data/vendor/qwik/tokenizer-inline.rb +294 -0
- data/vendor/qwik/tokenizer.rb +332 -0
- data/vendor/qwik/typekey.rb +160 -0
- data/vendor/qwik/util-basic.rb +135 -0
- data/vendor/qwik/util-charset.rb +332 -0
- data/vendor/qwik/util-css.rb +56 -0
- data/vendor/qwik/util-csv-tokenizer.rb +113 -0
- data/vendor/qwik/util-filename.rb +112 -0
- data/vendor/qwik/util-pathname.rb +202 -0
- data/vendor/qwik/util-pid.rb +58 -0
- data/vendor/qwik/util-safe.rb +67 -0
- data/vendor/qwik/util-sendmail.rb +273 -0
- data/vendor/qwik/util-string.rb +203 -0
- data/vendor/qwik/util-time.rb +125 -0
- data/vendor/qwik/util-webrick.rb +176 -0
- data/vendor/qwik/version.rb +11 -0
- data/vendor/qwik/wabisabi-basic.rb +163 -0
- data/vendor/qwik/wabisabi-diff.rb +130 -0
- data/vendor/qwik/wabisabi-format-xml.rb +310 -0
- data/vendor/qwik/wabisabi-generator.rb +262 -0
- data/vendor/qwik/wabisabi-index.rb +174 -0
- data/vendor/qwik/wabisabi-table.rb +212 -0
- data/vendor/qwik/wabisabi-template.rb +295 -0
- data/vendor/qwik/wabisabi-to-htree.rb +111 -0
- data/vendor/qwik/wabisabi-to-wiki.rb +690 -0
- data/vendor/qwik/wabisabi-traverse.rb +207 -0
- data/vendor/qwik/wabisabi-validator.rb +116 -0
- data/vendor/qwik/wabisabi.rb +5 -0
- metadata +416 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
2
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
3
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
4
|
+
|
|
5
|
+
$LOAD_PATH << 'compat' unless $LOAD_PATH.include? 'compat'
|
|
6
|
+
require 'htree'
|
|
7
|
+
|
|
8
|
+
$LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
|
|
9
|
+
require 'qwik/testunit'
|
|
10
|
+
|
|
11
|
+
class CheckHTree < Test::Unit::TestCase
|
|
12
|
+
def test_htree_to_rexml
|
|
13
|
+
str = '<p>��</p>'
|
|
14
|
+
ok_eq("\202\240", '��') # Kanji code is SJIS.
|
|
15
|
+
h = HTree(str)
|
|
16
|
+
|
|
17
|
+
x = ''
|
|
18
|
+
h.display_xml(x)
|
|
19
|
+
ok_eq("<p\n>\202\240</p\n>", x)
|
|
20
|
+
|
|
21
|
+
r = h.to_rexml
|
|
22
|
+
ok_eq("<p>\202\240</p>", r.to_s)
|
|
23
|
+
#ok_eq(" <p>\202\240</p>", r.to_s(1))
|
|
24
|
+
|
|
25
|
+
html = <<'EOT'
|
|
26
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head id='header'><title>�V�K�쐬</title><link href="/.theme/base.css" rel='stylesheet' media="screen,tv" type="text/css"/><link href="/.theme/qwiksystem/qwiksystem.css" rel='stylesheet' media="screen,tv" type="text/css"/><meta name='ROBOTS' content="NOINDEX,NOFOLLOW"/><meta content="0; url=FirstPage.edit" http-equiv='Refresh'/></head><body><div class='container'><div class='header'><div><div><h1 id="view_title">�V�K�쐬</h1></div></div></div><div class="update day"><div class='form'><div class='msg' id='msg'><h2>�V�K�쐬</h2><p>�V�K�y�[�W���쐬���܂���</p><p><a href="FirstPage.edit">�V�K�y�[�W��ҏW</a>���Ă��������B</p><p><a href="FirstPage.edit">FirstPage.edit</a></p></div></div></div><div class="update day"><div class='comment'></div></div></div></body></html>
|
|
27
|
+
EOT
|
|
28
|
+
h = HTree(html)
|
|
29
|
+
r = h.to_rexml
|
|
30
|
+
e = <<'EOT'
|
|
31
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html xmlns='http://www.w3.org/1999/xhtml'><head id='header'><title>�V�K�쐬</title><link href='/.theme/base.css' rel='stylesheet' type='text/css' media='screen,tv'/><link href='/.theme/qwiksystem/qwiksystem.css' rel='stylesheet' type='text/css' media='screen,tv'/><meta name='ROBOTS' content='NOINDEX,NOFOLLOW'/><meta content='0; url=FirstPage.edit' http-equiv='Refresh'/></head><body><div class='container'><div class='header'><div><div><h1 id='view_title'>�V�K�쐬</h1></div></div></div><div class='update day'><div class='form'><div class='msg' id='msg'><h2>�V�K�쐬</h2><p>�V�K�y�[�W���쐬���܂���</p><p><a href='FirstPage.edit'>�V�K�y�[�W��ҏW</a>���Ă��������B</p><p><a href='FirstPage.edit'>FirstPage.edit</a></p></div></div></div><div class='update day'><div class='comment'/></div></div></body></html>
|
|
32
|
+
EOT
|
|
33
|
+
ok_eq(e, r.to_s)
|
|
34
|
+
|
|
35
|
+
e = <<'EOT'
|
|
36
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
37
|
+
<html xmlns='http://www.w3.org/1999/xhtml'>
|
|
38
|
+
<head id='header'>
|
|
39
|
+
<title>�V�K�쐬</title>
|
|
40
|
+
<link href='/.theme/base.css' rel='stylesheet' type='text/css' media='screen,tv'/>
|
|
41
|
+
<link href='/.theme/qwiksystem/qwiksystem.css' rel='stylesheet' type='text/css' media='screen,tv'/>
|
|
42
|
+
<meta name='ROBOTS' content='NOINDEX,NOFOLLOW'/>
|
|
43
|
+
<meta content='0; url=FirstPage.edit' http-equiv='Refresh'/>
|
|
44
|
+
</head>
|
|
45
|
+
<body>
|
|
46
|
+
<div class='container'>
|
|
47
|
+
<div class='header'>
|
|
48
|
+
<div>
|
|
49
|
+
<div>
|
|
50
|
+
<h1 id='view_title'>�V�K�쐬</h1>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
<div class='update day'>
|
|
55
|
+
<div class='form'>
|
|
56
|
+
<div class='msg' id='msg'>
|
|
57
|
+
<h2>�V�K�쐬</h2>
|
|
58
|
+
<p>�V�K�y�[�W���쐬���܂���</p>
|
|
59
|
+
<p>
|
|
60
|
+
<a href='FirstPage.edit'>�V�K�y�[�W��ҏW</a>���Ă��������B</p>
|
|
61
|
+
<p>
|
|
62
|
+
<a href='FirstPage.edit'>FirstPage.edit</a>
|
|
63
|
+
</p>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
<div class='update day'>
|
|
68
|
+
<div class='comment'/>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
</body>
|
|
72
|
+
</html>
|
|
73
|
+
|
|
74
|
+
EOT
|
|
75
|
+
#ok_eq(e, r.to_s(0))
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
2
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
3
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
4
|
+
|
|
5
|
+
$LOAD_PATH << 'compat' unless $LOAD_PATH.include? 'compat'
|
|
6
|
+
require 'htree'
|
|
7
|
+
|
|
8
|
+
$LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
|
|
9
|
+
require 'qwik/testunit'
|
|
10
|
+
|
|
11
|
+
class CheckHTree < Test::Unit::TestCase
|
|
12
|
+
def assert_xhtml(expected, template, message=nil) # from htree/test
|
|
13
|
+
prefix = "<html\n>"
|
|
14
|
+
suffix = "</html\n>"
|
|
15
|
+
result = HTree.expand_template(''){"<html>#{template}</html>"}
|
|
16
|
+
assert_match(/\A#{Regexp.quote prefix}/, result)
|
|
17
|
+
assert_match(/#{Regexp.quote suffix}\z/, result)
|
|
18
|
+
result = result[prefix.length..(-suffix.length-1)]
|
|
19
|
+
ok_eq(expected, result, message)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_htree
|
|
23
|
+
return # do not test.
|
|
24
|
+
|
|
25
|
+
assert_xhtml("<b\n>t</b\n>", '<b>t</b>')
|
|
26
|
+
assert_xhtml("<e\n>1</e\n>", '<e _text=1>d</e>')
|
|
27
|
+
str = '<html><e _text=1>d</e></html>'
|
|
28
|
+
|
|
29
|
+
doc = HTree(str) # doc is a template
|
|
30
|
+
assert_instance_of(HTree::Doc, doc)
|
|
31
|
+
assert_instance_of(HTree::Elem, doc.root)
|
|
32
|
+
ok_eq('{http://www.w3.org/1999/xhtml}html', doc.root.name)
|
|
33
|
+
assert_instance_of(HTree::Elem, doc.root.children[0])
|
|
34
|
+
assert_instance_of(HTree::Elem, doc.root.children[0])
|
|
35
|
+
assert_instance_of(HTree::Text, doc.root.children[0].children[0])
|
|
36
|
+
assert_instance_of(String, doc.root.children[0].children[0].rcdata)
|
|
37
|
+
ok_eq('d', doc.root.children[0].children[0].rcdata)
|
|
38
|
+
|
|
39
|
+
doc = HTree{str} # doc is a document. the template is evaluated.
|
|
40
|
+
assert_instance_of(HTree::Doc, doc)
|
|
41
|
+
assert_instance_of(HTree::Elem, doc.root)
|
|
42
|
+
assert_instance_of(HTree::Elem, doc.root.children[0])
|
|
43
|
+
assert_instance_of(HTree::Text, doc.root.children[0].children[0])
|
|
44
|
+
ok_eq('1', doc.root.children[0].children[0].rcdata)
|
|
45
|
+
|
|
46
|
+
str = "<html>\n <body _text=\"body\"></body>\n</html>"
|
|
47
|
+
body = 'b'
|
|
48
|
+
result = HTree.expand_template(''){str}
|
|
49
|
+
ok_eq("<html\n><body\n>b</body\n></html\n>", result)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
2
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
3
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
4
|
+
|
|
5
|
+
$LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
|
|
6
|
+
require 'qwik/test-common'
|
|
7
|
+
|
|
8
|
+
begin
|
|
9
|
+
require 'xml/libxml'
|
|
10
|
+
$have_libxml_so = true
|
|
11
|
+
rescue LoadError
|
|
12
|
+
$have_libxml_so = false
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
if $0 == __FILE__
|
|
16
|
+
$test = true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class TestLibXml < Test::Unit::TestCase
|
|
20
|
+
def test_parser
|
|
21
|
+
str = <<'EOT'
|
|
22
|
+
<html><head id='header'><title>FrontPage - example.com/test</title><link href="/.theme/qwikgreen/qwikgreen.css" rel='stylesheet' media="screen,tv,print" type="text/css"/><link href="/.theme/base.css" rel='stylesheet' media="screen,tv,print" type="text/css"/></head><body><div class='container'><div class='main'><div class='adminmenu' id='adminmenu'><p><span class='loginstatus'>user | <em>user@e.com</em> (<a href=".logout">.logout</a>)</span></p>
|
|
23
|
+
<ul><li><a href=".new">�V�K�쐬</a></li>
|
|
24
|
+
<li><a href="FrontPage.edit">�ҏW</a></li>
|
|
25
|
+
</ul>
|
|
26
|
+
</div><h1 id="view_title">FrontPage</h1><div id='body'><div class='day'><h2>FrontPage</h2><div class='body'><div class='section'>
|
|
27
|
+
<p>����͐V�KqwikWeb�T�C�g�̓����ƂȂ�y�[�W�ł��B</p>
|
|
28
|
+
<h3>�g����</h3>
|
|
29
|
+
<p>�y�[�W�̏�̕��ɂ���u�ҏW�v�Ƃ��������N�����ǂ�ƁA���̃y�[�W�̕ҏW���[�h�ɂȂ�܂��B</p>
|
|
30
|
+
<p>�\�����ꂽ�e�L�X�g�̓��e��ύX���A�uSave�v�{�^�����N���b�N����ƁA���̃y�[�W�̓��e���ύX����܂��B</p>
|
|
31
|
+
<h3>�L�q���@</h3>
|
|
32
|
+
<p>�y�[�W�̓��e�̓e�L�X�g�ŏ�����Ă���A�������̋L���ɂ���Č��o���Ȃǂ̎w������܂��B�ڂ������́A<a href="/test/TextFormat.html">TextFormat</a>�������������B</p>
|
|
33
|
+
<h3>qwikWeb</h3>
|
|
34
|
+
<p>�ڂ����́A<a href="http://example.com/" class='external'>qwikWeb</a>�z�[���y�[�W���������������B</p>
|
|
35
|
+
<h3>QuickML</h3>
|
|
36
|
+
<p>���[�����O���X�g�@�\�̎g�����́A<a href="http://www.quickml.com/" class='external'>QuickML</a>�z�[���y�[�W���������������B</p>
|
|
37
|
+
</div></div></div></div><div id="body_leave"><div class='day'><div class='comment'><div class='caption'><div class="page_attribute"><p><div class='qrcode'><a href="http://example.com/test/" class='external'><img src=".attach/qrcode-test.png" alt="http://example.com/test/"/><br/>http://example.com/test/</a></div><div>last modified: 2004-05-20</div></p>
|
|
38
|
+
</div></div></div><div class="body_leave"></div></div></div></div><div class='sidebar' id='sidemenu'><h2>menu</h2>
|
|
39
|
+
<ul><li><a href="/test/FrontPage.html">FrontPage</a></li>
|
|
40
|
+
<li><a href="/test/TitleList.html">TitleList</a></li>
|
|
41
|
+
<li><a href="/test/RecentList.html">RecentList</a></li>
|
|
42
|
+
<li><a href="/test/TextFormat.html">TextFormat</a></li>
|
|
43
|
+
<li><a href="/test/_SiteMenu.html">_SiteMenu</a></li>
|
|
44
|
+
</ul>
|
|
45
|
+
<h2>recent change</h2>
|
|
46
|
+
<p><h3>2004-09-09</h3>
|
|
47
|
+
<ul><li><a href="/test/_SiteMember.html">_SiteMember</a></li>
|
|
48
|
+
</ul>
|
|
49
|
+
</p>
|
|
50
|
+
</div><div class='footer' id='footer'><p>powered by <a href="http://example.com/" class='external'>qwikWeb</a></p>
|
|
51
|
+
</div></div></body></html>
|
|
52
|
+
EOT
|
|
53
|
+
|
|
54
|
+
if $have_libxml_so
|
|
55
|
+
ok_eq('2.6.11', XML::Parser::LIBXML_VERSION)
|
|
56
|
+
ok_eq(28, XML::Parser::VERNUM)
|
|
57
|
+
xp = XML::Parser.new
|
|
58
|
+
xp.string = str.page_to_xml
|
|
59
|
+
doc = xp.parse
|
|
60
|
+
assert_instance_of(XML::Document, doc)
|
|
61
|
+
e = nil
|
|
62
|
+
doc.find('//a'){|ee|
|
|
63
|
+
e = ee
|
|
64
|
+
}
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_text
|
|
69
|
+
if $have_libxml_so
|
|
70
|
+
xp = XML::Parser.new
|
|
71
|
+
xp.string = '<html><p><b>a</b></p></html>'
|
|
72
|
+
doc = xp.parse
|
|
73
|
+
assert_instance_of(XML::Document, doc)
|
|
74
|
+
e = nil
|
|
75
|
+
doc.find('//title'){|e|
|
|
76
|
+
e = ee
|
|
77
|
+
}
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
class TestAssertXPath < Test::Unit::TestCase
|
|
83
|
+
include TestSession
|
|
84
|
+
|
|
85
|
+
def test_ok_xp
|
|
86
|
+
t_add_user
|
|
87
|
+
session('/test/')
|
|
88
|
+
ok_in(['FrontPage'], '//h1')
|
|
89
|
+
ok_xp([:a, {:href=>'.logout'}, 'Logout'], '//a')
|
|
90
|
+
ok_in(['Logout'], '//a')
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
class CheckLibXml_OriginalTest < Test::Unit::TestCase
|
|
95
|
+
def make_sample_xml
|
|
96
|
+
str = "<nodes>\n"
|
|
97
|
+
10000.times {|i|
|
|
98
|
+
str << '<node sum="1" avg="'+i.to_s+'">Node sample text</node>'+"\n"
|
|
99
|
+
}
|
|
100
|
+
str << "</nodes>\n"
|
|
101
|
+
str
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def nutest_rexml #9.851 seconds.
|
|
105
|
+
require 'rexml/document'
|
|
106
|
+
xmlStr = make_sample_xml
|
|
107
|
+
doc = REXML::Document.new xmlStr
|
|
108
|
+
sum = avgSum = count = 0
|
|
109
|
+
doc.elements.each('/nodes/node') { |e|
|
|
110
|
+
count += 1
|
|
111
|
+
sum += e.attributes['sum'].to_i
|
|
112
|
+
avgSum += e.attributes['avg'].to_i
|
|
113
|
+
}
|
|
114
|
+
puts "count(node): #{count}, sum(sum): #{sum}, avg(avg): #{avgSum/count}"
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def nutest_libxml #4.685 seconds
|
|
118
|
+
require 'xml/libxml'
|
|
119
|
+
xmlStr = make_sample_xml
|
|
120
|
+
xp = XML::Parser.new
|
|
121
|
+
xp.string = xmlStr
|
|
122
|
+
doc = xp.parse
|
|
123
|
+
sum = avgSum = count = 0
|
|
124
|
+
doc.find('/nodes/node').each { |e|
|
|
125
|
+
count += 1
|
|
126
|
+
sum += e['sum'].to_i
|
|
127
|
+
avgSum += e['avg'].to_i
|
|
128
|
+
}
|
|
129
|
+
puts "count(node): #{count}, sum(sum): #{sum}, avg(avg): #{avgSum/count}"
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def test_dummy #0.117 seconds.
|
|
133
|
+
xmlStr = make_sample_xml
|
|
134
|
+
end
|
|
135
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
2
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
3
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
4
|
+
|
|
5
|
+
$LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
|
|
6
|
+
|
|
7
|
+
if $0 == __FILE__
|
|
8
|
+
require 'qwik/test-common'
|
|
9
|
+
$test = true
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
if defined?($test) && $test
|
|
13
|
+
class CheckManyPages < Test::Unit::TestCase
|
|
14
|
+
include TestSession
|
|
15
|
+
|
|
16
|
+
def test_all
|
|
17
|
+
t_add_user
|
|
18
|
+
|
|
19
|
+
# page = @site.create_new
|
|
20
|
+
# page.store("* t")
|
|
21
|
+
# res = session('/test/1.html')
|
|
22
|
+
# ok_title('t')
|
|
23
|
+
# page = @site['1']
|
|
24
|
+
|
|
25
|
+
# num = 200
|
|
26
|
+
num = 10
|
|
27
|
+
(1..num).each {|n|
|
|
28
|
+
page = @site.create_new
|
|
29
|
+
page.store("* t#{n}")
|
|
30
|
+
}
|
|
31
|
+
(1..num).each {|n|
|
|
32
|
+
res = session("/test/#{n}.html")
|
|
33
|
+
ok_title("t#{n}")
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
#100 Finished in 28.170425 seconds.
|
|
37
|
+
|
|
38
|
+
#100 Finished in 9.680146 seconds.
|
|
39
|
+
#200 Finished in 28.170425 seconds.
|
|
40
|
+
#1000 Finished in 603.93911 seconds.
|
|
41
|
+
|
|
42
|
+
#100 Finished in 4.67007 seconds.
|
|
43
|
+
#200 Finished in 9.030136 seconds.
|
|
44
|
+
#1000 Finished in 47.230712 seconds.
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
2
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
3
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
4
|
+
|
|
5
|
+
def check_monitor_main
|
|
6
|
+
require 'monitor.rb'
|
|
7
|
+
|
|
8
|
+
buf = []
|
|
9
|
+
buf.extend(MonitorMixin)
|
|
10
|
+
empty_cond = buf.new_cond
|
|
11
|
+
|
|
12
|
+
# consumer
|
|
13
|
+
Thread.start {
|
|
14
|
+
loop {
|
|
15
|
+
buf.synchronize {
|
|
16
|
+
empty_cond.wait_while { buf.empty? }
|
|
17
|
+
print buf.shift
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
# producer
|
|
23
|
+
while line = ARGF.gets
|
|
24
|
+
buf.synchronize {
|
|
25
|
+
buf.push(line)
|
|
26
|
+
empty_cond.signal
|
|
27
|
+
}
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
if $0 == __FILE__
|
|
32
|
+
check_monitor_main
|
|
33
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
2
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
3
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
4
|
+
|
|
5
|
+
require 'observer'
|
|
6
|
+
|
|
7
|
+
class Ticker ### Periodically fetch a stock price.
|
|
8
|
+
include Observable
|
|
9
|
+
|
|
10
|
+
def initialize(symbol)
|
|
11
|
+
@symbol = symbol
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def run
|
|
15
|
+
lastPrice = nil
|
|
16
|
+
loop {
|
|
17
|
+
price = Price.fetch(@symbol)
|
|
18
|
+
print "Current price: #{price}\n"
|
|
19
|
+
if price != lastPrice
|
|
20
|
+
changed # notify observers
|
|
21
|
+
lastPrice = price
|
|
22
|
+
notify_observers(Time.now, price)
|
|
23
|
+
end
|
|
24
|
+
sleep 1
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
class Price ### A mock class to fetch a stock price (60 - 140).
|
|
30
|
+
def Price.fetch(symbol)
|
|
31
|
+
60 + rand(80)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
class Warner ### An abstract observer of Ticker objects.
|
|
36
|
+
def initialize(ticker, limit)
|
|
37
|
+
@limit = limit
|
|
38
|
+
ticker.add_observer(self)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
class WarnLow < Warner
|
|
43
|
+
def update(time, price) # callback for observer
|
|
44
|
+
if price < @limit
|
|
45
|
+
print "--- #{time.to_s}: Price below #@limit: #{price}\n"
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
class WarnHigh < Warner
|
|
51
|
+
def update(time, price) # callback for observer
|
|
52
|
+
if price > @limit
|
|
53
|
+
print "+++ #{time.to_s}: Price above #@limit: #{price}\n"
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def check_observer_main
|
|
59
|
+
ticker = Ticker.new('MSFT')
|
|
60
|
+
WarnLow.new(ticker, 80)
|
|
61
|
+
WarnHigh.new(ticker, 120)
|
|
62
|
+
ticker.run
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
if $0 == __FILE__
|
|
66
|
+
check_observer_main
|
|
67
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
2
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
3
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
4
|
+
|
|
5
|
+
$LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
|
|
6
|
+
require 'qwik/test-module-server'
|
|
7
|
+
|
|
8
|
+
if $0 == __FILE__
|
|
9
|
+
$test = true
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class CheckServer < Test::Unit::TestCase
|
|
13
|
+
include TestServerSetupModule
|
|
14
|
+
include TestServerModule
|
|
15
|
+
|
|
16
|
+
def test_basic
|
|
17
|
+
return if $0 != __FILE__ # Only for unit test.
|
|
18
|
+
|
|
19
|
+
Thread.abort_on_exception = true
|
|
20
|
+
|
|
21
|
+
server, config, memory, wreq, wres = setup_server
|
|
22
|
+
server_thread = Thread.new { server.start }
|
|
23
|
+
|
|
24
|
+
# In private mode.
|
|
25
|
+
write_page('1', "* t\ns\n")
|
|
26
|
+
str = get_path('1.html')
|
|
27
|
+
ok_in(['Members Only'], '//title', str)
|
|
28
|
+
#ok_in(['Login'], '//title', str)
|
|
29
|
+
#ok_in([[:p, 'Please login.'], [:p, [:a, {:href=>'.login'}, 'Login']]],
|
|
30
|
+
# "//div[@class='section']", str)
|
|
31
|
+
|
|
32
|
+
# In public mode.
|
|
33
|
+
write_page('_SiteConfig', ":open:true\n")
|
|
34
|
+
str = get_path('1.html')
|
|
35
|
+
ok_in(['t'], '//title', str)
|
|
36
|
+
ok_in([:p, 's'], "//div[@class='section']", str)
|
|
37
|
+
|
|
38
|
+
teardown_server(server)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_save
|
|
42
|
+
return if $0 != __FILE__ # Only for unit test.
|
|
43
|
+
|
|
44
|
+
server, config, memory, wreq, wres = setup_server
|
|
45
|
+
server_thread = Thread.new { server.start }
|
|
46
|
+
|
|
47
|
+
write_page('_SiteMember', ",user@e.com\n")
|
|
48
|
+
write_page('1', '* t')
|
|
49
|
+
|
|
50
|
+
str = get_path('1.html')
|
|
51
|
+
ok_in(['t'], '//title', str)
|
|
52
|
+
|
|
53
|
+
str = get_path("1.save?contents=*t2")
|
|
54
|
+
ok_in(['Page is saved.'], '//title', str)
|
|
55
|
+
|
|
56
|
+
str = get_path('1.html')
|
|
57
|
+
ok_in(['t2'], '//title', str)
|
|
58
|
+
|
|
59
|
+
teardown_server(server)
|
|
60
|
+
end
|
|
61
|
+
end
|