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,168 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/page-files'
7
+
8
+ module Qwik
9
+ class PageFiles
10
+ IMAGE_EXT = %w(jpg jpeg png gif bmp ico ppm)
11
+ CONVERT_PATH = '/usr/bin/convert'
12
+ THUMB_SIZE = 100
13
+ SCREEN_WIDTH = 1024
14
+ SCREEN_HEIGHT = 768
15
+
16
+ def image_list
17
+ return self.select {|file|
18
+ PageFiles.is_image?(file.path.ext)
19
+ }
20
+ end
21
+
22
+ def each_image
23
+ image_list.each {|file|
24
+ yield(file)
25
+ }
26
+ end
27
+
28
+ def self.is_image?(ext)
29
+ return true if IMAGE_EXT.include?(ext.downcase)
30
+ return false
31
+ end
32
+
33
+ def generate_all_thumb
34
+ self.each_image {|file|
35
+ generate_thumb(file)
36
+ }
37
+ end
38
+
39
+ def generate_thumb(file)
40
+ generate_scaled(file, '.thumb', THUMB_SIZE, THUMB_SIZE)
41
+ end
42
+
43
+ def generate_all_screen
44
+ self.each_image {|file|
45
+ generate_screen(file)
46
+ }
47
+ end
48
+
49
+ def generate_screen(file)
50
+ generate_scaled(file, '.screen', SCREEN_WIDTH, SCREEN_HEIGHT)
51
+ end
52
+
53
+ def generate_scaled(file, scaled_dir, w, h)
54
+ return if $test
55
+
56
+ sc_dir = self.path(scaled_dir)
57
+ sc_dir.check_directory
58
+
59
+ org = self.path(file)
60
+ #scaled = sc_dir+file
61
+ scaled = sc_dir + Filename.encode(file)
62
+ if ! scaled.exist?
63
+ convert = CONVERT_PATH
64
+ return nil if ! convert.path.exist?
65
+ geom = "#{w}x#{h}"
66
+ cmd = "#{convert} -size #{geom} \"#{org}\" -resize #{geom} \"#{scaled}\""
67
+ #cmd = "#{convert} -size #{geom} #{org} -resize #{geom} #{scaled}"
68
+ #p cmd
69
+ system cmd
70
+ end
71
+ end
72
+
73
+ =begin
74
+ # Excerpt from man convert
75
+
76
+ To make a thumbnail of a JPEG image, use:
77
+
78
+ convert -size 120x120 cockatoo.jpg -resize 120x120
79
+ +profile '*' thumbnail.jpg
80
+
81
+ In this example, '-size 120x120' gives a hint to the JPEG decoder that
82
+ the image is going to be downscaled to 120x120, allowing it to run
83
+ faster by avoiding returning full-resolution images to ImageMagick for
84
+ the subsequent resizing operation. The output image. It will be
85
+ scaled so its largest dimension is 120 pixels. The that might be
86
+ present in the input and aren't needed in the thumbnail.
87
+ =end
88
+
89
+ end
90
+ end
91
+
92
+ if $0 == __FILE__
93
+ require 'qwik/testunit'
94
+ require 'qwik/test-module-session'
95
+ $test = true
96
+ end
97
+
98
+ if defined?($test) && $test
99
+ class TestPageImages < Test::Unit::TestCase
100
+ include TestSession
101
+
102
+ def setup
103
+ end
104
+
105
+ def teardown
106
+ end
107
+
108
+ def test_all
109
+ dir = './.test/'.path
110
+ dir.setup
111
+ files = Qwik::PageFiles.new(dir.to_s, '1')
112
+
113
+ png = TEST_PNG_DATA
114
+ files.fput('1.jpg', png) # content is PNG, but use it as .jpg
115
+ files.fput('2.jpg', png)
116
+
117
+ # test_image_list
118
+ eq(['1.jpg', '2.jpg'], files.image_list)
119
+
120
+ # test_each_image
121
+ files.each_image {|file|
122
+ assert_match(/jpg\z/, file)
123
+ }
124
+
125
+ return if $0 != __FILE__ # Only for separated test.
126
+
127
+ org_debug = $test
128
+ $test = false
129
+
130
+ # test_generate_thumb
131
+ files.generate_thumb('1.jpg')
132
+ ok_eq(true, files.exist?('.thumb/1.jpg'))
133
+ ok_eq(false, files.exist?('.thumb/2.jpg'))
134
+
135
+ # test_generate_all_thumb
136
+ files.generate_all_thumb
137
+ ok_eq(true, files.exist?('.thumb/1.jpg'))
138
+ ok_eq(true, files.exist?('.thumb/2.jpg'))
139
+
140
+ # test_generate_screen
141
+ files.generate_screen('1.jpg')
142
+ ok_eq(true, files.exist?('.screen/1.jpg'))
143
+ ok_eq(false, files.exist?('.screen/2.jpg'))
144
+
145
+ # test_generate_all_screen
146
+ files.generate_all_screen
147
+ ok_eq(true, files.exist?('.screen/1.jpg'))
148
+ ok_eq(true, files.exist?('.screen/2.jpg'))
149
+
150
+ $test = org_debug
151
+
152
+ dir.teardown
153
+ end
154
+
155
+ def test_is_image?
156
+ c = Qwik::PageFiles
157
+ ok_eq(true, c.is_image?('jpg'))
158
+ ok_eq(true, c.is_image?('jpeg'))
159
+ ok_eq(true, c.is_image?('JPG'))
160
+ ok_eq(true, c.is_image?('png'))
161
+ ok_eq(true, c.is_image?('gif'))
162
+ ok_eq(true, c.is_image?('bmp'))
163
+ ok_eq(true, c.is_image?('ico'))
164
+ ok_eq(true, c.is_image?('ppm'))
165
+ ok_eq(false, c.is_image?('pdf'))
166
+ end
167
+ end
168
+ end
@@ -0,0 +1,128 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/util-string'
7
+
8
+ module Qwik
9
+ class Page
10
+ def put(v)
11
+ return @db.put(@key, v)
12
+ end
13
+ alias store put
14
+
15
+ def put_with_time(v, time)
16
+ @db.put(@key, v, time)
17
+ end
18
+
19
+ def put_with_md5(v, md5)
20
+ if md5 && self.get.md5hex != md5
21
+ raise PageCollisionError
22
+ end
23
+ put(v)
24
+ end
25
+
26
+ def add(v)
27
+ str = self.get
28
+ addstr = ''
29
+
30
+ # FIXME: Use normalize_eol?
31
+ if ! (str.empty? || str[-1] == ?\n)
32
+ addstr += "\n"
33
+ end
34
+
35
+ addstr += v
36
+
37
+ if !(v.empty? || v[-1] == ?\n)
38
+ addstr += "\n"
39
+ end
40
+
41
+ @db.add(@key, addstr)
42
+ end
43
+
44
+ def delete
45
+ @db.delete(@key)
46
+ # @pages.delete(@key)
47
+ end
48
+
49
+ def touch
50
+ @db.touch(@key)
51
+ end
52
+
53
+ end
54
+ end
55
+
56
+ if $0 == __FILE__
57
+ require 'qwik/farm'
58
+ require 'qwik/server-memory'
59
+ require 'qwik/test-module-session'
60
+ $test = true
61
+ end
62
+
63
+ if defined?($test) && $test
64
+ class TestPagePut < Test::Unit::TestCase
65
+ include TestSession
66
+
67
+ def test_all
68
+ pages = @site.get_pages
69
+ page = pages.create_new
70
+
71
+ # test_put
72
+ page.put('test1')
73
+ page.store('test1')
74
+ ok_eq('test1', page.get)
75
+
76
+ # test_put_with_time
77
+ page.put_with_time('test1', 0)
78
+ ok_eq(0, page.mtime.to_i)
79
+
80
+ # test_put_with_md5
81
+ page.put('t1')
82
+ assert_raises(Qwik::PageCollisionError) {
83
+ page.put_with_md5('t1', 'somethingwrong')
84
+ }
85
+ md5 = page.get.md5hex
86
+ page.put_with_md5('t2', md5)
87
+ ok_eq('t2', page.get)
88
+
89
+ # test_add
90
+ page.add('t3')
91
+ ok_eq("t2\nt3\n", page.get)
92
+
93
+ # test_mtime_with_nonexistent_page
94
+ assert_instance_of(Time, pages.last_page_time)
95
+
96
+ page = pages['1']
97
+ page.put('* a')
98
+ assert_instance_of(Time, page.mtime)
99
+ assert_instance_of(Time, pages.last_page_time)
100
+
101
+ page.delete
102
+ assert_instance_of(Time, page.mtime)
103
+ assert_instance_of(Time, pages.last_page_time)
104
+ ok_eq(0, page.mtime.to_i)
105
+ end
106
+
107
+ def test_add
108
+ pages = @site.get_pages
109
+ page = pages.create_new
110
+
111
+ page.put('t1')
112
+ page.add('t2')
113
+ ok_eq("t1\nt2\n", page.get)
114
+
115
+ page.put('')
116
+ page.add('t2')
117
+ ok_eq("t2\n", page.get)
118
+
119
+ page.put('t1')
120
+ page.add('')
121
+ ok_eq("t1\n", page.get)
122
+
123
+ page.delete
124
+ page.add('')
125
+ ok_eq('', page.get)
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,154 @@
1
+ # Copyright (C) 2009 AIST, 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 'fileutils'
6
+
7
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
8
+ require 'qwik/util-pathname'
9
+ require 'qwik/util-filename'
10
+
11
+ module Qwik
12
+ class PageRRefs
13
+ include Enumerable
14
+
15
+ def initialize(site_dir, key)
16
+ @rref_file = site_dir.path+"#{key}.rrefs"
17
+
18
+ # fix me!
19
+ # the mutex works only in a process
20
+ # wiki server process is the process to update rrefs
21
+ # ml-server is not supposed to update rrefs
22
+ @lock = Mutex.new
23
+ end
24
+
25
+ def exist?
26
+ FileTest.exists?(@rref_file)
27
+ end
28
+
29
+ def get
30
+ if self.exist?
31
+ rrefs = File.open(@rref_file).read
32
+ return rrefs
33
+ else
34
+ return ""
35
+ end
36
+ end
37
+
38
+ def delete(key)
39
+ @lock.synchronize {
40
+ rrefs = self.get
41
+ rrefs = rrefs.map {|r| r if r.chomp != key }.to_s
42
+ @rref_file.path.put(rrefs)
43
+ }
44
+ end
45
+
46
+ def add(key)
47
+ @lock.synchronize {
48
+ f = File.open(@rref_file,"a")
49
+ f.puts key
50
+ f.close
51
+ }
52
+ end
53
+
54
+ def put(keys)
55
+ rrefs = keys.join($/) + $/
56
+ @rref_file.path.put(rrefs)
57
+ end
58
+
59
+ def each
60
+ return unless self.exist?
61
+ # key might be deleted in the loop
62
+ keys = self.get
63
+ keys.each {|a|
64
+ yield(a.chomp)
65
+ }
66
+ end
67
+ end
68
+ end
69
+
70
+ if $0 == __FILE__
71
+ require 'qwik/testunit'
72
+ require 'qwik/test-module-path'
73
+ $test = true
74
+ end
75
+
76
+ if defined?($test) && $test
77
+ require 'qwik/test-module-public'
78
+
79
+ class TestPageRRefs < Test::Unit::TestCase
80
+ include TestModulePublic
81
+
82
+ def setup_rrefs
83
+ dir = '.test/'.path
84
+ dir.setup
85
+ rrefs = Qwik::PageRRefs.new(dir.to_s, '1')
86
+
87
+ return [dir, rrefs]
88
+ end
89
+
90
+ def teardown_rrefs(dir)
91
+ dir.teardown
92
+ end
93
+
94
+ def test_put
95
+ dir, rrefs = setup_rrefs
96
+
97
+ rrefs.put(["2","3"])
98
+ ok_eq(true, rrefs.exist?)
99
+
100
+ cont = rrefs.get
101
+ ok_eq("2#{$/}3#{$/}",cont)
102
+
103
+ teardown_rrefs(dir)
104
+ end
105
+
106
+ def test_add
107
+ dir, rrefs = setup_rrefs
108
+ rrefs.put(["2","3"])
109
+
110
+ rrefs.add("4")
111
+ cont = rrefs.get
112
+
113
+ ok_eq(true, rrefs.exist?)
114
+ ok_eq("2#{$/}3#{$/}4#{$/}",cont)
115
+
116
+ teardown_rrefs(dir)
117
+ end
118
+
119
+ def test_delete
120
+ dir, rrefs = setup_rrefs
121
+ rrefs.put(["2","3","4"])
122
+ rrefs.delete("3")
123
+
124
+ cont = rrefs.get
125
+ ok_eq(true, rrefs.exist?)
126
+ ok_eq("2#{$/}4#{$/}",cont)
127
+
128
+ teardown_rrefs(dir)
129
+ end
130
+
131
+ def test_each
132
+ dir, rrefs = setup_rrefs
133
+ keys = ["2","3","4"]
134
+ rrefs.put(keys)
135
+
136
+
137
+ i = 0
138
+ rrefs.each {|key|
139
+ ok_eq(keys[i],key)
140
+ i+=1
141
+ }
142
+ end
143
+
144
+ def test_each_empty
145
+ dir, rrefs = setup_rrefs
146
+
147
+ cont = []
148
+ rrefs.each {|key|
149
+ cont << key
150
+ }
151
+ ok_eq([],cont)
152
+ end
153
+ end
154
+ end