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,149 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ require 'pp'
6
+
7
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
8
+ require 'qwik/config'
9
+ require 'qwik/htree-to-wabisabi'
10
+ require 'qwik/util-pathname'
11
+
12
+ module Qwik
13
+ class TemplateGenerator
14
+ def self.main(args)
15
+ =begin
16
+ config = Config.new
17
+ Config.load_args_and_config(config, $0, args)
18
+ path = config.template_dir.path
19
+ generate_all(path)
20
+ =end
21
+ generate_all(".")
22
+ end
23
+
24
+ def self.generate_all(path)
25
+ Pathname.glob(path+'*.html') {|file|
26
+ basename = file.basename('.html').to_s
27
+ make(path, basename)
28
+ }
29
+ end
30
+
31
+ def self.make(path, basename)
32
+ outfile = path+"#{basename}.rb"
33
+ file = path+"#{basename}.html"
34
+
35
+ in_mtime = file.mtime
36
+ out_mtime = outfile.exist? ? outfile.mtime : Time.at(0)
37
+ return unless out_mtime < in_mtime
38
+
39
+ puts "generate #{basename}" unless $test
40
+
41
+ html = file.read
42
+ w = generate_template(html)
43
+
44
+ src = ''
45
+ PP.pp(w, src) # inspect with pretty print.
46
+
47
+ str =
48
+ "# This file is automatically generated.
49
+ # DO NOT EDIT THIS FILE.
50
+
51
+ module Qwik
52
+ class Template
53
+ def self.generate_#{basename}
54
+ return #{src}
55
+ end
56
+ end
57
+ end
58
+ "
59
+ outfile.put(str)
60
+ end
61
+
62
+ def self.generate_template(html)
63
+ html = html.map {|line| line.strip }.join
64
+ return HTree(html).to_wabisabi
65
+ end
66
+
67
+ end
68
+ end
69
+
70
+ if $0 == __FILE__
71
+ if ARGV[0] == '--generate'
72
+ ARGV.shift
73
+ Qwik::TemplateGenerator.main(ARGV)
74
+ else
75
+ require 'qwik/testunit'
76
+ require 'qwik/config'
77
+ $test = true
78
+ end
79
+ end
80
+
81
+ if defined?($test) && $test
82
+ class TestTemplateGenerator < Test::Unit::TestCase
83
+ def test_generate_template
84
+ config = defined?($test_config) ? $test_config : Qwik::Config.new
85
+ path = config.template_dir.path
86
+
87
+ # test_generate_template
88
+ html =
89
+ '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
90
+ <html xmlns:v="urn:schemas-microsoft-com:vml">
91
+ <head id="header"></head>
92
+ <body onload="qwik_onload();" ondblclick="wema_dblClick(this);" ondragdrop="qwik_dragdrop(this);">
93
+ <div class="container">
94
+ <div class="main">
95
+ <div class="adminmenu" id="adminmenu"></div><!--adminmenu-->
96
+ <div class="toc" id="toc"></div><!--toc-->
97
+ <h1 id="view_title"></h1>
98
+ <div id="body_enter"></div><!--id:body_enter-->
99
+ <div id="body"></div><!--id:body-->
100
+ <div id="body_leave"></div><!--id:body_leave-->
101
+ </div><!--main-->
102
+ <div class="sidebar" id="sidemenu"></div><!--sidebar-->
103
+ <div class="footer" id="footer"></div><!--footer-->
104
+ </div><!--container-->
105
+ </body>
106
+ </html>'
107
+ w = [[:"!DOCTYPE", 'html', 'PUBLIC',
108
+ '-//W3C//DTD HTML 4.01 Transitional//EN',
109
+ 'http://www.w3.org/TR/html4/loose.dtd'],
110
+ [:html,
111
+ [:head, {:id=>'header'}],
112
+ [:body, {:ondragdrop=>"qwik_dragdrop(this);",
113
+ :onload=>"qwik_onload();", :ondblclick=>"wema_dblClick(this);"},
114
+ [:div, {:class=>'container'},
115
+ [:div, {:class=>'main'},
116
+ [:div, {:id=>'adminmenu', :class=>'adminmenu'}],
117
+ [:"!--", 'adminmenu'],
118
+ [:div, {:id=>'toc', :class=>'toc'}], [:"!--", 'toc'],
119
+ [:h1, {:id=>'view_title'}],
120
+ [:div, {:id=>'body_enter'}], [:"!--", 'id:body_enter'],
121
+ [:div, {:id=>'body'}], [:"!--", 'id:body'],
122
+ [:div, {:id=>'body_leave'}], [:"!--", 'id:body_leave']],
123
+ [:"!--", 'main'],
124
+ [:div, {:id=>'sidemenu', :class=>'sidebar'}], [:"!--", 'sidebar'],
125
+ [:div, {:id=>'footer', :class=>'footer'}], [:"!--", 'footer']],
126
+ [:"!--", 'container']]]]
127
+ ok_eq(w, Qwik::TemplateGenerator.generate_template(html))
128
+
129
+ # test_generate_all
130
+ Qwik::TemplateGenerator.generate_all(path)
131
+ end
132
+ end
133
+
134
+ class CheckPP < Test::Unit::TestCase
135
+ def test_pp
136
+ w = [:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
137
+ [:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,
138
+ [:cccccccccccccccccccccccccccccc,
139
+ [:dddddddddddddddddddddddddddddd]]]]
140
+
141
+ str = ''
142
+ PP.pp(w, str)
143
+ ok_eq("[:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
144
+ [:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,
145
+ [:cccccccccccccccccccccccccccccc, [:dddddddddddddddddddddddddddddd]]]]
146
+ ", str)
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,85 @@
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-pathname'
7
+ require 'qwik/wabisabi-traverse'
8
+
9
+ module Qwik
10
+ class TemplateFactory
11
+ def initialize(config)
12
+ @config = config
13
+ @template_path = config.template_dir.path
14
+ end
15
+
16
+ def get(cmd)
17
+ if @config.debug
18
+ require 'qwik/template-generator'
19
+ path = @config.template_dir.path
20
+ TemplateGenerator.make(path, cmd)
21
+ end
22
+
23
+ method = "generate_#{cmd}"
24
+ if defined?(Template) && Template.respond_to?(method)
25
+ w = Template.send(method)
26
+ patch(w)
27
+ return w
28
+ end
29
+
30
+ if check_template(cmd)
31
+ return get(cmd)
32
+ end
33
+
34
+ return nil
35
+ end
36
+
37
+ def patch(w)
38
+ w[1].insert(1, {:'xmlns:v'=>'urn:schemas-microsoft-com:vml'})
39
+ end
40
+
41
+ def check_template(cmd)
42
+ file = @template_path+"#{cmd}.rb"
43
+ return false if ! file.exist?
44
+ require file
45
+ end
46
+ end
47
+ end
48
+
49
+ if $0 == __FILE__
50
+ require 'qwik/testunit'
51
+ require 'qwik/config'
52
+ require 'qwik/server-memory'
53
+ $test = true
54
+ end
55
+
56
+ if defined?($test) && $test
57
+ class TestTemplate < Test::Unit::TestCase
58
+ def apply_template(data, template)
59
+ xml = @memory.template.get(template)
60
+ xml.apply(data)
61
+ end
62
+
63
+ def test_all
64
+ # setup config
65
+ @config = defined?($test_config) ? $test_config : Qwik::Config.new
66
+ # setup memory
67
+ @memory = defined?($test_memory) ? $test_memory :
68
+ Qwik::ServerMemory.new(@config)
69
+
70
+ # test_non_destructive
71
+ template = @memory.template.get('notice')
72
+ id1 = template.object_id
73
+ head = template.get_tag(:head)
74
+ length1 = head.length
75
+ head << [:title, 'title'] # destructive method
76
+
77
+ template = @memory.template.get('notice')
78
+ id2 = template.object_id
79
+ assert_not_equal(id1, id2)
80
+ head = template.get_tag(:head)
81
+ length2 = head.length
82
+ ok_eq(length2, length1)
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,10 @@
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 'pp'
7
+ require 'qwik/qp'
8
+ require 'qwik/testunit'
9
+ require 'qwik/test-module-session'
10
+ require 'qwik/server'
@@ -0,0 +1,225 @@
1
+ #
2
+ # Copyright (C) 2002-2004 Satoru Takabayashi <satoru@namazu.org>
3
+ # Copyright (C) 2003-2006 Kouichirou Eto
4
+ # All rights reserved.
5
+ # This is free software with ABSOLUTELY NO WARRANTY.
6
+ #
7
+ # You can redistribute it and/or modify it under the terms of
8
+ # the GNU General Public License version 2.
9
+ #
10
+
11
+ #
12
+ # This file is just for information. Do not execute.
13
+ #
14
+
15
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
16
+ require 'qwik/testunit'
17
+ require 'qwik/ml-session'
18
+
19
+ if false # Just for information. Do not execute.
20
+ class TestQuickMLSession < Test::Unit::TestCase
21
+ def test_quickml_main
22
+ start
23
+ send_normal_mail 'bob@example.net' # create a new ML by bob@example.net
24
+ send_normal_mail 'alice@example.net' # must be rejected
25
+ send_japanese_multipart_mail 'alice@example.net' # must be rejected
26
+ send_multipart_mail 'alice@example.net' # must be rejected
27
+ unsubscribe 'bob@example.net' # close ML
28
+
29
+ send_normal_mail 'alice@example.net' # create new ML
30
+ send_normal_mail 'ALICE@EXAMPLE.NET' # case-insensitive OK?
31
+ send_multipart_mail 'alice@example.net'
32
+ send_japanese_mail 'alice@example.net' # Japanese
33
+ send_normal_mail 'bob@example.net' # must be rejected
34
+ add_member 'charlie@example.net'
35
+ add_member 'bob@example.net' # exceeds :max_members
36
+ remove_member 'ALICE@EXAMPLE.NET', 'charlie@example.net'
37
+ join_ml 'bob@example.net'
38
+ remove_member 'bob@example.net', 'Alice@Example.Net'
39
+ send_normal_mail 'alice@example.net' # return
40
+ remove_member 'alice@example.net', 'bob@example.net'
41
+ add_member 'nonexistent'
42
+ send_normal_mail 'alice@example.net'
43
+ send_normal_mail 'Alice@Example.Net'
44
+ send_normal_mail 'ALICE@EXAMPLE.NET' # exceeds :auto_unsubscribe_count
45
+ unsubscribe 'alice@example.net' # close ML
46
+
47
+ send_normal_mail 'alice@example.net' #
48
+ unsubscribe 'alice@example.net' # close ML (English report mail)
49
+
50
+ send_normal_mail 'alice@example.net' # re-create new ML by alice@example.net
51
+ send_large_mail
52
+ send_longline_mail
53
+ send_japanese_multipart_mail 'alice@example.net'
54
+ send_japanese_large_mail
55
+ sleep 180 # automatic ML deletion
56
+ finish
57
+ end
58
+
59
+ def start
60
+ #cat /dev/null > /var/spool/mail/$USER
61
+ #sudo rm -rf mldata
62
+ #rm -f quickml.log
63
+ #mkdir mldata
64
+ #sudo ruby -I ../lib ../quickml quickmlrc.test
65
+ end
66
+
67
+ def setup_config
68
+ {
69
+ # QuickML Internal use.
70
+ # :message_catalog = nil # for English messages
71
+ :message_catalog => Dir.pwd+'/../messages.ja',
72
+
73
+ # For test and debug.
74
+ :verbose_mode => true,
75
+
76
+ # Server setting.
77
+ :user => 'quickml',
78
+ :group => 'quickml',
79
+ # :ml_port => 10025,
80
+ :ml_port => 9196,
81
+
82
+ # Send mail setting.
83
+ :smtp_host => 'localhost',
84
+
85
+ # Mailing list setting.
86
+ :domain => Socket.gethostname,
87
+ :postmaster => 'info@localhost',
88
+ :info_url => 'http://localhost/',
89
+
90
+ # Mailing list server setting.
91
+ :sweep_interval => 10,
92
+ :allowable_error_interval => 3,
93
+ :max_threads => 10,
94
+ :timeout => 120,
95
+
96
+ # Config for each group.
97
+ :auto_unsubscribe_count => 3,
98
+ :max_mail_length=> 1024 * 1024,
99
+ :max_members => 2,
100
+ :ml_alert_time => 160,
101
+ :ml_life_time => 170,
102
+
103
+ # Setting for directories and files.
104
+ :sites_dir => Dir.pwd+'/mldata',
105
+ :log_dir => '.',
106
+ :ml_pid_file => Dir.pwd+'/quickml.pid',
107
+ }
108
+ end
109
+
110
+ def sendmail(from, to, subject, cc='')
111
+ message = yield
112
+ contents = []
113
+ contents << "To: #{to}\n"
114
+ contents << "From: #{from}\n"
115
+ contents << "Subject: #{subject}\n"
116
+ contents << "Cc: #{cc}\n"
117
+ contents << "\n" if /\n\z/ !~ message
118
+ contents << message
119
+ Net::SMTP.start('localhost') {|smtp|
120
+ smtp.send_mail(contents, from, to)
121
+ }
122
+ end
123
+
124
+ def send_normal_mail(from)
125
+ sendmail(from, 'test@example.com', 'test'){'test'}
126
+ end
127
+
128
+ def send_japanese_multipart_mail(from)
129
+ message = <<'EOF'
130
+ Mime-Version: 1.0
131
+ Content-Transfer-Encoding: 7bit
132
+ Content-Type: Multipart/Mixed;
133
+ boundary="--Next_Part(Wed_Oct_16_19:21:12_2002_747)--"
134
+
135
+ ----Next_Part(Wed_Oct_16_19:21:12_2002_747)--
136
+ Content-Type: Text/Plain; charset=iso-2022-jp
137
+ Content-Transfer-Encoding: 7bit
138
+
139
+ ����
140
+ ----Next_Part(Wed_Oct_16_19:21:12_2002_747)--
141
+ Content-Type: Text/Plain; charset=us-ascii
142
+ Content-Transfer-Encoding: 7bit
143
+ Content-Disposition: attachment; filename='foobar.txt'
144
+
145
+ foobar
146
+
147
+ ----Next_Part(Wed_Oct_16_19:21:12_2002_747)----
148
+ EOF
149
+ sendmail(from, 'test@example.com',
150
+ "=?iso-2022-jp?B?GyRCJF4kayRBJFEhPCRIGyhC?="){message}
151
+ end
152
+
153
+ def send_multipart_mail(from)
154
+ message = <<'EOF'
155
+ Mime-Version: 1.0
156
+ Content-Transfer-Encoding: 7bit
157
+ Content-Type: Multipart/Mixed;
158
+ boundary="--Next_Part(Wed_Oct_16_19:21:12_2002_747)--"
159
+
160
+ ----Next_Part(Wed_Oct_16_19:21:12_2002_747)--
161
+ Content-Type: Text/Plain; charset=us-ascii
162
+ Content-Transfer-Encoding: 7bit
163
+
164
+ test
165
+ ----Next_Part(Wed_Oct_16_19:21:12_2002_747)--
166
+ Content-Type: Text/Plain; charset=us-ascii
167
+ Content-Transfer-Encoding: 7bit
168
+ Content-Disposition: attachment; filename='foobar.txt'
169
+
170
+ foobar
171
+
172
+ ----Next_Part(Wed_Oct_16_19:21:12_2002_747)----
173
+ EOF
174
+ sendmail(from, 'test@example.com', 'multipart'){message}
175
+ end
176
+
177
+ def unsubscribe(from)
178
+ sendmail(from, 'test@example.com', 'unsubscribe'){''}
179
+ end
180
+
181
+ def send_japanese_mail(from)
182
+ message = <<'EOF'
183
+ Content-Type: text/plain; charset=ISO-2022-JP
184
+
185
+ ���{��ł���
186
+ EOF
187
+ sendmail(from, 'test@example.com',
188
+ "=?iso-2022-jp?B?GyRCJEYkOSRIGyhC?="){message}
189
+ end
190
+
191
+ def add_member(cc)
192
+ sendmail('alice@example.net', 'test@example.com', 'unsubscribe', cc){'add'}
193
+ end
194
+
195
+ def remove_member(by, member)
196
+ sendmail(by, 'test@example.com', 'remove', member){''}
197
+ end
198
+
199
+ def join_ml(from)
200
+ sendmail(from, 'test@example.com', 'join', 'alice@example.net'){'join'}
201
+ end
202
+
203
+ def send_large_mail
204
+ message = "oooooooooo\n" * 500000
205
+ sendmail('alice@example.net', 'test@example.com', 'large'){message}
206
+ end
207
+
208
+ def send_longline_mail
209
+ message = 'o' * 2000 + "\n"
210
+ sendmail('alice@example.net', 'test@example.com', 'longline'){message}
211
+ end
212
+
213
+ def send_japanese_large_mail
214
+ message = "Content-Type: text/plain; charset=ISO-2022-JP\n\n"
215
+ message += "oooooooooo\n" * 500000
216
+ sendmail('alice@example.net', 'test@example.com',
217
+ "=?iso-2022-jp?B?GyRCJEckKyQkGyhC?="){message}
218
+ end
219
+
220
+ def finish
221
+ #sleep 3
222
+ #sudo kill `cat quickml.pid`
223
+ end
224
+ end
225
+ end