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.
Files changed (335) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/CHANGES +3 -0
  4. data/COPYING +340 -0
  5. data/Gemfile +3 -0
  6. data/README.md +10 -0
  7. data/Rakefile +10 -0
  8. data/TextFormattingRules +137 -0
  9. data/TextFormattingRules.ja +143 -0
  10. data/bin/qwikdoc +34 -0
  11. data/lib/qwik_doc.rb +15 -0
  12. data/lib/qwik_doc/hack.rb +184 -0
  13. data/qwikdoc.gemspec +26 -0
  14. data/spec/qwik_doc_spec.rb +305 -0
  15. data/spec/spec_helper.rb +12 -0
  16. data/vendor/qwik/Makefile +63 -0
  17. data/vendor/qwik/Rakefile +17 -0
  18. data/vendor/qwik/act-aa.rb +83 -0
  19. data/vendor/qwik/act-archive.rb +386 -0
  20. data/vendor/qwik/act-attach.rb +304 -0
  21. data/vendor/qwik/act-backup.rb +236 -0
  22. data/vendor/qwik/act-basic.rb +325 -0
  23. data/vendor/qwik/act-book.rb +161 -0
  24. data/vendor/qwik/act-calc.rb +371 -0
  25. data/vendor/qwik/act-charset.rb +251 -0
  26. data/vendor/qwik/act-christel.rb +112 -0
  27. data/vendor/qwik/act-chronology.rb +149 -0
  28. data/vendor/qwik/act-code.rb +155 -0
  29. data/vendor/qwik/act-comment.rb +554 -0
  30. data/vendor/qwik/act-config.rb +49 -0
  31. data/vendor/qwik/act-counter.rb +125 -0
  32. data/vendor/qwik/act-day.rb +96 -0
  33. data/vendor/qwik/act-describe.rb +135 -0
  34. data/vendor/qwik/act-diary.rb +109 -0
  35. data/vendor/qwik/act-edit.rb +317 -0
  36. data/vendor/qwik/act-embed-html.rb +296 -0
  37. data/vendor/qwik/act-emode.rb +150 -0
  38. data/vendor/qwik/act-event.rb +187 -0
  39. data/vendor/qwik/act-file.rb +303 -0
  40. data/vendor/qwik/act-files.rb +771 -0
  41. data/vendor/qwik/act-getpass.rb +295 -0
  42. data/vendor/qwik/act-history.rb +136 -0
  43. data/vendor/qwik/act-html.rb +204 -0
  44. data/vendor/qwik/act-httpauth.rb +147 -0
  45. data/vendor/qwik/act-include.rb +142 -0
  46. data/vendor/qwik/act-interwiki.rb +189 -0
  47. data/vendor/qwik/act-isearch.rb +109 -0
  48. data/vendor/qwik/act-keywords.rb +137 -0
  49. data/vendor/qwik/act-lang.rb +81 -0
  50. data/vendor/qwik/act-license.rb +63 -0
  51. data/vendor/qwik/act-list.rb +287 -0
  52. data/vendor/qwik/act-login.rb +410 -0
  53. data/vendor/qwik/act-logout.rb +60 -0
  54. data/vendor/qwik/act-mail.rb +159 -0
  55. data/vendor/qwik/act-map.rb +292 -0
  56. data/vendor/qwik/act-md5.rb +42 -0
  57. data/vendor/qwik/act-mdlb.rb +741 -0
  58. data/vendor/qwik/act-media.rb +416 -0
  59. data/vendor/qwik/act-member.rb +157 -0
  60. data/vendor/qwik/act-menu.rb +142 -0
  61. data/vendor/qwik/act-metadata.rb +323 -0
  62. data/vendor/qwik/act-mlsubmitform.rb +49 -0
  63. data/vendor/qwik/act-monitor.rb +167 -0
  64. data/vendor/qwik/act-new.rb +418 -0
  65. data/vendor/qwik/act-pagelist.rb +248 -0
  66. data/vendor/qwik/act-password.rb +145 -0
  67. data/vendor/qwik/act-plan.rb +210 -0
  68. data/vendor/qwik/act-povray.rb +230 -0
  69. data/vendor/qwik/act-presen.rb +380 -0
  70. data/vendor/qwik/act-redirect.rb +133 -0
  71. data/vendor/qwik/act-ring.rb +1071 -0
  72. data/vendor/qwik/act-rrefs.rb +255 -0
  73. data/vendor/qwik/act-ruby.rb +116 -0
  74. data/vendor/qwik/act-sample.rb +170 -0
  75. data/vendor/qwik/act-save.rb +295 -0
  76. data/vendor/qwik/act-schedule.rb +374 -0
  77. data/vendor/qwik/act-search.rb +180 -0
  78. data/vendor/qwik/act-searchwords.rb +51 -0
  79. data/vendor/qwik/act-sendpass.rb +83 -0
  80. data/vendor/qwik/act-site.rb +89 -0
  81. data/vendor/qwik/act-sitebackup.rb +419 -0
  82. data/vendor/qwik/act-sitelog.rb +118 -0
  83. data/vendor/qwik/act-smil.rb +299 -0
  84. data/vendor/qwik/act-status.rb +220 -0
  85. data/vendor/qwik/act-style.rb +608 -0
  86. data/vendor/qwik/act-table.rb +263 -0
  87. data/vendor/qwik/act-tableform.rb +241 -0
  88. data/vendor/qwik/act-tag.rb +103 -0
  89. data/vendor/qwik/act-text.rb +70 -0
  90. data/vendor/qwik/act-textarea.rb +164 -0
  91. data/vendor/qwik/act-theme.rb +346 -0
  92. data/vendor/qwik/act-toc.rb +112 -0
  93. data/vendor/qwik/act-typekey.rb +198 -0
  94. data/vendor/qwik/act-under-const.rb +94 -0
  95. data/vendor/qwik/act-webservice.rb +321 -0
  96. data/vendor/qwik/act-wema.rb +558 -0
  97. data/vendor/qwik/act-wysiwyg.rb +238 -0
  98. data/vendor/qwik/action.rb +325 -0
  99. data/vendor/qwik/autoreload.rb +98 -0
  100. data/vendor/qwik/bench-bench.rb +28 -0
  101. data/vendor/qwik/bench-emode.rb +47 -0
  102. data/vendor/qwik/bench-format-xml.rb +70 -0
  103. data/vendor/qwik/bench-large-table.rb +62 -0
  104. data/vendor/qwik/bench-md5.rb +14 -0
  105. data/vendor/qwik/bench-module-session.rb +19 -0
  106. data/vendor/qwik/bench-page.rb +50 -0
  107. data/vendor/qwik/bench-s-md5.rb +28 -0
  108. data/vendor/qwik/bench-session.rb +25 -0
  109. data/vendor/qwik/bench-textformat.rb +31 -0
  110. data/vendor/qwik/catalog-factory.rb +91 -0
  111. data/vendor/qwik/catalog-ja.rb +479 -0
  112. data/vendor/qwik/catalog-ml-ja.rb +145 -0
  113. data/vendor/qwik/check-act-monitor.rb +112 -0
  114. data/vendor/qwik/check-act-monitor2.rb +46 -0
  115. data/vendor/qwik/check-act-theme.rb +27 -0
  116. data/vendor/qwik/check-event.rb +112 -0
  117. data/vendor/qwik/check-event2.rb +55 -0
  118. data/vendor/qwik/check-htree-rexml.rb +77 -0
  119. data/vendor/qwik/check-htree.rb +51 -0
  120. data/vendor/qwik/check-libxml.rb +135 -0
  121. data/vendor/qwik/check-many-pages.rb +47 -0
  122. data/vendor/qwik/check-monitor.rb +33 -0
  123. data/vendor/qwik/check-observer.rb +67 -0
  124. data/vendor/qwik/check-server.rb +61 -0
  125. data/vendor/qwik/check-uuencode.rb +33 -0
  126. data/vendor/qwik/check-webdav.rb +65 -0
  127. data/vendor/qwik/check-xml-xpath.rb +27 -0
  128. data/vendor/qwik/common-backtrace.rb +94 -0
  129. data/vendor/qwik/common-basic.rb +111 -0
  130. data/vendor/qwik/common-condition.rb +142 -0
  131. data/vendor/qwik/common-error.rb +48 -0
  132. data/vendor/qwik/common-gettext.rb +50 -0
  133. data/vendor/qwik/common-javascript.rb +45 -0
  134. data/vendor/qwik/common-notice.rb +132 -0
  135. data/vendor/qwik/common-plain.rb +105 -0
  136. data/vendor/qwik/common-plugin.rb +111 -0
  137. data/vendor/qwik/common-res.rb +76 -0
  138. data/vendor/qwik/common-resolve.rb +92 -0
  139. data/vendor/qwik/common-send.rb +171 -0
  140. data/vendor/qwik/common-session.rb +139 -0
  141. data/vendor/qwik/common-surface.rb +261 -0
  142. data/vendor/qwik/common-url.rb +90 -0
  143. data/vendor/qwik/compat/Makefile +12 -0
  144. data/vendor/qwik/compat/add_load_path.rb +1 -0
  145. data/vendor/qwik/config.rb +299 -0
  146. data/vendor/qwik/db-b-backup.rb +142 -0
  147. data/vendor/qwik/db-backup.rb +184 -0
  148. data/vendor/qwik/db-berkeley.rb +306 -0
  149. data/vendor/qwik/db-filesystem.rb +305 -0
  150. data/vendor/qwik/db-indexer.rb +154 -0
  151. data/vendor/qwik/db-searchwords.rb +238 -0
  152. data/vendor/qwik/description-ja.rb +267 -0
  153. data/vendor/qwik/description.rb +256 -0
  154. data/vendor/qwik/dev-add-copyright.rb +23 -0
  155. data/vendor/qwik/dev-backup.rb +24 -0
  156. data/vendor/qwik/dev-bench.rb +175 -0
  157. data/vendor/qwik/dev-calctime.rb +52 -0
  158. data/vendor/qwik/dev-css-compressor.rb +60 -0
  159. data/vendor/qwik/dev-extract-catalog.rb +102 -0
  160. data/vendor/qwik/dev-js-compressor.rb +73 -0
  161. data/vendor/qwik/dev-release.rb +235 -0
  162. data/vendor/qwik/dev-replace.rb +353 -0
  163. data/vendor/qwik/dev-sendmail.rb +25 -0
  164. data/vendor/qwik/farm.rb +283 -0
  165. data/vendor/qwik/gettext.rb +56 -0
  166. data/vendor/qwik/group-cond.rb +157 -0
  167. data/vendor/qwik/group-config.rb +247 -0
  168. data/vendor/qwik/group-confirm.rb +147 -0
  169. data/vendor/qwik/group-db.rb +326 -0
  170. data/vendor/qwik/group-mail.rb +195 -0
  171. data/vendor/qwik/group-member.rb +307 -0
  172. data/vendor/qwik/group-sendmail.rb +231 -0
  173. data/vendor/qwik/group-site.rb +374 -0
  174. data/vendor/qwik/group-sweep.rb +63 -0
  175. data/vendor/qwik/group.rb +157 -0
  176. data/vendor/qwik/helper.rb +6 -0
  177. data/vendor/qwik/html-generator.rb +104 -0
  178. data/vendor/qwik/html-to-wabisabi.rb +149 -0
  179. data/vendor/qwik/htree-diff.rb +87 -0
  180. data/vendor/qwik/htree-format-xml.rb +57 -0
  181. data/vendor/qwik/htree-generator.rb +144 -0
  182. data/vendor/qwik/htree-get.rb +251 -0
  183. data/vendor/qwik/htree-html-generator.rb +179 -0
  184. data/vendor/qwik/htree-template.rb +263 -0
  185. data/vendor/qwik/htree-to-wabisabi.rb +171 -0
  186. data/vendor/qwik/loadlib.rb +79 -0
  187. data/vendor/qwik/logger.rb +115 -0
  188. data/vendor/qwik/mail-body.rb +171 -0
  189. data/vendor/qwik/mail-header.rb +474 -0
  190. data/vendor/qwik/mail-multipart.rb +193 -0
  191. data/vendor/qwik/mail-parse.rb +147 -0
  192. data/vendor/qwik/mail.rb +341 -0
  193. data/vendor/qwik/mailaddress.rb +83 -0
  194. data/vendor/qwik/mdlb-model.rb +81 -0
  195. data/vendor/qwik/mdlb-sample.rb +324 -0
  196. data/vendor/qwik/ml-catalog-factory.rb +27 -0
  197. data/vendor/qwik/ml-exception.rb +15 -0
  198. data/vendor/qwik/ml-generator.rb +28 -0
  199. data/vendor/qwik/ml-gettext.rb +137 -0
  200. data/vendor/qwik/ml-logger.rb +82 -0
  201. data/vendor/qwik/ml-memory.rb +65 -0
  202. data/vendor/qwik/ml-msg-validator.rb +86 -0
  203. data/vendor/qwik/ml-processor.rb +609 -0
  204. data/vendor/qwik/ml-quickml-server.rb +122 -0
  205. data/vendor/qwik/ml-sendmail.rb +0 -0
  206. data/vendor/qwik/ml-server.rb +107 -0
  207. data/vendor/qwik/ml-session.rb +348 -0
  208. data/vendor/qwik/ml-sweeper.rb +101 -0
  209. data/vendor/qwik/mock-logger.rb +65 -0
  210. data/vendor/qwik/mock-sendmail.rb +78 -0
  211. data/vendor/qwik/mock-socket.rb +82 -0
  212. data/vendor/qwik/modulobe.rb +406 -0
  213. data/vendor/qwik/mongrel-server.rb +72 -0
  214. data/vendor/qwik/page-files.rb +249 -0
  215. data/vendor/qwik/page-generate.rb +82 -0
  216. data/vendor/qwik/page-get.rb +262 -0
  217. data/vendor/qwik/page-images.rb +168 -0
  218. data/vendor/qwik/page-put.rb +128 -0
  219. data/vendor/qwik/page-rrefs.rb +154 -0
  220. data/vendor/qwik/page-title.rb +0 -0
  221. data/vendor/qwik/page-wikidb.rb +234 -0
  222. data/vendor/qwik/page.rb +67 -0
  223. data/vendor/qwik/pages.rb +444 -0
  224. data/vendor/qwik/parse-plugin.rb +249 -0
  225. data/vendor/qwik/parser-emode.rb +116 -0
  226. data/vendor/qwik/parser-inline.rb +273 -0
  227. data/vendor/qwik/parser.rb +350 -0
  228. data/vendor/qwik/password.rb +183 -0
  229. data/vendor/qwik/periodic.rb +79 -0
  230. data/vendor/qwik/qp.rb +56 -0
  231. data/vendor/qwik/qwik-service.rb +341 -0
  232. data/vendor/qwik/qwik.rb +5 -0
  233. data/vendor/qwik/qwikweb-adduser.rb +34 -0
  234. data/vendor/qwik/qwikweb-catalog-validator.rb +110 -0
  235. data/vendor/qwik/qwikweb-incgen.rb +28 -0
  236. data/vendor/qwik/qwikweb-makesite.rb +41 -0
  237. data/vendor/qwik/qwikweb-server.rb +44 -0
  238. data/vendor/qwik/qwikweb-showpassword.rb +26 -0
  239. data/vendor/qwik/qwikweb-watchlog.rb +67 -0
  240. data/vendor/qwik/request-path.rb +304 -0
  241. data/vendor/qwik/request-ua.rb +76 -0
  242. data/vendor/qwik/request-webrick.rb +81 -0
  243. data/vendor/qwik/request.rb +91 -0
  244. data/vendor/qwik/resolve-tdiary.rb +292 -0
  245. data/vendor/qwik/resolve.rb +121 -0
  246. data/vendor/qwik/response.rb +228 -0
  247. data/vendor/qwik/server-memory.rb +57 -0
  248. data/vendor/qwik/server-webrick.rb +102 -0
  249. data/vendor/qwik/server.rb +252 -0
  250. data/vendor/qwik/site-config.rb +149 -0
  251. data/vendor/qwik/site-db.rb +136 -0
  252. data/vendor/qwik/site-event.rb +162 -0
  253. data/vendor/qwik/site-files.rb +86 -0
  254. data/vendor/qwik/site-group.rb +103 -0
  255. data/vendor/qwik/site-index.rb +47 -0
  256. data/vendor/qwik/site-log.rb +64 -0
  257. data/vendor/qwik/site-member.rb +230 -0
  258. data/vendor/qwik/site-monitor.rb +97 -0
  259. data/vendor/qwik/site-pages.rb +62 -0
  260. data/vendor/qwik/site-plan.rb +139 -0
  261. data/vendor/qwik/site-report.rb +282 -0
  262. data/vendor/qwik/site-resolve.rb +230 -0
  263. data/vendor/qwik/site-rrefs.rb +18 -0
  264. data/vendor/qwik/site-search.rb +180 -0
  265. data/vendor/qwik/site-timeline.rb +153 -0
  266. data/vendor/qwik/site-url.rb +189 -0
  267. data/vendor/qwik/site.rb +76 -0
  268. data/vendor/qwik/smil-time.rb +105 -0
  269. data/vendor/qwik/smtp-session.rb +331 -0
  270. data/vendor/qwik/template-generator.rb +149 -0
  271. data/vendor/qwik/template.rb +85 -0
  272. data/vendor/qwik/test-common.rb +10 -0
  273. data/vendor/qwik/test-ml-info.rb +225 -0
  274. data/vendor/qwik/test-module-ml.rb +142 -0
  275. data/vendor/qwik/test-module-path.rb +110 -0
  276. data/vendor/qwik/test-module-public.rb +70 -0
  277. data/vendor/qwik/test-module-server.rb +98 -0
  278. data/vendor/qwik/test-module-session.rb +264 -0
  279. data/vendor/qwik/test-module-suite.rb +91 -0
  280. data/vendor/qwik/test-ms-applemail.rb +59 -0
  281. data/vendor/qwik/test-ms-attach.rb +174 -0
  282. data/vendor/qwik/test-ms-basic.rb +40 -0
  283. data/vendor/qwik/test-ms-close.rb +35 -0
  284. data/vendor/qwik/test-ms-confirm.rb +75 -0
  285. data/vendor/qwik/test-ms-ignore-spam.rb +57 -0
  286. data/vendor/qwik/test-ms-japanese.rb +97 -0
  287. data/vendor/qwik/test-ms-jfilename.rb +82 -0
  288. data/vendor/qwik/test-ms-large.rb +58 -0
  289. data/vendor/qwik/test-ms-member.rb +103 -0
  290. data/vendor/qwik/test-ms-multipart.rb +84 -0
  291. data/vendor/qwik/test-ms-org.rb +129 -0
  292. data/vendor/qwik/test-ms-plan.rb +130 -0
  293. data/vendor/qwik/test-ms-post.rb +53 -0
  294. data/vendor/qwik/test-ms-quopri.rb +76 -0
  295. data/vendor/qwik/test-sub-quopri.rb +45 -0
  296. data/vendor/qwik/test-submit-base64.rb +59 -0
  297. data/vendor/qwik/test-submit-forward.rb +61 -0
  298. data/vendor/qwik/test-submit-html-mail.rb +52 -0
  299. data/vendor/qwik/test-submit-japanese.rb +135 -0
  300. data/vendor/qwik/test-submit-jfilename.rb +144 -0
  301. data/vendor/qwik/test-submit-uuencode.rb +71 -0
  302. data/vendor/qwik/test-suite-all.rb +8 -0
  303. data/vendor/qwik/test-suite-basic.rb +9 -0
  304. data/vendor/qwik/test-suite-ml.rb +9 -0
  305. data/vendor/qwik/test-typekey.rb +64 -0
  306. data/vendor/qwik/testunit.rb +45 -0
  307. data/vendor/qwik/tokenizer-inline.rb +294 -0
  308. data/vendor/qwik/tokenizer.rb +332 -0
  309. data/vendor/qwik/typekey.rb +160 -0
  310. data/vendor/qwik/util-basic.rb +135 -0
  311. data/vendor/qwik/util-charset.rb +332 -0
  312. data/vendor/qwik/util-css.rb +56 -0
  313. data/vendor/qwik/util-csv-tokenizer.rb +113 -0
  314. data/vendor/qwik/util-filename.rb +112 -0
  315. data/vendor/qwik/util-pathname.rb +202 -0
  316. data/vendor/qwik/util-pid.rb +58 -0
  317. data/vendor/qwik/util-safe.rb +67 -0
  318. data/vendor/qwik/util-sendmail.rb +273 -0
  319. data/vendor/qwik/util-string.rb +203 -0
  320. data/vendor/qwik/util-time.rb +125 -0
  321. data/vendor/qwik/util-webrick.rb +176 -0
  322. data/vendor/qwik/version.rb +11 -0
  323. data/vendor/qwik/wabisabi-basic.rb +163 -0
  324. data/vendor/qwik/wabisabi-diff.rb +130 -0
  325. data/vendor/qwik/wabisabi-format-xml.rb +310 -0
  326. data/vendor/qwik/wabisabi-generator.rb +262 -0
  327. data/vendor/qwik/wabisabi-index.rb +174 -0
  328. data/vendor/qwik/wabisabi-table.rb +212 -0
  329. data/vendor/qwik/wabisabi-template.rb +295 -0
  330. data/vendor/qwik/wabisabi-to-htree.rb +111 -0
  331. data/vendor/qwik/wabisabi-to-wiki.rb +690 -0
  332. data/vendor/qwik/wabisabi-traverse.rb +207 -0
  333. data/vendor/qwik/wabisabi-validator.rb +116 -0
  334. data/vendor/qwik/wabisabi.rb +5 -0
  335. metadata +416 -0
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+ $:.unshift File.join("..", "lib", "qwik_doc")
3
+
4
+ Bundler.require :test if defined?(Bundler)
5
+
6
+ RSpec.configure do |spec_config|
7
+ spec_config.before(:each) do
8
+ end
9
+
10
+ spec_config.after(:each) do
11
+ end
12
+ end
@@ -0,0 +1,63 @@
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
+ RUBY=ruby
6
+
7
+ default: test-suite-all
8
+
9
+ # shorcut for test suites.
10
+ a: test-suite-all
11
+ b: test-suite-basic
12
+ m: test-suite-ml
13
+
14
+ # test suites.
15
+ test-suite-all:
16
+ $(RUBY) -I.. test-suite-all.rb
17
+ test-suite-basic:
18
+ $(RUBY) -I.. test-suite-basic.rb
19
+ test-suite-ml:
20
+ $(RUBY) -I.. test-suite-ml.rb
21
+
22
+ # For production test.
23
+ checkmail:
24
+ $(RUBY) dev-sendmail.rb
25
+
26
+ # profiles
27
+ profile:
28
+ $(RUBY) -rprofile -Icompat test-suite-basic.rb 2> profile.txt
29
+ rbprof:
30
+ $(RUBY) -rrbprof -Icompat test-suite-basic.rb 2>rbprof.txt
31
+
32
+ # benchmarks
33
+ bench:
34
+ $(RUBY) -runprof bench-s-md5.rb 2> rubyprof-bench.txt
35
+ bench-page:
36
+ $(RUBY) -rrbprof -Icompat bench-page.rb 2> rbprof-page.txt
37
+ bench-textformat:
38
+ $(RUBY) -rrbprof -Icompat bench-textformat.rb 2> rbprof-textformat.txt
39
+
40
+ x:
41
+ -chmod 644 *.rb .cvsignore Makefile dev-*
42
+
43
+ # clean
44
+ clean:
45
+ -rm -rf .test
46
+ -rm -rf test
47
+ -rm quickml.log
48
+
49
+ oldclean:
50
+ -rm -rf site_test
51
+ -rm -rf compat/.cache
52
+ -rm -rf compat/compat
53
+ -rm -rf www sid
54
+ -rm testtemp.zip
55
+ -rm access.log qwik-access.log qwik-error.log
56
+ -rm generation.txt testlog.txt
57
+ -rm t .#* *~ *.stackdump
58
+ -rm ../../cache/sid/????????????????????????????????
59
+
60
+ realclean: clean
61
+ -rm *.profile profile.txt rbprof.txt rbprof-bench.txt rbprof-table.txt
62
+ -rm rubyprof-bench.txt log
63
+ -rm *.bak
@@ -0,0 +1,17 @@
1
+ # Copyright (C) 2003-2008 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 'rake'
6
+
7
+ task :default => :extract
8
+
9
+ task :extract do
10
+ sh 'ruby dev-extract-catalog.rb'
11
+ end
12
+
13
+ task :chmod do
14
+ sh "chmod 644 *"
15
+ sh "chmod +x compat"
16
+ end
17
+
@@ -0,0 +1,83 @@
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
+ def plg_aa
10
+ content = yield
11
+ return [:pre, {:class=>'aa'}, content]
12
+ end
13
+
14
+ def plg_show_aa(type=nil, message=nil, &b)
15
+ s = aa_get(type, message, &b)
16
+ return [:pre, {:class=>'aa'}, s]
17
+ end
18
+
19
+ def aa_get(type=nil, message=nil)
20
+ if type.nil?
21
+ raise unless block_given?
22
+ return yield
23
+ end
24
+
25
+ aa, msg = aa_database
26
+ a = aa[type]
27
+ raise 'no such aa' if a.nil?
28
+ m = msg[type]
29
+ m = message if message
30
+ a = a.gsub(/\$1/) { m }
31
+ return a
32
+ end
33
+
34
+ def aa_database
35
+ aa = {}
36
+ msg = {}
37
+ aa['smile'] = '(^_^) $1'
38
+ msg['smile'] = 'Hi!'
39
+
40
+ aa['���i�['] =
41
+ '�@�@ �ȁQ�ȁ@�@�^�P�P�P�P�P
42
+ �@�@�i�@�L�́M�j���@$1
43
+ �@�@�i�@�@�@�@�j �@�_�Q�Q�Q�Q�Q
44
+ �@�@�b �b�@|
45
+ �@�@�i_�Q�j�Q�j
46
+ '
47
+ msg['���i�['] = '�I�}�G���i�['
48
+ aa['�N�}�@'] =
49
+ '�@�@�@�Z�Q�Z
50
+ �@�@ �i�@�E(�)�E�j �@��$1
51
+ �@�@/J�@��J
52
+ �@�@���\-J
53
+ '
54
+ msg['�N�}�@'] = '�ϧ!'
55
+ return [aa, msg]
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 TestAction < Test::Unit::TestCase
67
+ include TestSession
68
+
69
+ def test_aa
70
+ # test_aa
71
+ ok_wi([:pre, {:class=>'aa'}, "a\n"], "{{aa\na\n}}")
72
+
73
+ # test_show_aa
74
+ ok_wi([:pre, {:class=>'aa'}, "(^_^) Hi!"], '{{show_aa(smile)}}')
75
+ ok_wi([:pre, {:class=>'aa'}, "(^_^) Bye!"], '{{show_aa(smile, Bye!)}}')
76
+ ok_wi(/monar/, '{{show_aa(���i�[, monar)}}')
77
+ ok_wi(/kumar/, '{{show_aa(�N�}�@, kumar)}}')
78
+
79
+ #eq true, @dir.exist?
80
+ #eq false, (@dir+"test").exist?
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,386 @@
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 << 'compat' unless $LOAD_PATH.include? 'compat'
7
+ begin
8
+ require 'zip/zip'
9
+ $have_zip = true
10
+ rescue LoadError
11
+ $have_zip = false
12
+ end
13
+
14
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
15
+ require 'qwik/act-presen'
16
+ require 'qwik/act-theme'
17
+
18
+ module Qwik
19
+ class Action
20
+ D_ExtArchive = {
21
+ :dt => 'Site archive',
22
+ :dd => 'You can get a zip archive of the site.',
23
+ :dc => "* Example
24
+ {{zip}}
25
+
26
+ You can get a zip archive with all text data of the Wiki site.
27
+
28
+ The archive also contains static HTML files of the site.
29
+ Thus, you can unzip the package and place them on your web site
30
+ as the static Web pages.
31
+ "
32
+ }
33
+
34
+ D_ExtArchive_ja = {
35
+ :dt => '�T�C�g�E�A�[�J�C�u',
36
+ :dd => '�T�C�g�E�A�[�J�C�u���擾�ł��܂��B',
37
+ :dc => '* �g����
38
+ {{zip}}
39
+
40
+ ���̃����N����A�T�C�g�̓��e�܂邲�ƑS������‚̃A�[�J�C�u�ɂ���
41
+ �_�E�����[�h�ł��܂��B
42
+
43
+ �t�@�C���ɂ́A���ƂȂ�e�L�X�g�t�@�C���Ƌ��ɁA�ÓI��HTML�y�[�W���܂܂�
44
+ �Ă���A�𓀂���Web�T�C�g�ɒu���΁A���̂܂ܕ��ʂ�Web�y�[�W�Ƃ��Č��J��
45
+ ���܂��B
46
+ '
47
+ }
48
+
49
+ def plg_zip
50
+ return page_attribute('zip', _('Site archive'), @site.sitename)
51
+ end
52
+
53
+ def archive_path
54
+ return @site.cache_path + "#{@site.sitename}.zip"
55
+ end
56
+
57
+ def archive_running_path
58
+ return @site.cache_path + "#{@site.sitename}.zip.running"
59
+ end
60
+
61
+ def archive_clear_cache
62
+ path = archive_path
63
+ path.unlink if path.exist?
64
+ path = archive_running_path
65
+ path.unlink if path.exist?
66
+ end
67
+
68
+ def ext_zip
69
+ c_require_member
70
+ c_require_base_is_sitename
71
+
72
+ if archive_running_path.exist?
73
+ return c_notice(_('Running.')) {
74
+ [:div,
75
+ [:p, _("The process is working now.")],
76
+ [:p, _("Pleae wait for a while.")],
77
+ [:p, [:a, {:href=>"#{@req.base}.zip"}, _('Again')]]]
78
+ }
79
+ end
80
+
81
+ if archive_path.exist?
82
+ return c_simple_send(archive_path, 'application/zip')
83
+ end
84
+
85
+ # Start New thread.
86
+ Thread.new {
87
+ archive_running_path.write("running")
88
+ SiteArchive.generate(@config, @site, self)
89
+ archive_running_path.unlink
90
+ }
91
+
92
+ return c_notice(_('Start.')) {
93
+ [:div,
94
+ [:p, _("The archive process sgtarted.")],
95
+ [:p, _("Pleae wait for a while.")],
96
+ [:p, [:a, {:href=>"#{@req.base}.zip"}, _('Again')]]]
97
+ }
98
+ end
99
+ end
100
+
101
+ class SiteArchive
102
+ def self.generate(config, site, action)
103
+ sitename = site.sitename
104
+ site_cache_path = site.cache_path
105
+ site_cache_path.check_directory
106
+
107
+ zip_filename = "#{sitename}.zip"
108
+ zip_file = site_cache_path + zip_filename
109
+
110
+ Zip::ZipOutputStream.open(zip_file.to_s) {|zos|
111
+ site.each_all {|page|
112
+ add_page(site, action, zos, site_cache_path, page)
113
+ }
114
+ add_theme(site, action, zos, config.theme_dir)
115
+ }
116
+
117
+ return zip_file
118
+ end
119
+
120
+ private
121
+
122
+ def self.add_page(site, action, zos, site_cache_path, page)
123
+ base = "#{site.sitename}/#{page.key}"
124
+
125
+ # Add original txt file.
126
+ add_entry(zos, "#{base}.txt", page.load, page.mtime)
127
+
128
+ # Generate a html file.
129
+ html_path = site_cache_path+"#{page.key}.html"
130
+ # Call act-html.
131
+ #action.view_page_cache_generate(page.key) if ! html_path.exist?
132
+ # Force create static HTML file.
133
+ action.view_page_cache_generate(page.key)
134
+ raise "Unknown error for '#{page.key}'" if ! html_path.exist? # What?
135
+ filename = "#{base}.html"
136
+ add_entry(zos, filename, html_path.read)
137
+
138
+ # Generate a presen file if the page is related to presen.
139
+ if /\Apresen/i =~ page.key || /\{\{presen/ =~ page.load
140
+ html_path = site_cache_path+"#{page.key}-presen.html"
141
+ wabisabi = action.c_page_res(page.key)
142
+ w = PresenGenerator.generate(site, page.key, wabisabi)
143
+ add_entry(zos, "#{base}-presen.html", w.format_xml)
144
+ end
145
+ end
146
+
147
+ def self.add_entry(zos, filename, content, mtime = Time.new)
148
+ e = Zip::ZipEntry.new('', filename, '', '', 0,0,
149
+ Zip::ZipEntry::DEFLATED, 0, mtime)
150
+ zos.put_next_entry(e)
151
+ zos.write(content)
152
+ end
153
+
154
+ def self.add_theme(site, action, zos, theme_dir)
155
+ ar = []
156
+
157
+ # FIXME: Collect this file list from the directory.
158
+ ar << 'css/base.css'
159
+ ar << 'css/wema.css'
160
+ ar << 'js/base.js'
161
+ ar << 'js/debugwindow.js'
162
+ ar << 'js/niftypp.js'
163
+ ar << 'js/wema.js'
164
+ ar << 'i/external.png'
165
+ ar << 'i/new.png'
166
+
167
+ t = action.site_theme
168
+ list = action.theme_files(t)
169
+ list.each {|f|
170
+ ar << "#{t}/#{f}"
171
+ }
172
+
173
+ ar << 's5/qwikworld/slides.css'
174
+ ar << 's5/qwikworld/s5-core.css'
175
+ ar << 's5/qwikworld/framing.css'
176
+ ar << 's5/qwikworld/pretty.css'
177
+ ar << 's5/qwikworld/bg-shade.png'
178
+ ar << 's5/qwikworld/bg-slide.jpg'
179
+
180
+ ar << 's5/default/opera.css'
181
+ ar << 's5/default/outline.css'
182
+ ar << 's5/default/print.css'
183
+ ar << 's5/default/slides.js'
184
+
185
+ ar.each {|b|
186
+ add_entry(zos, "#{site.sitename}/.theme/#{b}",
187
+ "#{theme_dir}/#{b}".path.read)
188
+ }
189
+ end
190
+ end
191
+ end
192
+
193
+ if $0 == __FILE__
194
+ require 'qwik/test-common'
195
+ require 'qwik/util-pathname'
196
+ $test = true
197
+ end
198
+
199
+ if defined?($test) && $test
200
+ class TestActArchive < Test::Unit::TestCase
201
+ include TestSession
202
+
203
+ def test_plg_zip
204
+ ok_wi [:p, [:a, {:href=>'test.zip'}, 'test.zip']], '[[test.zip]]'
205
+ ok_wi [:span, {:class=>'attribute'},
206
+ [:a, {:href=>'test.zip'}, 'Site archive']], '{{zip}}'
207
+ end
208
+ end
209
+
210
+ class TestActArchive < Test::Unit::TestCase
211
+ include TestSession
212
+
213
+ def test_act_zip
214
+ t_add_user
215
+
216
+ page = @site['_SiteConfig']
217
+ page.store ':theme:qwikborder'
218
+
219
+ page = @site.create_new
220
+ page.store '* ��'
221
+
222
+ page = @site.create_new
223
+ page.store '* A Presentation Page
224
+ {{presen}}
225
+ * Header 2
226
+ '
227
+ mtime = {}
228
+ mtime[page.key] = page.mtime
229
+
230
+ sleep(1) # let mtime be odd value
231
+
232
+ page = @site.create('PresenTest')
233
+ page.store '* A presentation test page'
234
+ mtime[page.key] = page.mtime
235
+
236
+ res = session '/test/test.zip'
237
+ ok_title "Start."
238
+
239
+ res = session '/test/test.zip'
240
+ ok_title "Running."
241
+
242
+ sleep(1) # I hope this might work...
243
+
244
+ res = session '/test/test.zip'
245
+ ok_eq 'application/zip', res['Content-Type']
246
+ str = res.body
247
+ assert_match(/\APK/, str)
248
+
249
+ 'testtemp.zip'.path.write(str)
250
+
251
+ list = []
252
+ Zip::ZipInputStream.open('testtemp.zip') {|zis|
253
+ while e = zis.get_next_entry
254
+ list << e.name
255
+ end
256
+ }
257
+
258
+ files = %w(
259
+ test/1.txt
260
+ test/1.html
261
+ test/2.txt
262
+ test/2.html
263
+ test/2-presen.html
264
+ test/PresenTest.txt
265
+ test/PresenTest.html
266
+ test/PresenTest-presen.html
267
+ test/_SiteConfig.txt
268
+ test/_SiteConfig.html
269
+ test/_SiteMember.txt
270
+ test/_SiteMember.html
271
+ test/.theme/css/base.css
272
+ test/.theme/css/wema.css
273
+ test/.theme/js/base.js
274
+ test/.theme/js/debugwindow.js
275
+ test/.theme/js/niftypp.js
276
+ test/.theme/js/wema.js
277
+ test/.theme/i/external.png
278
+ test/.theme/i/new.png
279
+ test/.theme/qwikborder/qwikborder_h2.png
280
+ test/.theme/qwikborder/qwikborder_li.png
281
+ test/.theme/qwikborder/qwikborder_ball.png
282
+ test/.theme/qwikborder/qwikborder.css
283
+ test/.theme/s5/qwikworld/slides.css
284
+ test/.theme/s5/qwikworld/s5-core.css
285
+ test/.theme/s5/qwikworld/framing.css
286
+ test/.theme/s5/qwikworld/pretty.css
287
+ test/.theme/s5/qwikworld/bg-shade.png
288
+ test/.theme/s5/qwikworld/bg-slide.jpg
289
+ test/.theme/s5/default/opera.css
290
+ test/.theme/s5/default/outline.css
291
+ test/.theme/s5/default/print.css
292
+ test/.theme/s5/default/slides.js
293
+ )
294
+
295
+ not_included_files = %w(
296
+ test/1-presen.html
297
+ )
298
+
299
+ files.each {|file|
300
+ eq true, list.include?(file)
301
+ }
302
+
303
+ not_included_files.each {|file|
304
+ eq false, list.include?(file)
305
+ }
306
+
307
+ Zip::ZipInputStream.open('testtemp.zip') {|zis|
308
+ while e = zis.get_next_entry
309
+ e_name = File.basename(e.name,'.txt')
310
+ if mtime.has_key? e_name
311
+ expected = mtime[e_name].to_i / 2 * 2
312
+ actual = e.time.to_i / 2 * 2
313
+ ok_eq(expected, actual)
314
+ end
315
+ end
316
+ }
317
+
318
+ 'testtemp.zip'.path.unlink
319
+ end
320
+ end
321
+
322
+ class TestSiteArchive < Test::Unit::TestCase
323
+ include TestSession
324
+
325
+ def test_zip
326
+ res = session
327
+
328
+ page = @site.create_new
329
+ page.store('* ��')
330
+
331
+ zip = Qwik::SiteArchive.generate(@config, @site, @action)
332
+ assert_match(/test.zip\Z/, zip.to_s)
333
+ end
334
+ end
335
+
336
+ class CheckZip < Test::Unit::TestCase
337
+ def test_all
338
+ return if $0 != __FILE__ # Only for separated test.
339
+
340
+ file = 'test.zip'
341
+ time = Time.now - (60*60*24) # yesterday
342
+ Zip::ZipOutputStream.open(file) {|zos|
343
+ zos.put_next_entry('test/test.txt')
344
+ zos.print('test')
345
+
346
+ # Signature of Zip::ZipEntry.new()
347
+ # new(zipfile = "", name = "", comment = "", extra = "",
348
+ # compressed_size = 0, crc = 0,
349
+ # compression_method = ZipEntry::DEFLATED, size = 0,
350
+ # time = Time.now)
351
+
352
+ e = Zip::ZipEntry.new('', 'test2.txt', '', '',
353
+ 0, 0,
354
+ Zip::ZipEntry::DEFLATED, 0, time)
355
+ zos.put_next_entry(e)
356
+ zos.print('test2')
357
+ }
358
+
359
+ zip = file.path.open {|f| f.read }
360
+ assert_match(/\APK/, zip)
361
+ assert_match(/test.txt/, zip)
362
+
363
+ Zip::ZipInputStream.open(file) {|zis|
364
+ e = zis.get_next_entry
365
+ ok_eq('test/test.txt', e.name)
366
+ ok_eq('test', zis.read)
367
+
368
+ e = zis.get_next_entry
369
+ ok_eq('test2.txt', e.name)
370
+ ok_eq('test2', zis.read)
371
+
372
+ # at parse_binary_dos_format() in zip/stdrubyext.rb,
373
+ # 'second' should not be odd value
374
+ # 86: second = 2 * ( 0b11111 & binaryDosTime)
375
+ time_i = time.to_i / 2 * 2
376
+ e_time_i = e.time.to_i / 2 * 2
377
+ ok_eq(time_i, e_time_i)
378
+
379
+ e = zis.get_next_entry
380
+ ok_eq(nil, e)
381
+ }
382
+
383
+ file.path.unlink
384
+ end
385
+ end
386
+ end