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,142 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+
7
+ module Qwik
8
+ class Action
9
+ D_PluginMenu = {
10
+ :dt => 'Menu plugin',
11
+ :dd => 'You can show a pull down menu.',
12
+ :dc => "* Example
13
+ {{hmenu
14
+ - [[Yahoo!|http://www.yahoo.co.jp/]]
15
+ -- [[map|http://map.yahoo.co.jp/]]
16
+ -- [[auctions|http://aunctions.yahoo.co.jp/]]
17
+ - [[Google|http://www.google.co.jp/]]
18
+ -- [[news|http://news.google.com/]]
19
+ -- [[map|http://map.google.com/]]
20
+ - [[qwik|http://qwik.jp/]]
21
+ -- [[hello|http://qwik.jp/HelloQwik/]]
22
+ }}
23
+
24
+ {{br}}
25
+ {{br}}
26
+ {{br}}
27
+ {{br}}
28
+
29
+ {{{
30
+ {{hmenu
31
+ - [[Yahoo!|http://www.yahoo.co.jp/]]
32
+ -- [[map|http://map.yahoo.co.jp/]]
33
+ -- [[auctions|http://aunctions.yahoo.co.jp/]]
34
+ - [[Google|http://www.google.co.jp/]]
35
+ -- [[news|http://news.google.com/]]
36
+ -- [[map|http://map.google.com/]]
37
+ - [[qwik|http://qwik.jp/]]
38
+ -- [[hello|http://qwik.jp/HelloQwik/]]
39
+ }}
40
+ }}}
41
+ "
42
+ }
43
+
44
+ D_PluginMenu_ja = {
45
+ :dt => '���j���[�E�v���O�C��',
46
+ :dd => '�v���_�E���^���j���[�����܂��B',
47
+ :dc => "* ��
48
+ {{hmenu
49
+ - [[Yahoo!|http://www.yahoo.co.jp/]]
50
+ -- [[map|http://map.yahoo.co.jp/]]
51
+ -- [[auctions|http://aunctions.yahoo.co.jp/]]
52
+ - [[Google|http://www.google.co.jp/]]
53
+ -- [[news|http://news.google.com/]]
54
+ -- [[map|http://map.google.com/]]
55
+ - [[qwik|http://qwik.jp/]]
56
+ -- [[hello|http://qwik.jp/HelloQwik/]]
57
+ }}
58
+
59
+ {{br}}
60
+ {{br}}
61
+ {{br}}
62
+ {{br}}
63
+
64
+ {{{
65
+ {{hmenu
66
+ - [[Yahoo!|http://www.yahoo.co.jp/]]
67
+ -- [[map|http://map.yahoo.co.jp/]]
68
+ -- [[auctions|http://aunctions.yahoo.co.jp/]]
69
+ - [[Google|http://www.google.co.jp/]]
70
+ -- [[news|http://news.google.com/]]
71
+ -- [[map|http://map.google.com/]]
72
+ - [[qwik|http://qwik.jp/]]
73
+ -- [[hello|http://qwik.jp/HelloQwik/]]
74
+ }}
75
+ }}}
76
+ "
77
+ }
78
+
79
+ def plg_hmenu
80
+ ar = []
81
+
82
+ menu_define_style(ar) # Define style first.
83
+
84
+ content = yield
85
+ w = c_res(content)
86
+
87
+ w.each {|e|
88
+ if e.is_a?(Array) && e[0] == :ul
89
+ e.set_attr(:class=>'m1')
90
+ e.each {|ee|
91
+ if ee.is_a?(Array) && ee[0] == :li
92
+ ee.set_attr(:class=>'off')
93
+ ee.set_attr(:onmouseover=>"this.className='on'")
94
+ ee.set_attr(:onmouseout=>"this.className='off'")
95
+ elsif ee.is_a?(Array) && ee[0] == :ul
96
+ ee.set_attr(:class=>'m2')
97
+ end
98
+ }
99
+ end
100
+ }
101
+
102
+ div = [:div, {:class=>'hmenu'}] + w
103
+ ar << div
104
+ return ar
105
+ end
106
+
107
+ def menu_define_style(ar)
108
+ if ! defined?(@menu_defined)
109
+ @menu_defined = true
110
+ ar << [:style, "@import '.theme/css/menu.css';"]
111
+ end
112
+ end
113
+ end
114
+ end
115
+
116
+ if $0 == __FILE__
117
+ require 'qwik/test-common'
118
+ $test = true
119
+ end
120
+
121
+ if defined?($test) && $test
122
+ class TestActMenu < Test::Unit::TestCase
123
+ include TestSession
124
+
125
+ def test_plg_hmenu
126
+ t_add_user
127
+ page = @site.create_new
128
+ page.store("{{hmenu
129
+ - t
130
+ -- s
131
+ }}")
132
+ res = session('/test/1.html')
133
+ menu = [:div, {:class=>'hmenu'},
134
+ [:ul, {:class=>'m1'},
135
+ [:li, {:onmouseover=>"this.className='on'",
136
+ :onmouseout=>"this.className='off'",
137
+ :class=>'off'}, 't'],
138
+ [:ul, {:class=>'m2'}, [:li, 's']]]]
139
+ ok_xp(menu, "//div[@class='hmenu']")
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,323 @@
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_rss
10
+ return rss_button('rss.xml', 'RSS')
11
+ end
12
+
13
+ def plg_atom
14
+ return rss_button('atom.xml', 'ATOM')
15
+ end
16
+
17
+ def rss_button(href, msg)
18
+ return [:a, {:class=>'rss-button', :href=>href},
19
+ [:span, msg]]
20
+ end
21
+
22
+ def metadata_clear_cache
23
+ path = @site.cache_path + "rss.xml"
24
+ path.unlink if path.exist?
25
+ path = @site.cache_path + "atom.xml"
26
+ path.unlink if path.exist?
27
+ end
28
+
29
+ def pre_ext_xml
30
+ method = "metadata_#{@req.base}_#{@req.ext}"
31
+ return c_nerror(_('Error')) if ! self.respond_to?(method)
32
+
33
+ site_cache_path = @site.cache_path
34
+ site_cache_path.check_directory
35
+ feed_filename = "#{@req.base}.#{@req.ext}"
36
+ feed_path = site_cache_path + feed_filename
37
+
38
+ if ! feed_path.exist?
39
+ feed = self.send(method)
40
+ feed_string = feed.format_xml.page_to_xml
41
+ feed_path.write(feed_string)
42
+ end
43
+
44
+ return c_simple_send(feed_path, 'application/xml')
45
+ end
46
+
47
+ def metadata_rss_xml
48
+ return @site.metadata.generate_rss20
49
+ end
50
+
51
+ def metadata_atom_xml
52
+ return @site.metadata.generate_atom
53
+ end
54
+ end
55
+
56
+ class Site
57
+ def metadata
58
+ return SiteMetaData.new(@config, self)
59
+ end
60
+ end
61
+
62
+ class SiteMetaData
63
+ def initialize(config, site)
64
+ @config = config
65
+ @site = site
66
+ init_internal
67
+ end
68
+ attr_reader :title, :site_url, :last_build_date
69
+ attr_reader :description
70
+ attr_reader :last_build_date
71
+ attr_reader :pub_date
72
+ attr_reader :generator
73
+
74
+ def generate_rss20
75
+ init_internal
76
+
77
+ xml = []
78
+ xml << [:'?xml', '1.0', 'utf-8']
79
+ rss = [:rss, {:version=>'2.0'}]
80
+
81
+ channel = [:channel,
82
+ [:title, @title],
83
+ [:link, @site_url],
84
+ [:description, @description],
85
+ [:language, @language],
86
+ [:pubdate, @pub_date],
87
+ [:lastbuilddate, @last_build_date],
88
+ [:generator, @generator]]
89
+
90
+ each {|page, title, url, description, pub_date, updated|
91
+ channel << [:item,
92
+ [:title, title],
93
+ [:link, url],
94
+ [:description, description],
95
+ [:pubdate, pub_date],
96
+ [:guid, url]]
97
+ }
98
+
99
+ rss << channel
100
+ xml << rss
101
+
102
+ return xml
103
+ end
104
+
105
+ def generate_atom
106
+ init_internal
107
+
108
+ xml = []
109
+ xml << [:'?xml', '1.0', 'utf-8']
110
+
111
+ gen_attr = {:uri=>'http://qwik.jp/'}
112
+ gen_attr[:version] = VERSION if ! @config.test
113
+
114
+ feed = [:feed, {:xmlns=>'http://www.w3.org/2005/atom'},
115
+ [:title, @title],
116
+ [:link, {:rel=>'alternate', :type=>'text/html', :href=>@site_url}],
117
+ [:link, {:rel=>'self', :type=>'application/atom+xml',
118
+ :href=>"#{@site_url}atom.xml"}],
119
+ [:generator, gen_attr, @generator],
120
+ [:updated, @updated]]
121
+
122
+ each {|page, title, url, description, pub_date, updated|
123
+ feed << [:entry,
124
+ [:title, title],
125
+ [:link, {:rel=>'alternate', :type=>'text/html', :href=>url}],
126
+ [:updated, updated],
127
+ [:summary, description],
128
+ ]
129
+ }
130
+
131
+ xml << feed
132
+
133
+ return xml
134
+ end
135
+
136
+ private
137
+
138
+ def without_testmode
139
+ org_test = @config.test
140
+ org_debug = @config.debug
141
+ @config[:test] = false
142
+ @config[:debug] = false
143
+ yield
144
+ @config[:test] = org_test
145
+ @config[:debug] = org_debug
146
+ end
147
+
148
+ def init_internal
149
+ @public = @site.is_open?
150
+
151
+ # Site data.
152
+ without_testmode {
153
+ @title = @site.title
154
+ @site_url = @site.site_url
155
+ @description = 'a private qwikWeb site.
156
+ Since this site is in private mode, the feed includes minimum data.'
157
+ @language = 'ja' # FIXME: should be configurable?
158
+ @pub_date = @site.last_page_time.rfc1123_date
159
+ }
160
+
161
+ if @public
162
+ @description = 'a public qwikWeb site.'
163
+ end
164
+
165
+ # Icon image.
166
+ @image_url = 'http://qwik.jp/.theme/i/favicon.png'
167
+
168
+ # Config data.
169
+ @last_build_date = Time.now.rfc1123_date
170
+ # @last_build_date = @req.start_time.rfc1123_date # No @req here.
171
+ @last_build_date = Time.at(0).rfc1123_date if @config.test
172
+
173
+ @updated = Time.now.rfc_date
174
+ @updated = Time.at(0).rfc_date if @config.test
175
+ @updated += 'Z'
176
+
177
+ @generator = Server.server_name
178
+ @generator = 'qwikWeb' if @config.test
179
+ end
180
+
181
+ def each
182
+ # Limit the pages to 10 pages.
183
+ @site.date_list.reverse[0..10].each {|page|
184
+ title = page.key
185
+ url = @site.page_url(page.key)
186
+ description = page.mtime.rfc1123_date
187
+ pub_date = page.mtime.rfc1123_date
188
+ updated = page.mtime.rfc_date+'Z'
189
+
190
+ yield(page, title, url, description, pub_date, updated)
191
+ }
192
+ end
193
+ end
194
+ end
195
+
196
+ if $0 == __FILE__
197
+ require 'qwik/test-common'
198
+ $test = true
199
+ end
200
+
201
+ if defined?($test) && $test
202
+ class TestActMetadata < Test::Unit::TestCase
203
+ include TestSession
204
+
205
+ def test_rss_button
206
+ res = session
207
+ ok_eq([:a, {:class=>'rss-button', :href=>'href'}, [:span, 'msg']],
208
+ @action.rss_button('href', 'msg'))
209
+ end
210
+
211
+ def test_plg_rss
212
+ ok_wi([:a, {:class=>'rss-button', :href=>'rss.xml'}, [:span, 'RSS']],
213
+ '{{rss}}')
214
+ ok_wi([:p, [:a, {:href=>'test.rss'}, 'test.rss']], '[[test.rss]]')
215
+ end
216
+
217
+ def test_plg_atom
218
+ ok_wi([:p, [:a, {:href=>'atom.xml'}, 'atom.xml']], '[[atom.xml]]')
219
+ ok_wi([:p, [:a, {:href=>'atom.xml'}, 'a']], '[[a|atom.xml]]')
220
+ ok_wi([:a, {:class=>'rss-button', :href=>'atom.xml'}, [:span, 'ATOM']],
221
+ '{{atom}}')
222
+ end
223
+
224
+ def test_all
225
+ page = @site.create_new
226
+ page.put_with_time('* t', 0)
227
+
228
+ # test_get_rss20
229
+ res = session('/test/rss.xml')
230
+ ok_eq('application/xml', res['Content-Type'])
231
+ result = HTree(res.body).to_wabisabi
232
+ ok_eq(
233
+ [[:'?xml', '1.0', 'utf-8'],
234
+ [:rss,
235
+ {:version=>'2.0'},
236
+ [:channel,
237
+ [:title, 'example.com/test'],
238
+ [:link, 'http://example.com/test/'],
239
+ [:description,
240
+ 'a private qwikWeb site.
241
+ Since this site is in private mode, the feed includes minimum data.'],
242
+ [:language, 'ja'],
243
+ [:pubdate, 'Thu, 01 Jan 1970 09:00:00 GMT'],
244
+ [:lastbuilddate, 'Thu, 01 Jan 1970 09:00:00 GMT'],
245
+ [:generator, 'qwikWeb'],
246
+ [:item,
247
+ [:title, '1'],
248
+ [:link, 'http://example.com/test/1.html'],
249
+ [:description, 'Thu, 01 Jan 1970 09:00:00 GMT'],
250
+ [:pubdate, 'Thu, 01 Jan 1970 09:00:00 GMT'],
251
+ [:guid, 'http://example.com/test/1.html']]]]], result)
252
+
253
+ # test_get_atom
254
+ res = session('/test/atom.xml')
255
+ ok_eq('application/xml', res['Content-Type'])
256
+ is "<?xml version=\"1.0\" encoding=\"utf-8\"?><feed xmlns=\"http://www.w3.org/2005/atom\"\n><title\n>example.com/test</title\n><link href=\"http://example.com/test/\" rel=\"alternate\" type=\"text/html\"\n/><link href=\"http://example.com/test/atom.xml\" rel=\"self\" type=\"application/atom+xml\"\n/><generator uri=\"http://qwik.jp/\"\n>qwikWeb</generator\n><updated\n>1970-01-01T09:00:00Z</updated\n><entry\n><title\n>1</title\n><link href=\"http://example.com/test/1.html\" rel=\"alternate\" type=\"text/html\"\n/><updated\n>1970-01-01T09:00:00Z</updated\n><summary\n>Thu, 01 Jan 1970 09:00:00 GMT</summary\n></entry\n></feed\n>", res.body
257
+
258
+ t_site_open # Public site.
259
+
260
+ # test_get_public_rss20
261
+ res = session('/test/rss.xml')
262
+ ok_eq('application/xml', res['Content-Type'])
263
+ result = HTree(res.body).to_wabisabi
264
+ assert_not_equal(
265
+ [[:'?xml', '1.0', 'utf-8'],
266
+ [:rss,
267
+ {:version=>'2.0'},
268
+ [:channel,
269
+ [:title, 'example.com/test'],
270
+ [:link, 'http://example.com/test/'],
271
+ [:description, 'a public qwikWeb site.'],
272
+ [:language, 'ja'],
273
+ [:pubdate, 'Thu, 01 Jan 1970 09:00:00 GMT'],
274
+ [:lastbuilddate, 'Thu, 01 Jan 1970 09:00:00 GMT'],
275
+ [:generator, 'qwikWeb'],
276
+ [:item,
277
+ [:title, 't'],
278
+ [:link, 'http://example.com/test/1.html'],
279
+ [:description, '* t'],
280
+ [:pubdate, 'Thu, 01 Jan 1970 09:00:00 GMT'],
281
+ [:guid, 'http://example.com/test/1.html']]]]], result)
282
+
283
+ # test_get_public_atom
284
+ res = session('/test/atom.xml')
285
+ ok_eq('application/xml', res['Content-Type'])
286
+ result = HTree(res.body).to_wabisabi
287
+ assert_not_equal(
288
+ [[:'?xml', '1.0', 'utf-8'],
289
+ [:feed,
290
+ {:xmlns=>'http://www.w3.org/2005/atom'},
291
+ [:title, 'example.com/test'],
292
+ [:link,
293
+ {:href=>'http://example.com/test/', :type=>'text/html', :rel=>'alternate'}],
294
+ [:link,
295
+ {:href=>'http://example.com/test/atom.xml',
296
+ :type=>'application/atom+xml',
297
+ :rel=>'self'}],
298
+ [:generator, {:uri=>'http://qwik.jp/', :version=>'0.5.2'}, 'qwikWeb'],
299
+ [:updated, '1970-01-01T09:00:00Z'],
300
+ [:entry,
301
+ [:title, 't'],
302
+ [:link,
303
+ {:href=>'http://example.com/test/1.html',
304
+ :type=>'text/html',
305
+ :rel=>'alternate'}],
306
+ [:updated, '1970-01-01T09:00:00Z'],
307
+ [:summary, '* t']]]], result)
308
+ end
309
+
310
+ def test_many_pages
311
+ (1..20).each {|n|
312
+ page = @site.create_new
313
+ page.put_with_time("* t#{n}", n)
314
+ }
315
+
316
+ # The RSS contains only 10 items.
317
+ res = session('/test/rss.xml')
318
+ ok_eq('application/xml', res['Content-Type'])
319
+ result = HTree(res.body).to_wabisabi
320
+ eq 19, result[1][2].length
321
+ end
322
+ end
323
+ end