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,121 @@
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/resolve-tdiary'
7
+ require 'qwik/act-basic'
8
+ require 'qwik/common-resolve'
9
+ require 'qwik/site-resolve'
10
+
11
+ module Qwik
12
+ class Resolver
13
+ def self.resolve(site, action, wabisabi)
14
+ wabisabi ||= []
15
+ wabisabi = wabisabi.deep_copy
16
+ wabisabi.make_index
17
+ wabisabi = site.resolve_all_ref(wabisabi)
18
+ wabisabi = action.resolve_all_plugin(wabisabi)
19
+ return wabisabi
20
+ end
21
+ end
22
+ end
23
+
24
+ if $0 == __FILE__
25
+ require 'qwik/test-common'
26
+ $test = true
27
+ end
28
+
29
+ if defined?($test) && $test
30
+ require 'qwik/test-module-public'
31
+
32
+ class TestResolveEtc < Test::Unit::TestCase
33
+ include TestSession
34
+
35
+ def test_all
36
+ # test_br
37
+ ok_wi [:p, 't', [:br], 's'], "t~\ns\n"
38
+ eq "\342\200\276", '~'.set_sourcecode_charset.to_utf8 # test bug
39
+
40
+ # test_resolve_ref
41
+ ok_wi [:p, [:a, {:href=>'FrontPage.html'}, 'FrontPage']],
42
+ '[[FrontPage]]'
43
+ ok_wi [:p, [:a, {:href=>'FrontPage.html'}, 't']], '[[t|FrontPage]]'
44
+ page = @site.create_new
45
+ page.store '*��'
46
+ ok_wi [:p, [:a, {:href=>'2.html'}, '��']], "[[2]]"
47
+ ok_wi [:p, [:a, {:href=>'2.html'}, '��']], '[[��]]'
48
+
49
+ # test_resolve_plugin
50
+ ok_wi [:p, [:em, 't']], "''t''"
51
+ ok_wi [:p, [:em, '']], "''{{qwik_null}}''"
52
+ ok_wi [:p, [:strong, 't']], "'''t'''"
53
+ ok_wi [:p, [:strong, '']], "'''{{qwik_null}}'''"
54
+ ok_wi [:span, {:class=>"plg_error"}, "nosuch plugin | ",
55
+ [:strong, "nosuchplugin"]], '{{nosuchplugin}}'
56
+
57
+ ok_wi [:p, 'a ', ''], 'a {{qwik_null}}'
58
+ ok_wi [:p, 'a ', '', ' b'], 'a {{qwik_null}} b'
59
+ end
60
+ end
61
+
62
+ class TestFormatter < Test::Unit::TestCase
63
+ include TestSession
64
+
65
+
66
+ def test_all1b
67
+ res = session
68
+
69
+ # test_plugin_link
70
+ ok_wi [:p, [:a, {:href=>".recent"}, ".recent"]], '[[.recent]]'
71
+ ok_wi "<p><a href=\".recent\">RecentList</a></p>",
72
+ '[[RecentList|.recent]]'
73
+ ok_wi "<p><a href=\".rss\">.rss</a></p>", '[[.rss]]' # not use for now
74
+ ok_wi "<p><a href=\".attach\">.attach</a></p>", '[[.attach]]'
75
+ ok_wi "<p><a href=\".attach/t.txt\">.attach/t.txt</a></p>",
76
+ '[[.attach/t.txt]]'
77
+ ok_wi "<p><a href=\".attach/s t.txt\">.attach/s t.txt</a></p>",
78
+ '[[.attach/s t.txt]]'
79
+ end
80
+
81
+ def test_all2
82
+ res = session
83
+
84
+ # test_block
85
+ ok_wi '<dl><dt>t</dt><dd>s</dd></dl>', ':t:s'
86
+ ok_wi '<dl><dt>t</dt></dl>', ':t:'
87
+ ok_wi '<dl><dt>t</dt></dl>', ':t'
88
+ ok_wi '<blockquote><p>t</p></blockquote>', '> t'
89
+ ok_wi '<blockquote><p>t</p></blockquote>', '>t'
90
+ ok_wi '<table><tr><td>t</td><td>s</td></tr></table>', '|t|s|'
91
+
92
+ # test_name
93
+ #ok_wi "<h2><span class='date'/><span class='title'><a name='l0'> </a> t</span></h2>", '* t'
94
+
95
+ # test_inline
96
+ ok_wi '<p><em>t</em></p>', "''t''"
97
+ ok_wi '<p><strong>t</strong></p>', "'''t'''"
98
+ end
99
+
100
+ def test_all3
101
+ res = session
102
+
103
+ # test_link
104
+ ok_wi '<p>t</p>', 't'
105
+ page = @site['FrontPage']
106
+ page.store '*title'
107
+ ok_wi "<p><a href=\"FrontPage.html\">title</a></p>", '[[FrontPage]]'
108
+ page = @site.create('t')
109
+ page.store 't2'
110
+ ok_wi "<p><a href=\"t.html\">t</a></p>", '[[t]]'
111
+ ok_wi "<p><a href=\"FrontPage.html\">t</a></p>", '[[t|FrontPage]]'
112
+ ok_wi "<p><a href=\"t.html\">s</a></p>", '[[s|t]]'
113
+ page = @site.create_new
114
+ page.store '*��'
115
+ ok_wi "<p><a href=\"2.html\">��</a></p>", "[[2]]"
116
+
117
+ # test_find_title
118
+ ok_wi "<p><a href=\"2.html\">��</a></p>", '[[��]]'
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,228 @@
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 'webrick/cookie'
6
+
7
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
8
+ require 'qwik/config'
9
+ require 'qwik/wabisabi-format-xml'
10
+
11
+ module Qwik
12
+ class Response
13
+ COOKIE_EXP = 60*60*24*30 # 30 days
14
+
15
+ MIME_TYPES = {
16
+ 'smil' => 'application/smil',
17
+ 'swf' => 'application/x-shockwave-flash',
18
+ # 'ico' => 'image/bitmap', # FIXME: Is this OK?
19
+ 'ico' => 'image/vnd.microsoft.icon',
20
+ 'png' => 'image/png',
21
+ '3gp' => 'video/3gpp',
22
+ 'tgz' => 'application/octet-stream',
23
+ 'gz' => 'application/octet-stream',
24
+ 'mdlb' => 'application/x-modulobe',
25
+ }
26
+
27
+ def initialize(config)
28
+ @config = config
29
+ clear
30
+ end
31
+ attr_accessor :body, :status
32
+ attr_reader :headers # for test
33
+ attr_reader :cookies # for test
34
+ attr_accessor :basicauth
35
+ attr_accessor :sessionid
36
+
37
+ def clear
38
+ @body = nil
39
+ @status = 200
40
+ @cookies = []
41
+ @headers = {}
42
+ @mimetypes = {}
43
+ @basicauth = nil
44
+ @sessionid = nil
45
+ end
46
+
47
+ def set_webrick(response)
48
+ make_mimetypes(response.config[:MimeTypes])
49
+ end
50
+
51
+ def make_mimetypes(mimetypes)
52
+ @mimetypes = mimetypes
53
+ @mimetypes.update(MIME_TYPES)
54
+ end
55
+
56
+ def get_mimetypes(ext)
57
+ @mimetypes[ext.downcase]
58
+ end
59
+
60
+ def set_content_type(ext)
61
+ mtype = get_mimetypes(ext) # Get content type.
62
+ @headers['Content-Type'] = mtype
63
+ end
64
+
65
+ def [](k)
66
+ return @headers[k]
67
+ end
68
+
69
+ def []=(k, v)
70
+ @headers[k] = v
71
+ end
72
+
73
+ def set_cookies(user, pass)
74
+ set_cookie('user', user)
75
+ set_cookie('pass', pass)
76
+ end
77
+
78
+ def set_cookie(k, v)
79
+ @cookies << make_cookie(k, v)
80
+ end
81
+
82
+ def clear_cookies
83
+ # Set cookies to 1 hour ago, to clear cookies from browser.
84
+ clear_cookie('user')
85
+ clear_cookie('pass')
86
+ clear_cookie('sid')
87
+ end
88
+
89
+ def clear_cookie(k)
90
+ @cookies << make_cookie(k, '', -60*60)
91
+ end
92
+
93
+ def make_cookie(k, v, exp=COOKIE_EXP)
94
+ c = WEBrick::Cookie.new(k, v)
95
+ c.path = '/'
96
+ c.expires = Time.now + exp
97
+ return c
98
+ end
99
+ private :make_cookie
100
+
101
+ def setback_body(body)
102
+ case body
103
+ when Array # wabisabi
104
+ return body.format_xml
105
+ when File
106
+ return body # do not convert
107
+ when String
108
+ return body
109
+ when IO
110
+ return body
111
+ else
112
+ return body.to_s
113
+ end
114
+ end
115
+
116
+ def setback(response)
117
+ response.body = setback_body(@body)
118
+ response.status = @status
119
+ @cookies.each {|c| response.cookies << c }
120
+ @headers.each {|k, v| response[k] = v }
121
+ #imitate_apache_header_order(response.header)
122
+ end
123
+
124
+ def imitate_apache_header_order(h)
125
+ def h.each
126
+ h = {}
127
+ super {|k, v|
128
+ h[k] = v
129
+ }
130
+
131
+ pre_header = %w(date server)
132
+ post_header = %w(etag last-modified location cache-control pragma keep-alive transfer-encoding content-encoding content-length connection content-type)
133
+
134
+ ar = []
135
+ pre_header.each {|k|
136
+ if h[k]
137
+ ar << [k, h[k]]
138
+ h.delete(k)
139
+ end
140
+ }
141
+
142
+ postar = []
143
+ post_header.each {|k|
144
+ if h[k]
145
+ postar << [k, h[k]]
146
+ h.delete(k)
147
+ end
148
+ }
149
+
150
+ h.each {|k, v|
151
+ ar << [k, v]
152
+ }
153
+
154
+ ar += postar
155
+
156
+ ar.each {|k, v|
157
+ yield(k, v)
158
+ }
159
+ end
160
+ end
161
+ end
162
+ end
163
+
164
+ if $0 == __FILE__
165
+ require 'qwik/testunit'
166
+ $test = true
167
+ end
168
+
169
+ if defined?($test) && $test
170
+ class TestResponse < Test::Unit::TestCase
171
+ def test_all
172
+ config = Qwik::Config.new
173
+ res = Qwik::Response.new(config)
174
+
175
+ # test_mimetypes
176
+ mt = {}
177
+ res.make_mimetypes(mt)
178
+ ok_eq('application/x-shockwave-flash', mt['swf'])
179
+ ok_eq('application/smil', mt['smil'])
180
+ ok_eq('image/vnd.microsoft.icon', mt['ico'])
181
+ ok_eq('image/png', mt['png'])
182
+ ok_eq('video/3gpp', mt['3gp'])
183
+
184
+ # test_headers
185
+ res['X-Test-Header'] = 't1'
186
+ ok_eq('t1', res['X-Test-Header'])
187
+ res.clear
188
+ ok_eq(nil, res['X-Test-Header'])
189
+
190
+ # test_cookie
191
+ res.set_cookies('t@e.com', 'testpass')
192
+ ok_eq(2, res.cookies.length)
193
+ res.clear_cookies
194
+ #ok_eq(4, res.cookies.length)
195
+ res.clear
196
+ ok_eq(0, res.cookies.length)
197
+
198
+ # test_setback
199
+ ok_eq('', res.setback_body([]))
200
+ ok_eq("<t\n></t\n>", res.setback_body([:t, ""]))
201
+ ok_eq('t', res.setback_body('t'))
202
+ ok_eq('', res.setback_body(nil))
203
+ end
204
+
205
+ def test_mimetypes
206
+ config = Qwik::Config.new
207
+ res = Qwik::Response.new(config)
208
+
209
+ require 'webrick/httputils'
210
+
211
+ default_mimetypes = WEBrick::HTTPUtils::DefaultMimeTypes
212
+ res.make_mimetypes(default_mimetypes)
213
+
214
+ # Check mimetypes.
215
+ ok_eq('text/html', res.get_mimetypes('html'))
216
+ ok_eq('text/plain', res.get_mimetypes('txt'))
217
+ ok_eq('text/css', res.get_mimetypes('css'))
218
+ ok_eq('image/gif', res.get_mimetypes('gif'))
219
+ ok_eq('image/png', res.get_mimetypes('png'))
220
+ ok_eq('image/jpeg', res.get_mimetypes('jpg'))
221
+ ok_eq('image/jpeg', res.get_mimetypes('JPG')) # Check upcase
222
+ ok_eq('image/jpeg', res.get_mimetypes('JPEG')) # Check upcase
223
+ ok_eq('application/smil', res.get_mimetypes('smil'))
224
+ ok_eq('application/zip', res.get_mimetypes('zip'))
225
+ ok_eq('application/x-modulobe', res.get_mimetypes('mdlb'))
226
+ end
227
+ end
228
+ end
@@ -0,0 +1,57 @@
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/farm' # Do not add farm here.
7
+
8
+ module Qwik
9
+ class ServerMemory
10
+ def initialize(config)
11
+ @config = config
12
+ @cache = {}
13
+ end
14
+
15
+ def [](k)
16
+ @cache[k]
17
+ end
18
+
19
+ def []=(k, v)
20
+ @cache[k] = v
21
+ end
22
+
23
+ # farm
24
+ def farm
25
+ # @farm = Farm.new(@config, self) unless defined? @farm
26
+ # @farm
27
+ return Farm.new(@config, self)
28
+ end
29
+
30
+ # template
31
+ def template
32
+ @template = TemplateFactory.new(@config) unless defined? @template
33
+ @template
34
+ end
35
+
36
+ # catalog
37
+ def catalog
38
+ unless defined? @catalog
39
+ @catalog = CatalogFactory.new
40
+ @catalog.load_all_here('catalog-??.rb')
41
+ end
42
+ @catalog
43
+ end
44
+
45
+ # act-theme
46
+ def theme
47
+ @theme = ThemeFactory.new(@config) unless defined? @theme
48
+ @theme
49
+ end
50
+
51
+ # common-session
52
+ def sessiondb
53
+ @sessiondb = SessionDB.new(@config) unless defined? @sessiondb
54
+ @sessiondb
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,102 @@
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-webrick'
7
+
8
+ module Qwik
9
+ class WEBrickRequest < WEBrick::HTTPRequest
10
+ attr_writer :request_uri, :path, :peeraddr
11
+ attr_writer :request_method, :cookies, :header, :query
12
+ attr_writer :user
13
+ end
14
+
15
+ class WEBrickResponse < WEBrick::HTTPResponse
16
+ def set_config
17
+ @config.update(WEBrick::Config::HTTP)
18
+ end
19
+ end
20
+ end
21
+
22
+ if $0 == __FILE__
23
+ require 'qwik/testunit'
24
+ require 'qwik/config'
25
+ require 'qwik/request'
26
+ $test = true
27
+ end
28
+
29
+ if defined?($test) && $test
30
+ class TestWEBrickRequest < Test::Unit::TestCase
31
+ def ok_req(e, req)
32
+ ok_eq(e, [req.sitename, req.base, req.ext])
33
+ end
34
+
35
+ def setup_server
36
+ config = Qwik::Config.new
37
+ config[:debug] = true
38
+ config[:test] = true # do not show webrick log
39
+
40
+ server_config = {}
41
+
42
+ req = Qwik::Request.new(config)
43
+
44
+ return config, server_config, req
45
+ end
46
+
47
+ def test_parse_webrick
48
+ config, server_config, req = setup_server
49
+
50
+ wreq = Qwik::WEBrickRequest.new(server_config)
51
+ wreq.request_uri = URI.parse('http://example.com/')
52
+ wreq.path = '/'
53
+ req.parse_webrick(wreq)
54
+ ok_req(['www', 'FrontPage', 'html'], req)
55
+
56
+ wreq.request_uri = URI.parse('http://example.com/test/1.html')
57
+ wreq.path = '/test/1.html'
58
+ req.parse_webrick(wreq)
59
+ ok_req(['test', '1', 'html'], req)
60
+ end
61
+
62
+ def test_parse_webrick_env
63
+ config, server_config, req = setup_server
64
+
65
+ wreq = Qwik::WEBrickRequest.new(server_config)
66
+ wreq.path = '/'
67
+ wreq.peeraddr = [nil, nil, nil, '192.168.0.1']
68
+ req.parse_webrick(wreq)
69
+
70
+ wreq.request_method = 'POST'
71
+ req.parse_webrick(wreq)
72
+ ok_eq('POST', req.request_method)
73
+
74
+ wreq.request_method = 'HEAD'
75
+ req.parse_webrick(wreq)
76
+ ok_eq('HEAD', req.request_method)
77
+
78
+ wreq.request_method = 'GET'
79
+ req.parse_webrick(wreq)
80
+ ok_eq('GET', req.request_method)
81
+
82
+ wreq.header = {'x-test' => ['t']}
83
+ req.parse_webrick(wreq)
84
+ ok_eq('t', req['X-Test'])
85
+
86
+ wreq.cookies = []
87
+ wreq.cookies << WEBrick::Cookie.new('s', 't')
88
+ wreq.cookies << WEBrick::Cookie.new('k', 'v')
89
+ req.parse_webrick(wreq)
90
+ ok_eq('t', req.cookies['s'])
91
+ ok_eq('v', req.cookies['k'])
92
+
93
+ wreq.query = {'k' => 'v'}
94
+ req.parse_webrick(wreq)
95
+ ok_eq('v', req.query['k'])
96
+
97
+ wreq.query = {'c' => 'edit'}
98
+ req.parse_webrick(wreq)
99
+ ok_eq('edit', req.query['c'])
100
+ end
101
+ end
102
+ end