qwik2md 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/README.md +36 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/qwik2md +17 -0
- data/lib/qwik2md/version.rb +3 -0
- data/lib/qwik2md.rb +39 -0
- data/qwik2md.gemspec +30 -0
- data/vendor/qwik/AUTHORS +10 -0
- data/vendor/qwik/COPYING +340 -0
- data/vendor/qwik/COPYRIGHT +346 -0
- data/vendor/qwik/lib/qwik/Makefile +63 -0
- data/vendor/qwik/lib/qwik/Rakefile +17 -0
- data/vendor/qwik/lib/qwik/act-aa.rb +83 -0
- data/vendor/qwik/lib/qwik/act-archive.rb +386 -0
- data/vendor/qwik/lib/qwik/act-attach.rb +304 -0
- data/vendor/qwik/lib/qwik/act-backup.rb +236 -0
- data/vendor/qwik/lib/qwik/act-basic.rb +325 -0
- data/vendor/qwik/lib/qwik/act-book.rb +161 -0
- data/vendor/qwik/lib/qwik/act-calc.rb +371 -0
- data/vendor/qwik/lib/qwik/act-charset.rb +251 -0
- data/vendor/qwik/lib/qwik/act-christel.rb +112 -0
- data/vendor/qwik/lib/qwik/act-chronology.rb +149 -0
- data/vendor/qwik/lib/qwik/act-code.rb +155 -0
- data/vendor/qwik/lib/qwik/act-comment.rb +554 -0
- data/vendor/qwik/lib/qwik/act-config.rb +49 -0
- data/vendor/qwik/lib/qwik/act-counter.rb +125 -0
- data/vendor/qwik/lib/qwik/act-day.rb +96 -0
- data/vendor/qwik/lib/qwik/act-describe.rb +135 -0
- data/vendor/qwik/lib/qwik/act-diary.rb +109 -0
- data/vendor/qwik/lib/qwik/act-edit.rb +317 -0
- data/vendor/qwik/lib/qwik/act-embed-html.rb +296 -0
- data/vendor/qwik/lib/qwik/act-emode.rb +150 -0
- data/vendor/qwik/lib/qwik/act-event.rb +187 -0
- data/vendor/qwik/lib/qwik/act-file.rb +303 -0
- data/vendor/qwik/lib/qwik/act-files.rb +771 -0
- data/vendor/qwik/lib/qwik/act-getpass.rb +295 -0
- data/vendor/qwik/lib/qwik/act-history.rb +136 -0
- data/vendor/qwik/lib/qwik/act-html.rb +204 -0
- data/vendor/qwik/lib/qwik/act-httpauth.rb +147 -0
- data/vendor/qwik/lib/qwik/act-include.rb +142 -0
- data/vendor/qwik/lib/qwik/act-interwiki.rb +189 -0
- data/vendor/qwik/lib/qwik/act-isearch.rb +109 -0
- data/vendor/qwik/lib/qwik/act-keywords.rb +137 -0
- data/vendor/qwik/lib/qwik/act-lang.rb +81 -0
- data/vendor/qwik/lib/qwik/act-license.rb +63 -0
- data/vendor/qwik/lib/qwik/act-list.rb +287 -0
- data/vendor/qwik/lib/qwik/act-login.rb +410 -0
- data/vendor/qwik/lib/qwik/act-logout.rb +60 -0
- data/vendor/qwik/lib/qwik/act-mail.rb +159 -0
- data/vendor/qwik/lib/qwik/act-map.rb +292 -0
- data/vendor/qwik/lib/qwik/act-md5.rb +42 -0
- data/vendor/qwik/lib/qwik/act-mdlb.rb +741 -0
- data/vendor/qwik/lib/qwik/act-media.rb +416 -0
- data/vendor/qwik/lib/qwik/act-member.rb +157 -0
- data/vendor/qwik/lib/qwik/act-menu.rb +142 -0
- data/vendor/qwik/lib/qwik/act-metadata.rb +323 -0
- data/vendor/qwik/lib/qwik/act-mlsubmitform.rb +49 -0
- data/vendor/qwik/lib/qwik/act-monitor.rb +167 -0
- data/vendor/qwik/lib/qwik/act-new.rb +418 -0
- data/vendor/qwik/lib/qwik/act-pagelist.rb +248 -0
- data/vendor/qwik/lib/qwik/act-password.rb +145 -0
- data/vendor/qwik/lib/qwik/act-plan.rb +210 -0
- data/vendor/qwik/lib/qwik/act-povray.rb +230 -0
- data/vendor/qwik/lib/qwik/act-presen.rb +380 -0
- data/vendor/qwik/lib/qwik/act-redirect.rb +133 -0
- data/vendor/qwik/lib/qwik/act-ring.rb +1071 -0
- data/vendor/qwik/lib/qwik/act-rrefs.rb +255 -0
- data/vendor/qwik/lib/qwik/act-ruby.rb +116 -0
- data/vendor/qwik/lib/qwik/act-sample.rb +170 -0
- data/vendor/qwik/lib/qwik/act-save.rb +295 -0
- data/vendor/qwik/lib/qwik/act-schedule.rb +374 -0
- data/vendor/qwik/lib/qwik/act-search.rb +180 -0
- data/vendor/qwik/lib/qwik/act-searchwords.rb +51 -0
- data/vendor/qwik/lib/qwik/act-sendpass.rb +83 -0
- data/vendor/qwik/lib/qwik/act-site.rb +89 -0
- data/vendor/qwik/lib/qwik/act-sitebackup.rb +419 -0
- data/vendor/qwik/lib/qwik/act-sitelog.rb +118 -0
- data/vendor/qwik/lib/qwik/act-smil.rb +299 -0
- data/vendor/qwik/lib/qwik/act-status.rb +220 -0
- data/vendor/qwik/lib/qwik/act-style.rb +608 -0
- data/vendor/qwik/lib/qwik/act-table.rb +263 -0
- data/vendor/qwik/lib/qwik/act-tableform.rb +241 -0
- data/vendor/qwik/lib/qwik/act-tag.rb +103 -0
- data/vendor/qwik/lib/qwik/act-text.rb +70 -0
- data/vendor/qwik/lib/qwik/act-textarea.rb +164 -0
- data/vendor/qwik/lib/qwik/act-theme.rb +346 -0
- data/vendor/qwik/lib/qwik/act-toc.rb +112 -0
- data/vendor/qwik/lib/qwik/act-typekey.rb +198 -0
- data/vendor/qwik/lib/qwik/act-under-const.rb +94 -0
- data/vendor/qwik/lib/qwik/act-webservice.rb +321 -0
- data/vendor/qwik/lib/qwik/act-wema.rb +558 -0
- data/vendor/qwik/lib/qwik/act-wysiwyg.rb +238 -0
- data/vendor/qwik/lib/qwik/action.rb +325 -0
- data/vendor/qwik/lib/qwik/autoreload.rb +98 -0
- data/vendor/qwik/lib/qwik/bench-bench.rb +28 -0
- data/vendor/qwik/lib/qwik/bench-emode.rb +47 -0
- data/vendor/qwik/lib/qwik/bench-format-xml.rb +70 -0
- data/vendor/qwik/lib/qwik/bench-large-table.rb +62 -0
- data/vendor/qwik/lib/qwik/bench-md5.rb +14 -0
- data/vendor/qwik/lib/qwik/bench-module-session.rb +19 -0
- data/vendor/qwik/lib/qwik/bench-page.rb +50 -0
- data/vendor/qwik/lib/qwik/bench-s-md5.rb +28 -0
- data/vendor/qwik/lib/qwik/bench-session.rb +25 -0
- data/vendor/qwik/lib/qwik/bench-textformat.rb +31 -0
- data/vendor/qwik/lib/qwik/catalog-factory.rb +91 -0
- data/vendor/qwik/lib/qwik/catalog-ja.rb +479 -0
- data/vendor/qwik/lib/qwik/catalog-ml-ja.rb +145 -0
- data/vendor/qwik/lib/qwik/check-act-monitor.rb +112 -0
- data/vendor/qwik/lib/qwik/check-act-monitor2.rb +46 -0
- data/vendor/qwik/lib/qwik/check-act-theme.rb +27 -0
- data/vendor/qwik/lib/qwik/check-event.rb +112 -0
- data/vendor/qwik/lib/qwik/check-event2.rb +55 -0
- data/vendor/qwik/lib/qwik/check-htree-rexml.rb +77 -0
- data/vendor/qwik/lib/qwik/check-htree.rb +51 -0
- data/vendor/qwik/lib/qwik/check-libxml.rb +135 -0
- data/vendor/qwik/lib/qwik/check-many-pages.rb +47 -0
- data/vendor/qwik/lib/qwik/check-monitor.rb +33 -0
- data/vendor/qwik/lib/qwik/check-observer.rb +67 -0
- data/vendor/qwik/lib/qwik/check-server.rb +61 -0
- data/vendor/qwik/lib/qwik/check-uuencode.rb +33 -0
- data/vendor/qwik/lib/qwik/check-webdav.rb +65 -0
- data/vendor/qwik/lib/qwik/check-xml-xpath.rb +27 -0
- data/vendor/qwik/lib/qwik/common-backtrace.rb +94 -0
- data/vendor/qwik/lib/qwik/common-basic.rb +111 -0
- data/vendor/qwik/lib/qwik/common-condition.rb +142 -0
- data/vendor/qwik/lib/qwik/common-error.rb +48 -0
- data/vendor/qwik/lib/qwik/common-gettext.rb +50 -0
- data/vendor/qwik/lib/qwik/common-javascript.rb +45 -0
- data/vendor/qwik/lib/qwik/common-notice.rb +132 -0
- data/vendor/qwik/lib/qwik/common-plain.rb +105 -0
- data/vendor/qwik/lib/qwik/common-plugin.rb +111 -0
- data/vendor/qwik/lib/qwik/common-res.rb +76 -0
- data/vendor/qwik/lib/qwik/common-resolve.rb +92 -0
- data/vendor/qwik/lib/qwik/common-send.rb +171 -0
- data/vendor/qwik/lib/qwik/common-session.rb +139 -0
- data/vendor/qwik/lib/qwik/common-surface.rb +261 -0
- data/vendor/qwik/lib/qwik/common-url.rb +90 -0
- data/vendor/qwik/lib/qwik/compat/Makefile +12 -0
- data/vendor/qwik/lib/qwik/compat/add_load_path.rb +1 -0
- data/vendor/qwik/lib/qwik/config.rb +299 -0
- data/vendor/qwik/lib/qwik/db-b-backup.rb +142 -0
- data/vendor/qwik/lib/qwik/db-backup.rb +184 -0
- data/vendor/qwik/lib/qwik/db-berkeley.rb +306 -0
- data/vendor/qwik/lib/qwik/db-filesystem.rb +305 -0
- data/vendor/qwik/lib/qwik/db-indexer.rb +154 -0
- data/vendor/qwik/lib/qwik/db-searchwords.rb +238 -0
- data/vendor/qwik/lib/qwik/description-ja.rb +267 -0
- data/vendor/qwik/lib/qwik/description.rb +256 -0
- data/vendor/qwik/lib/qwik/dev-add-copyright.rb +23 -0
- data/vendor/qwik/lib/qwik/dev-backup.rb +24 -0
- data/vendor/qwik/lib/qwik/dev-bench.rb +175 -0
- data/vendor/qwik/lib/qwik/dev-calctime.rb +52 -0
- data/vendor/qwik/lib/qwik/dev-css-compressor.rb +60 -0
- data/vendor/qwik/lib/qwik/dev-extract-catalog.rb +102 -0
- data/vendor/qwik/lib/qwik/dev-js-compressor.rb +73 -0
- data/vendor/qwik/lib/qwik/dev-release.rb +235 -0
- data/vendor/qwik/lib/qwik/dev-replace.rb +353 -0
- data/vendor/qwik/lib/qwik/dev-sendmail.rb +25 -0
- data/vendor/qwik/lib/qwik/farm.rb +283 -0
- data/vendor/qwik/lib/qwik/gettext.rb +56 -0
- data/vendor/qwik/lib/qwik/group-cond.rb +157 -0
- data/vendor/qwik/lib/qwik/group-config.rb +247 -0
- data/vendor/qwik/lib/qwik/group-confirm.rb +147 -0
- data/vendor/qwik/lib/qwik/group-db.rb +326 -0
- data/vendor/qwik/lib/qwik/group-mail.rb +195 -0
- data/vendor/qwik/lib/qwik/group-member.rb +307 -0
- data/vendor/qwik/lib/qwik/group-sendmail.rb +231 -0
- data/vendor/qwik/lib/qwik/group-site.rb +374 -0
- data/vendor/qwik/lib/qwik/group-sweep.rb +63 -0
- data/vendor/qwik/lib/qwik/group.rb +157 -0
- data/vendor/qwik/lib/qwik/helper.rb +6 -0
- data/vendor/qwik/lib/qwik/html-generator.rb +104 -0
- data/vendor/qwik/lib/qwik/html-to-wabisabi.rb +148 -0
- data/vendor/qwik/lib/qwik/htree-diff.rb +87 -0
- data/vendor/qwik/lib/qwik/htree-format-xml.rb +57 -0
- data/vendor/qwik/lib/qwik/htree-generator.rb +144 -0
- data/vendor/qwik/lib/qwik/htree-get.rb +251 -0
- data/vendor/qwik/lib/qwik/htree-html-generator.rb +179 -0
- data/vendor/qwik/lib/qwik/htree-template.rb +263 -0
- data/vendor/qwik/lib/qwik/htree-to-wabisabi.rb +171 -0
- data/vendor/qwik/lib/qwik/loadlib.rb +79 -0
- data/vendor/qwik/lib/qwik/logger.rb +115 -0
- data/vendor/qwik/lib/qwik/mail-body.rb +171 -0
- data/vendor/qwik/lib/qwik/mail-header.rb +474 -0
- data/vendor/qwik/lib/qwik/mail-multipart.rb +193 -0
- data/vendor/qwik/lib/qwik/mail-parse.rb +147 -0
- data/vendor/qwik/lib/qwik/mail.rb +341 -0
- data/vendor/qwik/lib/qwik/mailaddress.rb +83 -0
- data/vendor/qwik/lib/qwik/mdlb-model.rb +81 -0
- data/vendor/qwik/lib/qwik/mdlb-sample.rb +324 -0
- data/vendor/qwik/lib/qwik/ml-catalog-factory.rb +27 -0
- data/vendor/qwik/lib/qwik/ml-exception.rb +15 -0
- data/vendor/qwik/lib/qwik/ml-generator.rb +28 -0
- data/vendor/qwik/lib/qwik/ml-gettext.rb +137 -0
- data/vendor/qwik/lib/qwik/ml-logger.rb +82 -0
- data/vendor/qwik/lib/qwik/ml-memory.rb +65 -0
- data/vendor/qwik/lib/qwik/ml-msg-validator.rb +86 -0
- data/vendor/qwik/lib/qwik/ml-processor.rb +609 -0
- data/vendor/qwik/lib/qwik/ml-quickml-server.rb +122 -0
- data/vendor/qwik/lib/qwik/ml-sendmail.rb +0 -0
- data/vendor/qwik/lib/qwik/ml-server.rb +107 -0
- data/vendor/qwik/lib/qwik/ml-session.rb +348 -0
- data/vendor/qwik/lib/qwik/ml-sweeper.rb +101 -0
- data/vendor/qwik/lib/qwik/mock-logger.rb +65 -0
- data/vendor/qwik/lib/qwik/mock-sendmail.rb +78 -0
- data/vendor/qwik/lib/qwik/mock-socket.rb +82 -0
- data/vendor/qwik/lib/qwik/modulobe.rb +406 -0
- data/vendor/qwik/lib/qwik/mongrel-server.rb +72 -0
- data/vendor/qwik/lib/qwik/page-files.rb +249 -0
- data/vendor/qwik/lib/qwik/page-generate.rb +82 -0
- data/vendor/qwik/lib/qwik/page-get.rb +262 -0
- data/vendor/qwik/lib/qwik/page-images.rb +168 -0
- data/vendor/qwik/lib/qwik/page-put.rb +128 -0
- data/vendor/qwik/lib/qwik/page-rrefs.rb +154 -0
- data/vendor/qwik/lib/qwik/page-title.rb +0 -0
- data/vendor/qwik/lib/qwik/page-wikidb.rb +234 -0
- data/vendor/qwik/lib/qwik/page.rb +67 -0
- data/vendor/qwik/lib/qwik/pages.rb +444 -0
- data/vendor/qwik/lib/qwik/parse-plugin.rb +249 -0
- data/vendor/qwik/lib/qwik/parser-emode.rb +116 -0
- data/vendor/qwik/lib/qwik/parser-inline.rb +272 -0
- data/vendor/qwik/lib/qwik/parser.rb +349 -0
- data/vendor/qwik/lib/qwik/password.rb +183 -0
- data/vendor/qwik/lib/qwik/periodic.rb +79 -0
- data/vendor/qwik/lib/qwik/qp.rb +56 -0
- data/vendor/qwik/lib/qwik/qwik-service.rb +341 -0
- data/vendor/qwik/lib/qwik/qwik.rb +5 -0
- data/vendor/qwik/lib/qwik/qwikweb-adduser.rb +34 -0
- data/vendor/qwik/lib/qwik/qwikweb-catalog-validator.rb +110 -0
- data/vendor/qwik/lib/qwik/qwikweb-incgen.rb +28 -0
- data/vendor/qwik/lib/qwik/qwikweb-makesite.rb +41 -0
- data/vendor/qwik/lib/qwik/qwikweb-server.rb +44 -0
- data/vendor/qwik/lib/qwik/qwikweb-showpassword.rb +26 -0
- data/vendor/qwik/lib/qwik/qwikweb-watchlog.rb +67 -0
- data/vendor/qwik/lib/qwik/request-path.rb +304 -0
- data/vendor/qwik/lib/qwik/request-ua.rb +76 -0
- data/vendor/qwik/lib/qwik/request-webrick.rb +81 -0
- data/vendor/qwik/lib/qwik/request.rb +91 -0
- data/vendor/qwik/lib/qwik/resolve-tdiary.rb +292 -0
- data/vendor/qwik/lib/qwik/resolve.rb +121 -0
- data/vendor/qwik/lib/qwik/response.rb +228 -0
- data/vendor/qwik/lib/qwik/server-memory.rb +57 -0
- data/vendor/qwik/lib/qwik/server-webrick.rb +102 -0
- data/vendor/qwik/lib/qwik/server.rb +252 -0
- data/vendor/qwik/lib/qwik/site-config.rb +149 -0
- data/vendor/qwik/lib/qwik/site-db.rb +136 -0
- data/vendor/qwik/lib/qwik/site-event.rb +162 -0
- data/vendor/qwik/lib/qwik/site-files.rb +86 -0
- data/vendor/qwik/lib/qwik/site-group.rb +103 -0
- data/vendor/qwik/lib/qwik/site-index.rb +47 -0
- data/vendor/qwik/lib/qwik/site-log.rb +64 -0
- data/vendor/qwik/lib/qwik/site-member.rb +230 -0
- data/vendor/qwik/lib/qwik/site-monitor.rb +97 -0
- data/vendor/qwik/lib/qwik/site-pages.rb +62 -0
- data/vendor/qwik/lib/qwik/site-plan.rb +139 -0
- data/vendor/qwik/lib/qwik/site-report.rb +282 -0
- data/vendor/qwik/lib/qwik/site-resolve.rb +230 -0
- data/vendor/qwik/lib/qwik/site-rrefs.rb +18 -0
- data/vendor/qwik/lib/qwik/site-search.rb +180 -0
- data/vendor/qwik/lib/qwik/site-timeline.rb +153 -0
- data/vendor/qwik/lib/qwik/site-url.rb +189 -0
- data/vendor/qwik/lib/qwik/site.rb +76 -0
- data/vendor/qwik/lib/qwik/smil-time.rb +105 -0
- data/vendor/qwik/lib/qwik/smtp-session.rb +331 -0
- data/vendor/qwik/lib/qwik/template-generator.rb +149 -0
- data/vendor/qwik/lib/qwik/template.rb +85 -0
- data/vendor/qwik/lib/qwik/test-common.rb +10 -0
- data/vendor/qwik/lib/qwik/test-ml-info.rb +225 -0
- data/vendor/qwik/lib/qwik/test-module-ml.rb +142 -0
- data/vendor/qwik/lib/qwik/test-module-path.rb +110 -0
- data/vendor/qwik/lib/qwik/test-module-public.rb +70 -0
- data/vendor/qwik/lib/qwik/test-module-server.rb +98 -0
- data/vendor/qwik/lib/qwik/test-module-session.rb +264 -0
- data/vendor/qwik/lib/qwik/test-module-suite.rb +91 -0
- data/vendor/qwik/lib/qwik/test-ms-applemail.rb +59 -0
- data/vendor/qwik/lib/qwik/test-ms-attach.rb +174 -0
- data/vendor/qwik/lib/qwik/test-ms-basic.rb +40 -0
- data/vendor/qwik/lib/qwik/test-ms-close.rb +35 -0
- data/vendor/qwik/lib/qwik/test-ms-confirm.rb +75 -0
- data/vendor/qwik/lib/qwik/test-ms-ignore-spam.rb +57 -0
- data/vendor/qwik/lib/qwik/test-ms-japanese.rb +97 -0
- data/vendor/qwik/lib/qwik/test-ms-jfilename.rb +82 -0
- data/vendor/qwik/lib/qwik/test-ms-large.rb +58 -0
- data/vendor/qwik/lib/qwik/test-ms-member.rb +103 -0
- data/vendor/qwik/lib/qwik/test-ms-multipart.rb +84 -0
- data/vendor/qwik/lib/qwik/test-ms-org.rb +129 -0
- data/vendor/qwik/lib/qwik/test-ms-plan.rb +130 -0
- data/vendor/qwik/lib/qwik/test-ms-post.rb +53 -0
- data/vendor/qwik/lib/qwik/test-ms-quopri.rb +76 -0
- data/vendor/qwik/lib/qwik/test-sub-quopri.rb +45 -0
- data/vendor/qwik/lib/qwik/test-submit-base64.rb +59 -0
- data/vendor/qwik/lib/qwik/test-submit-forward.rb +61 -0
- data/vendor/qwik/lib/qwik/test-submit-html-mail.rb +52 -0
- data/vendor/qwik/lib/qwik/test-submit-japanese.rb +135 -0
- data/vendor/qwik/lib/qwik/test-submit-jfilename.rb +144 -0
- data/vendor/qwik/lib/qwik/test-submit-uuencode.rb +71 -0
- data/vendor/qwik/lib/qwik/test-suite-all.rb +8 -0
- data/vendor/qwik/lib/qwik/test-suite-basic.rb +9 -0
- data/vendor/qwik/lib/qwik/test-suite-ml.rb +9 -0
- data/vendor/qwik/lib/qwik/test-typekey.rb +64 -0
- data/vendor/qwik/lib/qwik/testunit.rb +45 -0
- data/vendor/qwik/lib/qwik/tokenizer-inline.rb +288 -0
- data/vendor/qwik/lib/qwik/tokenizer.rb +331 -0
- data/vendor/qwik/lib/qwik/typekey.rb +160 -0
- data/vendor/qwik/lib/qwik/util-basic.rb +135 -0
- data/vendor/qwik/lib/qwik/util-charset.rb +331 -0
- data/vendor/qwik/lib/qwik/util-css.rb +56 -0
- data/vendor/qwik/lib/qwik/util-csv-tokenizer.rb +113 -0
- data/vendor/qwik/lib/qwik/util-filename.rb +112 -0
- data/vendor/qwik/lib/qwik/util-pathname.rb +202 -0
- data/vendor/qwik/lib/qwik/util-pid.rb +58 -0
- data/vendor/qwik/lib/qwik/util-safe.rb +67 -0
- data/vendor/qwik/lib/qwik/util-sendmail.rb +273 -0
- data/vendor/qwik/lib/qwik/util-string.rb +202 -0
- data/vendor/qwik/lib/qwik/util-time.rb +125 -0
- data/vendor/qwik/lib/qwik/util-webrick.rb +176 -0
- data/vendor/qwik/lib/qwik/version.rb +11 -0
- data/vendor/qwik/lib/qwik/wabisabi-basic.rb +163 -0
- data/vendor/qwik/lib/qwik/wabisabi-diff.rb +130 -0
- data/vendor/qwik/lib/qwik/wabisabi-format-xml.rb +310 -0
- data/vendor/qwik/lib/qwik/wabisabi-generator.rb +262 -0
- data/vendor/qwik/lib/qwik/wabisabi-index.rb +174 -0
- data/vendor/qwik/lib/qwik/wabisabi-table.rb +212 -0
- data/vendor/qwik/lib/qwik/wabisabi-template.rb +295 -0
- data/vendor/qwik/lib/qwik/wabisabi-to-htree.rb +111 -0
- data/vendor/qwik/lib/qwik/wabisabi-to-wiki.rb +690 -0
- data/vendor/qwik/lib/qwik/wabisabi-traverse.rb +207 -0
- data/vendor/qwik/lib/qwik/wabisabi-validator.rb +116 -0
- data/vendor/qwik/lib/qwik/wabisabi.rb +5 -0
- metadata +492 -0
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
# -*- coding: shift_jis -*-
|
|
2
|
+
# Copyright (C) 2008 National Institute of
|
|
3
|
+
# Advanced Industrial Science and Technology (AIST)
|
|
4
|
+
# All rights reserved.
|
|
5
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
6
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
7
|
+
|
|
8
|
+
module Qwik
|
|
9
|
+
class Site
|
|
10
|
+
def lastmod_of_all
|
|
11
|
+
ar = []
|
|
12
|
+
self.path.find do |p|
|
|
13
|
+
Find.prune if p.basename.to_s == '.cache' or p.basename.to_s == '.svn'
|
|
14
|
+
ar << p.mtime
|
|
15
|
+
end
|
|
16
|
+
ar.max
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class Action
|
|
21
|
+
D_SiteBackup = {
|
|
22
|
+
:dt => 'Site backup',
|
|
23
|
+
:dd => 'You can get a tgz(tar.gz) archive of the whole site content.',
|
|
24
|
+
:dc => '* Example
|
|
25
|
+
{{sitebackup}}
|
|
26
|
+
|
|
27
|
+
You can get a zip archive with all text data of the Wiki site.
|
|
28
|
+
You can get a tgz(tar and gziped) archive of the whole site content.
|
|
29
|
+
|
|
30
|
+
You can move your site by getting the archive and placing them on your
|
|
31
|
+
qwikWeb data directory.
|
|
32
|
+
|
|
33
|
+
At the first click, it only shows the progress of archiving.
|
|
34
|
+
After the archiving is finished, you can download the archive file.
|
|
35
|
+
|
|
36
|
+
If you change anything on the site, it\'ll recreate the archive.
|
|
37
|
+
'
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
D_SiteBackup_ja = {
|
|
41
|
+
:dt => 'サイト・バックアップ',
|
|
42
|
+
:dd => 'サイト・バックアップを取得できます。',
|
|
43
|
+
:dc => '* 使い方
|
|
44
|
+
{{sitebackup}}
|
|
45
|
+
|
|
46
|
+
このリンクから、サイトの内容すべてをtar.gz形式のアーカイブにしてダウンロードできます。
|
|
47
|
+
|
|
48
|
+
展開してqwikWebのdataディレクトリに置けば,サイトをそのまま移行することができます.
|
|
49
|
+
|
|
50
|
+
最初の一回目は、アーカイブ作成のためのプロセスが実行されます。
|
|
51
|
+
作成が終わってからリロードするか、ブラウザから元のページに戻って
|
|
52
|
+
もう一度リンクをクリックすると、アーカイブをダウンロードすることができます。
|
|
53
|
+
|
|
54
|
+
サイトの内容が更新された後、このリンクを再度クリックすると、アーカイブも再作成されます。
|
|
55
|
+
'
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
def plg_sitebackup
|
|
59
|
+
return "no tar command" if ! SiteBackup.command_exist?
|
|
60
|
+
return page_attribute('sitebackup', _('Site backup'), @site.sitename)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def ext_sitebackup
|
|
64
|
+
return c_nerror("no tar command") if ! SiteBackup.command_exist?
|
|
65
|
+
c_require_member
|
|
66
|
+
c_require_base_is_sitename
|
|
67
|
+
|
|
68
|
+
backup = SiteBackup.new(@site, @config)
|
|
69
|
+
if backup.latest?
|
|
70
|
+
return c_notice("Download archive", "#{@site.sitename}.tgz", 200, 2) {
|
|
71
|
+
[:p, "Backup process is complete. download ",
|
|
72
|
+
[:a, {:href=>"#{@site.sitename}.tgz"}, "archive"],
|
|
73
|
+
"."
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
if backup.generating?
|
|
79
|
+
return c_notice("in progress", "#{@site.sitename}.sitebackup", 200, 5) {
|
|
80
|
+
[:p, "Backup process is running."]
|
|
81
|
+
}
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
backup.generate
|
|
85
|
+
return c_notice("starting", "#{@site.sitename}.sitebackup", 200, 5) {
|
|
86
|
+
[:p, "Backup process is starting"]
|
|
87
|
+
}
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# only for download archive
|
|
91
|
+
def ext_tgz
|
|
92
|
+
c_require_member
|
|
93
|
+
c_require_base_is_sitename
|
|
94
|
+
|
|
95
|
+
backup = SiteBackup.new(@site, @config)
|
|
96
|
+
if backup.latest?
|
|
97
|
+
return c_simple_send(backup.archive_path, "application/gzip")
|
|
98
|
+
else
|
|
99
|
+
return c_notfound { "no latest backup" }
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
class SiteBackup
|
|
105
|
+
TAR_CMD = '/bin/tar' # path to tar command (GNU version is required)
|
|
106
|
+
def self.command_exist?
|
|
107
|
+
TAR_CMD.path.executable?
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def initialize(site, config)
|
|
111
|
+
@site = site
|
|
112
|
+
@config = config
|
|
113
|
+
@archive_path = site.cache_path + "#{@site.sitename}.tgz"
|
|
114
|
+
@tmpfile_path = site.cache_path + "sitebackup.tmp"
|
|
115
|
+
end
|
|
116
|
+
attr_reader :archive_path
|
|
117
|
+
attr_reader :tmpfile_path
|
|
118
|
+
|
|
119
|
+
def _site_lastmod
|
|
120
|
+
@site.lastmod_of_all
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def _archive_mtime
|
|
124
|
+
result = nil
|
|
125
|
+
result = @archive_path.mtime if @archive_path.exist?
|
|
126
|
+
return result
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def _tmpfile_mtime
|
|
130
|
+
result = nil
|
|
131
|
+
result = @tmpfile_path.mtime if @tmpfile_path.exist?
|
|
132
|
+
return result
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def latest?(site_lastmod = _site_lastmod, archive_mtime = _archive_mtime,
|
|
136
|
+
tmpfile_mtime = _tmpfile_mtime) # explicit arguments for test
|
|
137
|
+
return false if archive_mtime.nil?
|
|
138
|
+
if tmpfile_mtime.nil?
|
|
139
|
+
archive_mtime >= site_lastmod
|
|
140
|
+
else
|
|
141
|
+
archive_mtime >= site_lastmod && archive_mtime > tmpfile_mtime
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def generating?(site_lastmod = _site_lastmod, archive_mtime = _archive_mtime,
|
|
146
|
+
tmpfile_mtime = _tmpfile_mtime) # explicit arguments for test
|
|
147
|
+
return false if tmpfile_mtime.nil?
|
|
148
|
+
if archive_mtime.nil?
|
|
149
|
+
tmpfile_mtime > site_lastmod
|
|
150
|
+
else
|
|
151
|
+
tmpfile_mtime >= archive_mtime && tmpfile_mtime > site_lastmod
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def invoke(cmd)
|
|
156
|
+
system(cmd)
|
|
157
|
+
child_process = $?
|
|
158
|
+
child_process.exitstatus == 0 ? :success : :failure
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def command
|
|
162
|
+
"#{TAR_CMD} zcf #{@tmpfile_path} -C #{@config.sites_dir} " +
|
|
163
|
+
"--exclude .cache --exclude .svn -h #{@site.sitename}"
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def generate
|
|
167
|
+
if defined?($test) && $test
|
|
168
|
+
_generate
|
|
169
|
+
else
|
|
170
|
+
do_concurrent { _generate }
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def _generate
|
|
175
|
+
cleanup
|
|
176
|
+
result = invoke(command)
|
|
177
|
+
if result == :success && @tmpfile_path.exist?
|
|
178
|
+
@tmpfile_path.rename(@archive_path)
|
|
179
|
+
else
|
|
180
|
+
@tmpfile_path.unlink if @tmpfile_path.exist?
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def do_concurrent
|
|
185
|
+
Thread.new {
|
|
186
|
+
yield
|
|
187
|
+
}
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def cleanup
|
|
191
|
+
@tmpfile_path.unlink if @tmpfile_path.exist?
|
|
192
|
+
@archive_path.unlink if @archive_path.exist?
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
if $0 == __FILE__
|
|
199
|
+
$LOAD_PATH << '..' unless $LOAD_PATH.include? '..'
|
|
200
|
+
require 'qwik/test-common'
|
|
201
|
+
require 'qwik/util-pathname'
|
|
202
|
+
$test = true
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
if defined?($test) && $test
|
|
206
|
+
class MockSite
|
|
207
|
+
def cache_path; ".test/data/test/.cache/".path; end
|
|
208
|
+
def sitename; "test"; end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
class MockConfig
|
|
212
|
+
def sites_dir; ".test/data/"; end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
class TestSiteBackup < Test::Unit::TestCase
|
|
216
|
+
include TestSession
|
|
217
|
+
|
|
218
|
+
def setup
|
|
219
|
+
site = MockSite.new
|
|
220
|
+
config = MockConfig.new
|
|
221
|
+
@backup = Qwik::SiteBackup.new(site, config)
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def test_archive_path
|
|
225
|
+
expected = ".test/data/test/.cache/test.tgz".path
|
|
226
|
+
actual = @backup.archive_path
|
|
227
|
+
is expected, actual
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
def test_tmpfile_path
|
|
231
|
+
expected = ".test/data/test/.cache/sitebackup.tmp".path
|
|
232
|
+
actual = @backup.tmpfile_path
|
|
233
|
+
is expected, actual
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
def test_command_exist
|
|
237
|
+
ok Qwik::SiteBackup.command_exist?
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
def test_backup_is_latest
|
|
241
|
+
site_lastmod = Time.at(0)
|
|
242
|
+
archive_mtime = Time.at(1)
|
|
243
|
+
tmpfile_mtime = nil
|
|
244
|
+
excepted = true
|
|
245
|
+
actual = @backup.latest?(site_lastmod, archive_mtime, tmpfile_mtime)
|
|
246
|
+
is excepted, actual
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
def test_backup_is_latest2
|
|
250
|
+
site_lastmod = Time.at(0)
|
|
251
|
+
archive_mtime = Time.at(0)
|
|
252
|
+
tmpfile_mtime = nil
|
|
253
|
+
excepted = true
|
|
254
|
+
actual = @backup.latest?(site_lastmod, archive_mtime, tmpfile_mtime)
|
|
255
|
+
is excepted, actual, "archive and site-lastmod is same"
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
def test_backup_is_not_latest2
|
|
259
|
+
site_lastmod = Time.at(0)
|
|
260
|
+
archive_mtime = Time.at(1)
|
|
261
|
+
tmpfile_mtime = Time.at(1)
|
|
262
|
+
excepted = false
|
|
263
|
+
actual = @backup.latest?(site_lastmod, archive_mtime, tmpfile_mtime)
|
|
264
|
+
is excepted, actual, "tmpfile is latest"
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def test_backup_is_not_latest3
|
|
268
|
+
site_lastmod = Time.at(0)
|
|
269
|
+
archive_mtime = nil
|
|
270
|
+
tmpfile_mtime = nil
|
|
271
|
+
excepted = false
|
|
272
|
+
actual = @backup.latest?(site_lastmod, archive_mtime, tmpfile_mtime)
|
|
273
|
+
is excepted, actual, "backup is not exist"
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
def test_backup_is_creating
|
|
277
|
+
site_lastmod = Time.at(0)
|
|
278
|
+
archive_mtime = Time.at(0)
|
|
279
|
+
tmpfile_mtime = Time.at(1)
|
|
280
|
+
excepted = true
|
|
281
|
+
actual = @backup.generating?(site_lastmod, archive_mtime, tmpfile_mtime)
|
|
282
|
+
is excepted, actual
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
def test_backup_is_creating2
|
|
286
|
+
site_lastmod = Time.at(0)
|
|
287
|
+
archive_mtime = nil
|
|
288
|
+
tmpfile_mtime = Time.at(1)
|
|
289
|
+
excepted = true
|
|
290
|
+
actual = @backup.generating?(site_lastmod, archive_mtime, tmpfile_mtime)
|
|
291
|
+
is excepted, actual, "at first: backup is not exist"
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
def test_backup_is_creating3
|
|
295
|
+
site_lastmod = Time.at(0)
|
|
296
|
+
archive_mtime = Time.at(1)
|
|
297
|
+
tmpfile_mtime = Time.at(1)
|
|
298
|
+
excepted = true
|
|
299
|
+
actual = @backup.generating?(site_lastmod, archive_mtime, tmpfile_mtime)
|
|
300
|
+
is excepted, actual, "tmp and backup is same"
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
def test_backup_is_not_creating
|
|
304
|
+
site_lastmod = Time.at(0)
|
|
305
|
+
archive_mtime = Time.at(0)
|
|
306
|
+
tmpfile_mtime = nil
|
|
307
|
+
excepted = false
|
|
308
|
+
actual = @backup.generating?(site_lastmod, archive_mtime, tmpfile_mtime)
|
|
309
|
+
is excepted, actual, "tmp is absent"
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
def test_backup_is_not_creating2
|
|
313
|
+
site_lastmod = Time.at(1)
|
|
314
|
+
archive_mtime = Time.at(1)
|
|
315
|
+
tmpfile_mtime = Time.at(1)
|
|
316
|
+
excepted = false
|
|
317
|
+
actual = @backup.generating?(site_lastmod, archive_mtime, tmpfile_mtime)
|
|
318
|
+
is excepted, actual, "site is modified"
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
def test_invoke
|
|
322
|
+
expected = :success
|
|
323
|
+
input = "ruby -e 'true'"
|
|
324
|
+
actual = @backup.invoke(input)
|
|
325
|
+
is expected, actual
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
def test_invoke_fail
|
|
329
|
+
expected = :failure
|
|
330
|
+
input = "ruby -e 'exit 1'"
|
|
331
|
+
actual = @backup.invoke(input)
|
|
332
|
+
is expected, actual, "exit status sould be 1"
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def test_invoke_unavailable
|
|
336
|
+
expected = :failure
|
|
337
|
+
input = "never-seen-command"
|
|
338
|
+
actual = @backup.invoke(input)
|
|
339
|
+
is expected, actual, "command should not found"
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
def test_command
|
|
343
|
+
expected = "#{Qwik::SiteBackup::TAR_CMD} zcf .test/data/test/.cache/sitebackup.tmp -C .test/data/ " +
|
|
344
|
+
"--exclude .cache --exclude .svn -h test"
|
|
345
|
+
actual = @backup.command
|
|
346
|
+
is expected, actual
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
def test_do_concurrent
|
|
350
|
+
t1 = t2 = nil
|
|
351
|
+
thread = @backup.do_concurrent {
|
|
352
|
+
Thread.pass
|
|
353
|
+
sleep 0.1
|
|
354
|
+
t1 = Time.now
|
|
355
|
+
}
|
|
356
|
+
t2 = Time.now
|
|
357
|
+
thread.join
|
|
358
|
+
assert_not_equal t1.to_f, t2.to_f
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
class TestActSiteBackup < Test::Unit::TestCase
|
|
364
|
+
include TestSession
|
|
365
|
+
|
|
366
|
+
def test_plg_tgz
|
|
367
|
+
ok_wi [:p, [:a, {:href=>'test.sitebackup'}, 'test.sitebackup']], '[[test.sitebackup]]'
|
|
368
|
+
ok_wi [:span, {:class=>'attribute'},
|
|
369
|
+
[:a, {:href=>'test.sitebackup'}, 'Site backup']], '{{sitebackup}}'
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
def test_ext_tgz
|
|
373
|
+
t_add_user
|
|
374
|
+
|
|
375
|
+
# Add a page
|
|
376
|
+
page = @site.create_new
|
|
377
|
+
page.store '* Test'
|
|
378
|
+
|
|
379
|
+
# Wait to make time-lag between archive and site data
|
|
380
|
+
sleep 1
|
|
381
|
+
|
|
382
|
+
# Create backup
|
|
383
|
+
res = session '/test/test.sitebackup'
|
|
384
|
+
ok_title 'starting'
|
|
385
|
+
|
|
386
|
+
res = session '/test/test.sitebackup'
|
|
387
|
+
ok_title 'Download archive'
|
|
388
|
+
|
|
389
|
+
res = session '/test/test.tgz'
|
|
390
|
+
ok_eq 'application/gzip', res['Content-Type']
|
|
391
|
+
|
|
392
|
+
# Compare with cache file
|
|
393
|
+
content = (@site.cache_path + "test.tgz").read
|
|
394
|
+
ok_eq(content, res.body)
|
|
395
|
+
|
|
396
|
+
# Wait to make time-lag between archive and site data
|
|
397
|
+
sleep 1
|
|
398
|
+
|
|
399
|
+
# Attach a file
|
|
400
|
+
res = session('POST /test/1.files') {|req|
|
|
401
|
+
req.query.update('content'=>t_make_content('t.txt', 't'))
|
|
402
|
+
}
|
|
403
|
+
ok_title('File attachment completed')
|
|
404
|
+
|
|
405
|
+
# Remake backup
|
|
406
|
+
res = session '/test/test.sitebackup'
|
|
407
|
+
ok_title 'starting'
|
|
408
|
+
|
|
409
|
+
# Download again
|
|
410
|
+
res = session '/test/test.tgz'
|
|
411
|
+
ok_eq 'application/gzip', res['Content-Type']
|
|
412
|
+
|
|
413
|
+
# Compare with cache file
|
|
414
|
+
content = (@site.cache_path + "test.tgz").read
|
|
415
|
+
ok_eq(content, res.body)
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
end
|
|
419
|
+
end
|
|
@@ -0,0 +1,118 @@
|
|
|
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
|
+
module Qwik
|
|
8
|
+
class Action
|
|
9
|
+
D_SiteLog = {
|
|
10
|
+
:dt => 'Show SiteLog',
|
|
11
|
+
:dd => 'You can see sitelog of this site.',
|
|
12
|
+
:dc => "* How to
|
|
13
|
+
[[.sitelog]]
|
|
14
|
+
Follow this link. [[.sitelog]]
|
|
15
|
+
"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
D_SiteLog_ja = {
|
|
19
|
+
:dt => '編集履歴',
|
|
20
|
+
:dd => 'いままでの編集履歴を見ることができます。',
|
|
21
|
+
:dc => "* 使い方
|
|
22
|
+
[[.sitelog]]
|
|
23
|
+
[[.sitelog]]を辿ってください。
|
|
24
|
+
"
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
# sitelog viewer
|
|
28
|
+
def plg_sitelog
|
|
29
|
+
dl = [:dl]
|
|
30
|
+
@site.sitelog.list.each {|k, v|
|
|
31
|
+
user, cmd, pagename = v
|
|
32
|
+
user = 'anonymous' if user.nil? || user.empty?
|
|
33
|
+
user = MailAddress.obfuscate(user) if ! user.empty?
|
|
34
|
+
dl << [:dt, "#{Time.at(k.to_i).ymdx} - #{user}"]
|
|
35
|
+
dl << [:dd, "#{cmd}: ", [:a, {:href=>"#{pagename}.html"}, pagename]]
|
|
36
|
+
}
|
|
37
|
+
return dl
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# sitelog viewer
|
|
41
|
+
def act_sitelog
|
|
42
|
+
return c_plain('SiteLog') {
|
|
43
|
+
[:div, {:class=>'day'},
|
|
44
|
+
[:div, {:class=>'section'}, plg_sitelog]]
|
|
45
|
+
}
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def c_time_str(time=nil)
|
|
49
|
+
time ||= @req.start_time
|
|
50
|
+
return sprintf('%.6f', time.to_i + time.usec/1000000.0)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def c_make_log(cmd, pagename=@req.base)
|
|
54
|
+
timestr = c_time_str
|
|
55
|
+
@site.log(timestr, @req.user, cmd, pagename)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
if $0 == __FILE__
|
|
61
|
+
require 'qwik/test-common'
|
|
62
|
+
$test = true
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
if defined?($test) && $test
|
|
66
|
+
class TestActSiteLog < Test::Unit::TestCase
|
|
67
|
+
include TestSession
|
|
68
|
+
|
|
69
|
+
def test_time_str
|
|
70
|
+
res = session
|
|
71
|
+
assert_match(/\d+\.\d{6}/, @action.c_time_str)
|
|
72
|
+
ok_eq('0.000000', @action.c_time_str)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_sitelog
|
|
76
|
+
t_add_user
|
|
77
|
+
|
|
78
|
+
# Create a page.
|
|
79
|
+
res = session('POST /test/.new?t=TestPage'){|req|
|
|
80
|
+
req.start_time += 1
|
|
81
|
+
}
|
|
82
|
+
ok_eq(',1.000000,user@e.com,create,TestPage
|
|
83
|
+
', @site['_SiteLog'].load)
|
|
84
|
+
|
|
85
|
+
# Save a page.
|
|
86
|
+
res = session('POST /test/TestPage.save?contents=t'){|req|
|
|
87
|
+
req.start_time += 2
|
|
88
|
+
}
|
|
89
|
+
ok_eq(',1.000000,user@e.com,create,TestPage
|
|
90
|
+
,2.000000,user@e.com,save,TestPage
|
|
91
|
+
', @site['_SiteLog'].load)
|
|
92
|
+
|
|
93
|
+
# Delete a page.
|
|
94
|
+
res = session('POST /test/TestPage.save?contents='){|req| # null content
|
|
95
|
+
req.start_time += 3
|
|
96
|
+
}
|
|
97
|
+
ok_eq(',1.000000,user@e.com,create,TestPage
|
|
98
|
+
,2.000000,user@e.com,save,TestPage
|
|
99
|
+
,3.000000,user@e.com,delete,TestPage
|
|
100
|
+
', @site['_SiteLog'].load)
|
|
101
|
+
|
|
102
|
+
# See the SiteLog.
|
|
103
|
+
page = @site.create_new
|
|
104
|
+
page.store('{{sitelog}}')
|
|
105
|
+
res = session('/test/1.html'){|req|
|
|
106
|
+
req.start_time += 4
|
|
107
|
+
}
|
|
108
|
+
div = @res.body.get_path("//div[@class='section']")
|
|
109
|
+
div = div.inside.remove_comment.get_single
|
|
110
|
+
ok_eq([:dd, 'create: ',
|
|
111
|
+
[:a, {:href=>'TestPage.html'}, 'TestPage']], div[2])
|
|
112
|
+
ok_eq([:dd, 'save: ',
|
|
113
|
+
[:a, {:href=>'TestPage.html'}, 'TestPage']], div[4])
|
|
114
|
+
ok_eq([:dd, 'delete: ',
|
|
115
|
+
[:a, {:href=>'TestPage.html'}, 'TestPage']], div[6])
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|