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,145 @@
|
|
|
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_PluginPassword = {
|
|
10
|
+
:dt => 'Set password plugin',
|
|
11
|
+
:dd => 'You can lock a page by a password.',
|
|
12
|
+
:dc => "* Example
|
|
13
|
+
{{password(\"a password string\")}}
|
|
14
|
+
You can lock your page by setting this password plugin.
|
|
15
|
+
|
|
16
|
+
'''Warning:''' There is no way to unlock the page.
|
|
17
|
+
If you forgot your password, you can not edit the page.
|
|
18
|
+
Please be careful.
|
|
19
|
+
"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
D_PluginPassword_ja = {
|
|
23
|
+
:dt => 'パスワード保護プラグイン',
|
|
24
|
+
:dd => 'ページをパスワードで保護することができます。',
|
|
25
|
+
:dc => "* 例
|
|
26
|
+
{{password(\"a password string\")}}
|
|
27
|
+
このようなプラグインをページに埋込むと、
|
|
28
|
+
そのページはパスワードで保護されます。
|
|
29
|
+
|
|
30
|
+
'''注意:''' 現在はまだパスワードを解除する方法を提供してません。
|
|
31
|
+
もしパスワードを忘れた場合は、ページを編集できなくなりますので、
|
|
32
|
+
気をつけてください。
|
|
33
|
+
"
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
def plg_password(pass=nil)
|
|
37
|
+
# password plugin is parsed in act-edit.rb
|
|
38
|
+
return nil
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# These methods will be used in ext_save
|
|
43
|
+
class Page
|
|
44
|
+
def get_password
|
|
45
|
+
return Page.get_password(self.load)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.get_password(str)
|
|
49
|
+
return $1 if str && /\{\{password\((.+)\)\}\}/ =~ str
|
|
50
|
+
return nil
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def self.embed_password(content)
|
|
54
|
+
new_pass = get_password(content)
|
|
55
|
+
return content if new_pass.nil? # Nothing to embed.
|
|
56
|
+
new_content = content.sub(/\{\{password\((.+)\)\}\}/) {
|
|
57
|
+
"{{password(#{$1.md5hex})}}"
|
|
58
|
+
}
|
|
59
|
+
return new_content
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def match_password?(v)
|
|
63
|
+
old_pass_md5 = self.get_password
|
|
64
|
+
return true if old_pass_md5.nil? # No password. Go on.
|
|
65
|
+
new_pass_md5 = Page.get_password(v) # assume already become md5
|
|
66
|
+
return false if new_pass_md5.nil? # Can not go if there is no pass
|
|
67
|
+
return false if new_pass_md5 != old_pass_md5 # should be correct pass
|
|
68
|
+
return true # Go on.
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
if $0 == __FILE__
|
|
74
|
+
require 'qwik/test-common'
|
|
75
|
+
$test = true
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
if defined?($test) && $test
|
|
79
|
+
class TestActPassword < Test::Unit::TestCase
|
|
80
|
+
include TestSession
|
|
81
|
+
|
|
82
|
+
def test_password
|
|
83
|
+
@pages = Qwik::Pages.new(@config, @dir)
|
|
84
|
+
page = @pages.create('1')
|
|
85
|
+
page.store('test2')
|
|
86
|
+
|
|
87
|
+
eq 'test2', page.load
|
|
88
|
+
# The text is rewrite to the text with embeded password.
|
|
89
|
+
text = Qwik::Page.embed_password('take1 {{password(testpassword)}}')
|
|
90
|
+
eq "take1 {{password(e16b2ab8d12314bf4efbd6203906ea6c)}}", text
|
|
91
|
+
page.store(text)
|
|
92
|
+
|
|
93
|
+
eq "e16b2ab8d12314bf4efbd6203906ea6c", page.get_password
|
|
94
|
+
|
|
95
|
+
take2 = Qwik::Page.embed_password('take2 {{password(notcorrectpassword)}}')
|
|
96
|
+
eq false, page.match_password?(take2) # NG
|
|
97
|
+
|
|
98
|
+
take3 = Qwik::Page.embed_password('take3 {{password(testpassword)}}')
|
|
99
|
+
eq true, page.match_password?(take3)
|
|
100
|
+
page.store(take3) # OK
|
|
101
|
+
assert_match(/take3/, page.load)
|
|
102
|
+
eq "take3 {{password(e16b2ab8d12314bf4efbd6203906ea6c)}}", page.load
|
|
103
|
+
|
|
104
|
+
eq "e16b2ab8d12314bf4efbd6203906ea6c", page.get_password
|
|
105
|
+
eq 'testpassword'.md5hex, page.get_password
|
|
106
|
+
@pages.erase_all
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def test_usecase_password
|
|
110
|
+
t_add_user
|
|
111
|
+
|
|
112
|
+
page = @site.create_new
|
|
113
|
+
page.store("test\n")
|
|
114
|
+
res = session('/test/1.html')
|
|
115
|
+
ok_in(['test'], "//div[@class='section']/p")
|
|
116
|
+
|
|
117
|
+
res = session('/test/1.edit')
|
|
118
|
+
assert_text("test\n", 'textarea')
|
|
119
|
+
|
|
120
|
+
res = session('/test/1.save?contents=test%0A{{password(test)}}%0A')
|
|
121
|
+
ok_title('Page is saved.')
|
|
122
|
+
|
|
123
|
+
res = session('/test/1.edit')
|
|
124
|
+
assert_text("test\n{{password(098f6bcd4621d373cade4e832627b4f6)}}\n",
|
|
125
|
+
'textarea')
|
|
126
|
+
|
|
127
|
+
res = session('/test/1.save?contents=t2%0A{{password(test)}}%0A')
|
|
128
|
+
ok_title('Page is saved.')
|
|
129
|
+
|
|
130
|
+
res = session('/test/1.edit')
|
|
131
|
+
assert_text("t2\n{{password(098f6bcd4621d373cade4e832627b4f6)}}\n",
|
|
132
|
+
'textarea')
|
|
133
|
+
|
|
134
|
+
res = session('/test/1.save?contents=t3%0A{{password(nomatch)}}%0A')
|
|
135
|
+
ok_in([[:tt, '{{password('], 'Password', [:tt, ')}}']],
|
|
136
|
+
"//div[@class='section']/p")
|
|
137
|
+
assert_text("t3\n{{password(nomatch)}}\n", 'textarea')
|
|
138
|
+
|
|
139
|
+
res = session('/test/1.save?contents=t3%0A{{password(test)}}%0A')
|
|
140
|
+
ok_title('Page is saved.')
|
|
141
|
+
eq "t3\n{{password(098f6bcd4621d373cade4e832627b4f6)}}\n",
|
|
142
|
+
page.load
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# -*- coding: shift_jis -*-
|
|
2
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
3
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
4
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
5
|
+
|
|
6
|
+
$LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
|
|
7
|
+
require 'qwik/site-plan'
|
|
8
|
+
|
|
9
|
+
module Qwik
|
|
10
|
+
class Action
|
|
11
|
+
D_PluginPlan = {
|
|
12
|
+
:dt => 'Show plan plugin',
|
|
13
|
+
:dd => 'You can show the plan of this group.',
|
|
14
|
+
:dc => "* Example
|
|
15
|
+
{{plan}}
|
|
16
|
+
{{plan}}
|
|
17
|
+
You can see plans of this group.
|
|
18
|
+
If there are no plan for this group, you see nothing.
|
|
19
|
+
* How to create new plan.
|
|
20
|
+
Follow '''Create a new plan''' link and create a new plan page.
|
|
21
|
+
You'll see plans on sidemenu.
|
|
22
|
+
'''Notice''' We changed the format of the date of pages.
|
|
23
|
+
You can not use tag notation to specify date now.
|
|
24
|
+
"
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
D_PluginPlan_ja = {
|
|
28
|
+
:dt => '予定表示プラグイン',
|
|
29
|
+
:dd => '予定を表示します。',
|
|
30
|
+
:dc => '* 例
|
|
31
|
+
{{plan}}
|
|
32
|
+
{{plan}}
|
|
33
|
+
もし予定が登録されている場合は、このプラグインで表示されます。
|
|
34
|
+
* 予定の登録方法
|
|
35
|
+
一番下の「新しい予定を登録する」というリンクをたどって、
|
|
36
|
+
新しい予定ページを作ってください。
|
|
37
|
+
サイドメニューに予定が表示されるようになります。
|
|
38
|
+
過去の予定は表示されません。また一年以上先の予定も表示されません。
|
|
39
|
+
一ヶ月先程度の予定を登録してみてください。
|
|
40
|
+
|
|
41
|
+
\'\'\'注意\'\'\' 以前はタグ記法による日付指定を採用していましたが、
|
|
42
|
+
新しいバージョンから上記の新規予定ページ方式に切り替えました。
|
|
43
|
+
御了承下さい。
|
|
44
|
+
'
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
def plg_side_plan
|
|
48
|
+
div = [:div, [:h2, _('Plan')]]
|
|
49
|
+
pages = @site.get_pages_with_date
|
|
50
|
+
div << plan_make_html(pages) if ! pages.empty?
|
|
51
|
+
div << [:p, plg_new_plan]
|
|
52
|
+
return div
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def plg_plan
|
|
56
|
+
div = [:div, [:h2, _('Plan')]]
|
|
57
|
+
pages = @site.get_pages_with_date
|
|
58
|
+
return if pages.empty?
|
|
59
|
+
div << plan_make_html(pages)
|
|
60
|
+
div << [:p, plg_new_plan]
|
|
61
|
+
return div
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def plg_new_plan
|
|
65
|
+
return [:a, {:href=>'.plan'}, _('Create a new plan')]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def plan_make_html(pages)
|
|
69
|
+
day = 60 * 60 * 24
|
|
70
|
+
nowi = @req.start_time.to_i
|
|
71
|
+
pages = pages.select {|pagekey, datei|
|
|
72
|
+
page = @site[pagekey]
|
|
73
|
+
diff = datei - nowi
|
|
74
|
+
-day < diff
|
|
75
|
+
}
|
|
76
|
+
return nil if pages.empty?
|
|
77
|
+
|
|
78
|
+
ul = [:ul]
|
|
79
|
+
pages.sort_by {|pagekey, datei|
|
|
80
|
+
datei
|
|
81
|
+
}.each {|pagekey, datei|
|
|
82
|
+
page = @site[pagekey]
|
|
83
|
+
title = page.get_title
|
|
84
|
+
date = Time.at(datei)
|
|
85
|
+
now = Time.at(nowi)
|
|
86
|
+
date_abbr = Time.date_abbr(now, date)
|
|
87
|
+
em_title = Time.date_emphasis(now, date, title)
|
|
88
|
+
ul << [:li, "#{date_abbr} ", [:a, {:href=>"#{pagekey}.html"}, em_title]]
|
|
89
|
+
}
|
|
90
|
+
return ul
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Make a new plan.
|
|
94
|
+
def act_plan
|
|
95
|
+
date = @req.query['date']
|
|
96
|
+
title = @req.query['title']
|
|
97
|
+
if date.nil? || date.empty? || title.nil? || title.empty?
|
|
98
|
+
date_attr = {:name=>'date', :class => 'focus'}
|
|
99
|
+
date_attr[:value] = @req.start_time.ymd_s
|
|
100
|
+
date_attr[:value] = date if date && ! date.empty?
|
|
101
|
+
title_attr = {:name=>'title'}
|
|
102
|
+
title_attr[:value] = 'Plan'
|
|
103
|
+
title_attr[:value] = title if title && ! title.empty?
|
|
104
|
+
form = [:form, {:action=>'.plan', :method=>'POST'},
|
|
105
|
+
[:dl,
|
|
106
|
+
[:dt, _('Date')],
|
|
107
|
+
[:dd, [:input, date_attr]],
|
|
108
|
+
[:dt, _('Title')],
|
|
109
|
+
[:dd, [:input, title_attr]]],
|
|
110
|
+
[:input, {:type=>'submit', :value=>_('Create a new plan')}]]
|
|
111
|
+
return c_notice(_('New plan')) {
|
|
112
|
+
[[:h2, _('New plan')],
|
|
113
|
+
[:div, {:class=>'plan form'},
|
|
114
|
+
form]]
|
|
115
|
+
}
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Create a new plan
|
|
119
|
+
#page = @site.create_new # CREATE
|
|
120
|
+
|
|
121
|
+
dateobj = Time.parse(date)
|
|
122
|
+
|
|
123
|
+
pagename = "plan_#{dateobj.ymd_s}"
|
|
124
|
+
page = @site[pagename]
|
|
125
|
+
msg = _('Already Exists.')
|
|
126
|
+
if page.nil?
|
|
127
|
+
msg = _('Created.')
|
|
128
|
+
page = @site.create(pagename) # CREATE
|
|
129
|
+
page.store("* #{title}\n") # Specify title.
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
url = "#{page.key}.edit"
|
|
133
|
+
return c_notice(_('New plan'), url, 201) { # 201, Created
|
|
134
|
+
[[:h2, msg],
|
|
135
|
+
[:p, [:a, {:href=>url}, _('Edit new page')]]]
|
|
136
|
+
}
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
if $0 == __FILE__
|
|
142
|
+
require 'qwik/test-common'
|
|
143
|
+
$test = true
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
if defined?($test) && $test
|
|
147
|
+
class TestActPlan < Test::Unit::TestCase
|
|
148
|
+
include TestSession
|
|
149
|
+
|
|
150
|
+
def create_plan_pages(site)
|
|
151
|
+
page = site.create 'plan_19700101'
|
|
152
|
+
page.store("* t")
|
|
153
|
+
page = site.create 'plan_19700115'
|
|
154
|
+
page.store("* t")
|
|
155
|
+
page = site.create 'plan_19700201'
|
|
156
|
+
page.store("* t")
|
|
157
|
+
page = site.create 'plan_19710101'
|
|
158
|
+
page.store("* t")
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def test_plg_plan
|
|
162
|
+
ok_wi([], '{{plan}}')
|
|
163
|
+
|
|
164
|
+
create_plan_pages(@site)
|
|
165
|
+
|
|
166
|
+
ok_wi [:div,
|
|
167
|
+
[:h2, "Plan"],
|
|
168
|
+
[:ul,
|
|
169
|
+
[:li, "01-01 ", [:a, {:href=>"plan_19700101.html"}, [:strong, "t"]]],
|
|
170
|
+
[:li, "01-15 ", [:a, {:href=>"plan_19700115.html"}, [:em, "t"]]],
|
|
171
|
+
[:li, "02-01 ", [:a, {:href=>"plan_19700201.html"},
|
|
172
|
+
[:span, {:class=>"future"}, "t"]]],
|
|
173
|
+
[:li, "1971-01-01 ", [:a, {:href=>"plan_19710101.html"},
|
|
174
|
+
[:span, {:class=>"future"}, "t"]]]],
|
|
175
|
+
[:p, [:a, {:href=>".plan"}, "Create a new plan"]]],
|
|
176
|
+
'{{plan}}'
|
|
177
|
+
|
|
178
|
+
# $KCODE = 'n'
|
|
179
|
+
eq "\227\\\222\350", '予定'
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def ok_date(num, date)
|
|
183
|
+
assert_equal(num, Time.parse(date).to_i + Time::now.utc_offset)
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def test_parsedate
|
|
187
|
+
ok_date 0, '1970-01-01'
|
|
188
|
+
ok_date 0, '19700101'
|
|
189
|
+
ok_date 0, '1970/01/01'
|
|
190
|
+
ok_date 0, '1970/1/1'
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def test_plan
|
|
194
|
+
t_add_user
|
|
195
|
+
|
|
196
|
+
ok_wi [:div, [:h2, "Plan"], [:p, [:a, {:href=>".plan"},
|
|
197
|
+
"Create a new plan"]]], '{{side_plan}}'
|
|
198
|
+
|
|
199
|
+
# Go create a new plan page.
|
|
200
|
+
res = session '/test/.plan'
|
|
201
|
+
ok_in ["New plan"], '//h1'
|
|
202
|
+
ok_attr({:action=>".plan", :method=>"POST"}, '//form')
|
|
203
|
+
ok_attr({:value=>"19700101", :class=>"focus", :name=>"date"}, '//input')
|
|
204
|
+
ok_attr({:value=>"Plan", :name=>"title"}, '//input[2]')
|
|
205
|
+
|
|
206
|
+
page = @site.create_new
|
|
207
|
+
page.store('t1')
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# -*- coding: shift_jis -*-
|
|
2
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
3
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
4
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
5
|
+
|
|
6
|
+
$LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
|
|
7
|
+
|
|
8
|
+
require 'open3'
|
|
9
|
+
|
|
10
|
+
module Qwik
|
|
11
|
+
class Action
|
|
12
|
+
D_PluginPovray = {
|
|
13
|
+
:dt => 'PovRay plugin',
|
|
14
|
+
:dd => 'You can embed ray tracing rendered 3D CG.',
|
|
15
|
+
:dc => "* Example
|
|
16
|
+
{{povray
|
|
17
|
+
sphere { <0, 0, 9>, 3
|
|
18
|
+
finish { ambient 0.2 diffuse 0.8 phong 1 }
|
|
19
|
+
pigment { red 1 }
|
|
20
|
+
}
|
|
21
|
+
light_source { <-9, 9, 0> rgb 1 }
|
|
22
|
+
}}
|
|
23
|
+
{{povray
|
|
24
|
+
sphere { <0, 0, 9>, 3
|
|
25
|
+
finish { ambient 0.2 diffuse 0.8 phong 1 }
|
|
26
|
+
pigment { red 1 }
|
|
27
|
+
}
|
|
28
|
+
light_source { <-9, 9, 0> rgb 1 }
|
|
29
|
+
}}
|
|
30
|
+
- I recommend [[POVRay Short Code Contest, Round 3|http://astronomy.swin.edu.au/~pbourke/raytracing/scc3/final/]] for samples of POV-Ray source code.
|
|
31
|
+
"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
D_PluginPovray_ja = {
|
|
35
|
+
:dt => 'PovRayプラグイン',
|
|
36
|
+
:dd => 'レイトレーシングによる3D CGを埋め込めます。',
|
|
37
|
+
:dc => '* 例
|
|
38
|
+
{{povray
|
|
39
|
+
sphere { <0, 0, 9>, 3
|
|
40
|
+
finish { ambient 0.2 diffuse 0.8 phong 1 }
|
|
41
|
+
pigment { red 1 }
|
|
42
|
+
}
|
|
43
|
+
light_source { <-9, 9, 0> rgb 1 }
|
|
44
|
+
}}
|
|
45
|
+
{{povray
|
|
46
|
+
sphere { <0, 0, 9>, 3
|
|
47
|
+
finish { ambient 0.2 diffuse 0.8 phong 1 }
|
|
48
|
+
pigment { red 1 }
|
|
49
|
+
}
|
|
50
|
+
light_source { <-9, 9, 0> rgb 1 }
|
|
51
|
+
}}
|
|
52
|
+
- [[POVRay Short Code Contest, Round 3|http://astronomy.swin.edu.au/~pbourke/raytracing/scc3/final/]]などのサンプルを見てみると面白いかもしれません。
|
|
53
|
+
'
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
MIN_COLS = 50
|
|
57
|
+
MIN_ROWS = 7
|
|
58
|
+
MAX_COLS = 100
|
|
59
|
+
MAX_ROWS = 50
|
|
60
|
+
def plg_povray
|
|
61
|
+
if ! povray_exist?
|
|
62
|
+
return [:div, {:class=>'povray'},
|
|
63
|
+
[:p, 'No povray command.']
|
|
64
|
+
]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Generate a povray file.
|
|
68
|
+
content = ''
|
|
69
|
+
content = yield if block_given?
|
|
70
|
+
|
|
71
|
+
pngfilename, stapath = povray_generate(content)
|
|
72
|
+
|
|
73
|
+
# @povray_num is global for an action.
|
|
74
|
+
@povray_num = 0 if ! defined?(@povray_num)
|
|
75
|
+
@povray_num += 1
|
|
76
|
+
action = "#{@req.base}.#{@povray_num}.povray"
|
|
77
|
+
|
|
78
|
+
cols = 0
|
|
79
|
+
rows = 1 # Add an empty line.
|
|
80
|
+
content.each_line {|line|
|
|
81
|
+
len = line.chomp.length
|
|
82
|
+
cols = len if cols < len
|
|
83
|
+
rows += 1
|
|
84
|
+
}
|
|
85
|
+
cols = MIN_COLS if cols < MIN_COLS
|
|
86
|
+
rows = MIN_ROWS if rows < MIN_ROWS
|
|
87
|
+
cols = MAX_COLS if MAX_COLS < cols
|
|
88
|
+
rows = MAX_ROWS if MAX_ROWS < rows
|
|
89
|
+
|
|
90
|
+
status = [:div, {:class=>'status'}]
|
|
91
|
+
begin
|
|
92
|
+
sta = stapath.read
|
|
93
|
+
st, et = sta.to_a
|
|
94
|
+
status << [:p, 'Start : ', Time.at(st.to_i).ymdax] if st
|
|
95
|
+
status << [:p, 'End : ', Time.at(et.to_i).ymdax] if et
|
|
96
|
+
status << [:p, 'Past : ', Time.at(et.to_i).ymdax] if et
|
|
97
|
+
rescue
|
|
98
|
+
status << [:p, 'The rendering is started.']
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
div = [:div, {:class=>'povray'},
|
|
102
|
+
[:img, {:src=>"#{@req.base}.files/#{pngfilename}"}],
|
|
103
|
+
[:br],
|
|
104
|
+
[:form, {:method=>'POST', :action=>action},
|
|
105
|
+
[:textarea, {:name=>'t', :cols=>cols, :rows=>rows}, content],
|
|
106
|
+
[:br],
|
|
107
|
+
[:input, {:type=>'submit', :value=>_('Update')}]],
|
|
108
|
+
[:br],
|
|
109
|
+
status]
|
|
110
|
+
|
|
111
|
+
return div
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
POVRAY_CMD = '/usr/bin/povray'
|
|
115
|
+
# POVRAY_CMD = '/usr/local/bin/povray'
|
|
116
|
+
MV_CMD = '/bin/mv'
|
|
117
|
+
def povray_exist?
|
|
118
|
+
return POVRAY_CMD.path.exist?
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def povray_generate(content)
|
|
122
|
+
files = @site.files(@req.base)
|
|
123
|
+
base = content.md5hex
|
|
124
|
+
povfilename = "#{base}.pov"
|
|
125
|
+
pngfilename = "#{base}.png"
|
|
126
|
+
|
|
127
|
+
povpath = files.path(povfilename)
|
|
128
|
+
pngpath = files.path(pngfilename)
|
|
129
|
+
pngtmppath = "/tmp/#{pngfilename}"
|
|
130
|
+
|
|
131
|
+
msgpath = files.path("#{base}.povmsg").path
|
|
132
|
+
stapath = files.path("#{base}.povsta").path
|
|
133
|
+
|
|
134
|
+
return pngfilename, stapath if stapath.exist? # Already started.
|
|
135
|
+
|
|
136
|
+
files.overwrite(povfilename, content)
|
|
137
|
+
|
|
138
|
+
# Render it background.
|
|
139
|
+
t = Thread.new {
|
|
140
|
+
cmd = "#{POVRAY_CMD} #{povpath} -O#{pngtmppath}"
|
|
141
|
+
#system cmd
|
|
142
|
+
stapath.open('wb') {|sta|
|
|
143
|
+
sta.puts Time.now.to_i.to_s
|
|
144
|
+
msgpath.open('wb') {|msg|
|
|
145
|
+
Open3.popen3(cmd) {|stdin, stdout, stderr|
|
|
146
|
+
while line = stderr.gets
|
|
147
|
+
msg.print line
|
|
148
|
+
end
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
sta.puts Time.now.to_i.to_s
|
|
152
|
+
}
|
|
153
|
+
system "#{MV_CMD} #{pngtmppath} #{pngpath}"
|
|
154
|
+
}
|
|
155
|
+
return pngfilename, stapath
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def ext_povray
|
|
159
|
+
c_require_post
|
|
160
|
+
c_require_page_exist
|
|
161
|
+
|
|
162
|
+
num = @req.ext_args[0].to_i
|
|
163
|
+
return c_nerror(_('Error')) if num < 1
|
|
164
|
+
|
|
165
|
+
text = @req.query['t']
|
|
166
|
+
return c_nerror(_('No text.')) if text.nil? || text.empty?
|
|
167
|
+
text = text.normalize_newline
|
|
168
|
+
|
|
169
|
+
begin
|
|
170
|
+
plugin_edit(:povray, num) {|content|
|
|
171
|
+
text
|
|
172
|
+
}
|
|
173
|
+
rescue NoCorrespondingPlugin
|
|
174
|
+
return c_nerror(_('Failed'))
|
|
175
|
+
rescue PageCollisionError
|
|
176
|
+
return mcomment_error(_('Page collision detected.'))
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
c_make_log('povray') # TEXTAREA
|
|
180
|
+
|
|
181
|
+
url = "#{@req.base}.html"
|
|
182
|
+
return c_notice(_('Edit text done.'), url){
|
|
183
|
+
[[:h2, _('Edit text done.')],
|
|
184
|
+
[:p, [:a, {:href=>url}, _('Go back')]]]
|
|
185
|
+
}
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
if $0 == __FILE__
|
|
192
|
+
require 'qwik/test-common'
|
|
193
|
+
$test = true
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
if defined?($test) && $test
|
|
197
|
+
class TestActPovray < Test::Unit::TestCase
|
|
198
|
+
include TestSession
|
|
199
|
+
|
|
200
|
+
def test_all
|
|
201
|
+
t_add_user
|
|
202
|
+
|
|
203
|
+
page = @site.create_new
|
|
204
|
+
page.store '{{povray
|
|
205
|
+
sphere { <0, 0, 9>, 3
|
|
206
|
+
finish { ambient 0.2 diffuse 0.8 phong 1 }
|
|
207
|
+
pigment { red 1 }
|
|
208
|
+
}
|
|
209
|
+
light_source { <-9, 9, 0> rgb 1 }
|
|
210
|
+
}}'
|
|
211
|
+
|
|
212
|
+
res = session
|
|
213
|
+
|
|
214
|
+
return if ! @action.povray_exist?
|
|
215
|
+
|
|
216
|
+
res = session '/test/1.html'
|
|
217
|
+
ok_xp [:div, {:class=>"povray"},
|
|
218
|
+
[:img, {:src=>"1.files/4c5c412765d503e22d83bd5fdd4a1c80.png"}], [:br],
|
|
219
|
+
[:form, {:method=>"POST", :action=>"1.1.povray"},
|
|
220
|
+
[:textarea, {:name=>"t", :cols=>50, :rows=>7},
|
|
221
|
+
"sphere { <0, 0, 9>, 3\nfinish { ambient 0.2 diffuse 0.8 phong 1 }\npigment { red 1 }\n}\nlight_source { <-9, 9, 0> rgb 1 }\n"], [:br],
|
|
222
|
+
[:input, {:type=>"submit", :value=>"Update"}]], [:br],
|
|
223
|
+
[:div, {:class=>"status"}]],
|
|
224
|
+
"//div[@class='povray']"
|
|
225
|
+
|
|
226
|
+
files = @site.files('1')
|
|
227
|
+
ok files.exist?('4c5c412765d503e22d83bd5fdd4a1c80.pov')
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|