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,33 @@
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/testunit'
7
+
8
+ class CheckUuencode < Test::Unit::TestCase
9
+ def test_uuencode
10
+ ok_eq('', [''].pack('u'))
11
+ ok_eq("!80``\n", ['a'].pack('u'))
12
+ ok_eq("#86)C\n", ['abc'].pack('u'))
13
+ ok_eq("$86)C9```\n", ['abcd'].pack('u'))
14
+ ok_eq("M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A\n",
15
+ ['a'*45].pack('u'))
16
+ ok_eq("M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A\n!80``\n", ['a'*46].pack('u'))
17
+ ok_eq("&86)C9&5F\n#9VAI\n", ['abcdefghi'].pack('u6'))
18
+
19
+ ok_eq([''], ''.unpack('u'))
20
+ ok_eq([''], ''.unpack('u'))
21
+ ok_eq(['a'], "!80``\n".unpack('u'))
22
+ ok_eq(['abc'], "#86)C\n".unpack('u'))
23
+ ok_eq(['abcd'], "$86)C9```\n".unpack('u'))
24
+ ok_eq(['a'*45], "M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A\n".unpack('u'))
25
+ ok_eq(['a'*46], "M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A\n!80``\n".unpack('u'))
26
+ ok_eq(['abcdefghi'], "&86)C9&5F\n#9VAI\n".unpack('u6'))
27
+
28
+ png = "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000\001\000\000\000\001\010\002\000\000\000\220wS\336\000\000\000\fIDATx\332c\370\377\377?\000\005\376\002\3763\022\225\024\000\000\000\000IEND\256B`\202"
29
+ uu = "MB5!.1PT*&@H````-24A\$4@````\$````!\"`(```\"0=U/>````#\$E\$051XVF/X\n8__\\_``7^`OXS\$I44`````\$E%3D2N0F\"\"\n"
30
+ ok_eq(uu, [png].pack('u'))
31
+ ok_eq([png], uu.unpack('u'))
32
+ end
33
+ end
@@ -0,0 +1,65 @@
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
+ require 'pp'
8
+ require 'qwik/autoreload'
9
+ require 'qwik/util-webrick'
10
+
11
+ begin
12
+ require 'qwik/webdavhandler'
13
+ $have_webdavhandler = true
14
+ rescue LoadError
15
+ $have_webdavhandler = false
16
+ end
17
+
18
+ if $have_webdavhandler
19
+
20
+ class MyWebDAVHandler < WEBrick::HTTPServlet::WebDAVHandler
21
+ def do_OPTIONS(req, res)
22
+ super
23
+ end
24
+
25
+ def do_PROPFIND(req, res)
26
+ super(req, res)
27
+ end
28
+ end
29
+
30
+ def start_server
31
+ $running = true
32
+ AutoReload.start(1, true) # auto reload every sec.
33
+
34
+ log = WEBrick::Log.new
35
+ log.level = WEBrick::Log::DEBUG if $DEBUG
36
+
37
+ server = WEBrick::HTTPServer.new({:Port => 10080, :Logger => log})
38
+ server.mount("/", MyWebDAVHandler, Dir.pwd)
39
+ trap(:INT) { server.shutdown }
40
+ server.start
41
+ end
42
+
43
+ if $0 == __FILE__
44
+ if ARGV[0] == '--server'
45
+ $server = true
46
+ else
47
+ require 'qwik/testunit'
48
+ $test = true
49
+ end
50
+ end
51
+
52
+ if defined?($test) && $test
53
+ class TestWebDAV < Test::Unit::TestCase
54
+ def test_all
55
+ end
56
+ end
57
+ end
58
+
59
+ if defined?($server) && $server
60
+ if ! $running
61
+ start_server
62
+ end
63
+ end
64
+
65
+ end
@@ -0,0 +1,27 @@
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/test-common'
7
+
8
+ #class TestXPath < Test::Unit::TestCase
9
+ class TestXPath
10
+ include TestSession
11
+
12
+ def test_xpath
13
+ t_add_user
14
+ page = @site.create_new
15
+ page.store('t')
16
+
17
+ session('/test/1.html')
18
+ px("//div[@class='section']", 0)
19
+
20
+ require 'xml/xpath'
21
+ xpath = XML::XPATH.new
22
+ xpath.xml = @res.body.format_xml.page_to_xml
23
+ i = xpath.execute("//div[@class='section']/p")
24
+ print "#{i} nodes :\n"
25
+ p xpath.to_a
26
+ end
27
+ end
@@ -0,0 +1,94 @@
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
+ # Only for demonstration for the PrettyBacktrace function.
10
+ def plg__qwik_test_for_raise_exception
11
+ no_such_local_variable
12
+ end
13
+ end
14
+
15
+ class PrettyBacktrace
16
+ MARGIN = 10
17
+ POS_NUM = 3
18
+ MIN_MARGIN = -1
19
+
20
+ def self.to_html(e)
21
+ margin = MARGIN
22
+ trs = e.backtrace.map {|str|
23
+ sf, sl, method = str.split(':', 3)
24
+ margin -= 1
25
+ [[:tr,
26
+ [:td, {:class=>'file'}, get_pos(sf, sl)+':', [:strong, sl]],
27
+ [:td, {:class=>'method'}, method.to_s]],
28
+ [:tr,
29
+ [:td, {:class=>'excerpt', :colspan=>'3'},
30
+ get_excerpt(sf, sl.to_i, margin)]]]
31
+ }
32
+ return [[:h3, e.to_s], [:table, {:class=>'exception'}, trs]]
33
+ end
34
+
35
+ def self.get_pos(sourcefile, sourceline)
36
+ ar = sourcefile.split('/')
37
+ ar = ar[-POS_NUM, POS_NUM] if POS_NUM < ar.length
38
+ return ar.join('/')
39
+ end
40
+
41
+ def self.get_excerpt(file, linenum, margin)
42
+ margin = MIN_MARGIN if margin < MIN_MARGIN
43
+ return '' if margin < 0
44
+ f = file.path
45
+ return '' unless f.exist?
46
+ str = f.read
47
+ b = linenum - margin - 1 # beginning
48
+ ar = str.to_a[b, margin*2+1]
49
+
50
+ table = []
51
+ ar.each_with_index {|line, num|
52
+ line = " \n" if line == "\n" # only for visual effect
53
+ n = b + num + 1
54
+ attr = {:class=>'even'}
55
+ attr = {:class=>'odd'} if n % 2 == 1
56
+ attr = {:class=>'target'} if n == linenum
57
+ table << [:tr, attr, [:th, n.to_s], [:td, [:pre, line]]]
58
+ }
59
+ return [:table, table]
60
+ end
61
+ end
62
+ end
63
+
64
+ if $0 == __FILE__
65
+ require 'qwik/test-common'
66
+ $test = true
67
+ end
68
+
69
+ if defined?($test) && $test
70
+ class TestActException < Test::Unit::TestCase
71
+ include TestSession
72
+
73
+ def test_all
74
+ t_add_user
75
+
76
+ # test_backtrace
77
+ page = @site.create_new
78
+ page.store('{{nosuch}}')
79
+ res = session('/test/1.html')
80
+ ok_in [:span, {:class=>"plg_error"}, "nosuch plugin | ",
81
+ [:strong, "nosuch"]], '//div[@class="section"]'
82
+ eq [:div, {:class=>"section"},
83
+ [[:span, {:class=>"plg_error"}, "nosuch plugin | ",
84
+ [:strong, "nosuch"]]]],
85
+ @res.body.get_path('//div[@class="section"]')
86
+
87
+ t_without_testmode {
88
+ page.store '{{_qwik_test_for_raise_exception}}'
89
+ res = session '/test/1.html'
90
+ assert_text(/\Aundefined local variable or method `no_such_local_variable' for #<Qwik::Action:/, 'h3')
91
+ }
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,111 @@
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-time'
7
+ require 'qwik/parse-plugin'
8
+
9
+ module Qwik
10
+ # ============================== exception
11
+ class QwikError < StandardError; end
12
+ class RequireLogin < QwikError; end
13
+ class RequirePost < QwikError; end
14
+ class PageNotFound < QwikError; end
15
+ class RequireNoPathArgs < QwikError; end
16
+ class RequireMember < QwikError; end
17
+ class InvalidUserError < QwikError; end
18
+ class BaseIsNotSitename < QwikError; end
19
+ class NoCorrespondingPlugin < QwikError; end # plugin
20
+
21
+ class Action
22
+ # ============================== response
23
+ def c_set_status(status=200)
24
+ @res.status = status
25
+ end
26
+
27
+ def c_set_contenttype(contenttype="text/html; charset=Shift_JIS")
28
+ @res['Content-Type'] = contenttype
29
+ end
30
+ alias c_set_html c_set_contenttype
31
+
32
+ def c_set_no_cache(pragma='no-cache', control='no-cache')
33
+ @res['Pragma'] = pragma
34
+ @res['Cache-Control'] = control
35
+ end
36
+
37
+ def c_set_location(location)
38
+ @res['Location'] = location
39
+ end
40
+
41
+ def c_set_body(body)
42
+ @res.body = body
43
+ end
44
+
45
+ # ============================== rewrite plugin
46
+ def plugin_edit(plugin_name, plugin_num)
47
+ # Get the original page.
48
+ page = @site[@req.base]
49
+ str = page.load
50
+ md5 = str.md5hex
51
+
52
+ # Split the page into paragraphs.
53
+ paragraphs = Plugin.split(str)
54
+
55
+ # Replace the content of the plugin.
56
+ written = false
57
+ new_paras = Plugin.rewrite(paragraphs, plugin_name, plugin_num) {|plugin|
58
+ plugin_org_content = plugin[2] || ''
59
+ plugin_altered_content = yield(plugin_org_content)
60
+ plugin[2] = plugin_altered_content # Destructive.
61
+ written = true
62
+ plugin
63
+ }
64
+
65
+ raise NoCorrespondingPlugin if ! written
66
+
67
+ # Reconstruct the page from the lines.
68
+ new_page_str = Plugin.join(new_paras)
69
+
70
+ page.put_with_md5(new_page_str, md5)
71
+
72
+ return nil
73
+ end
74
+ end
75
+ end
76
+
77
+ if $0 == __FILE__
78
+ require 'qwik/test-common'
79
+ $test = true
80
+ end
81
+
82
+ if defined?($test) && $test
83
+ class TestCommon < Test::Unit::TestCase
84
+ include TestSession
85
+
86
+ def test_response
87
+ res = session
88
+
89
+ # test_c_set_status
90
+ @action.c_set_status(7743)
91
+ ok_eq(7743, res.status)
92
+
93
+ # test_c_set_contenttype
94
+ @action.c_set_contenttype
95
+ ok_eq("text/html; charset=Shift_JIS", res['Content-Type'])
96
+
97
+ # test_c_set_no_cache
98
+ @action.c_set_no_cache
99
+ ok_eq('no-cache', res['Pragma'])
100
+ ok_eq('no-cache', res['Cache-Control'])
101
+
102
+ # test_c_set_body
103
+ @action.c_set_body('body')
104
+ ok_eq('body', res.body)
105
+ end
106
+
107
+ def nu_test_rewrite_plugin
108
+ # This is tested in act-table.rb
109
+ end
110
+ end
111
+ end
@@ -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
+ # ========== error check
10
+ def c_login?
11
+ return @req.user
12
+ end
13
+
14
+ def c_require_login # You must logged in.
15
+ raise RequireLogin unless c_login?
16
+ end
17
+
18
+ def c_member?
19
+ c_login? && @site.member.exist?(@req.user)
20
+ end
21
+
22
+ def c_require_member # You must be a member of this group.
23
+ raise RequireMember unless c_member?
24
+ end
25
+
26
+ def c_require_post
27
+ raise RequirePost unless @req.is_post?
28
+ end
29
+
30
+ def c_require_page_exist
31
+ raise PageNotFound if @site[@req.base].nil?
32
+ end
33
+
34
+ def c_require_no_path_args
35
+ raise RequireNoPathArgs if 0 < @req.path_args.length
36
+ end
37
+
38
+ def c_require_no_ext_args
39
+ raise 'no ext args' if 0 < @req.ext_args.length
40
+ end
41
+
42
+ def c_require_pagename
43
+ raise 'pagename is nil' if @req.base.nil?
44
+ # FIXME: But, pagename is always not nil for now.
45
+ end
46
+
47
+ def c_require_base_is_sitename
48
+ raise BaseIsNotSitename if @req.base != @req.sitename
49
+ end
50
+
51
+ def c_require_lib(lib)
52
+ begin
53
+ require lib
54
+ rescue
55
+ raise "there is no #{lib} library"
56
+ end
57
+ end
58
+ end
59
+ end
60
+
61
+ if $0 == __FILE__
62
+ require 'qwik/test-common'
63
+ $test = true
64
+ end
65
+
66
+ if defined?($test) && $test
67
+ class TestActCondition < Test::Unit::TestCase
68
+ include TestSession
69
+
70
+ def test_condition
71
+ res = session
72
+
73
+ # test_c_login
74
+ ok_eq(true, !!@action.c_login?)
75
+
76
+ # test_c_require_login
77
+ @action.c_require_login # ok, nothing happen.
78
+
79
+ # test_c_member
80
+ ok_eq(false, @action.c_member?)
81
+
82
+ # test_c_require_member
83
+ assert_raise(Qwik::RequireMember) {
84
+ @action.c_require_member
85
+ }
86
+
87
+ t_add_user
88
+
89
+ # test_c_member, again
90
+ ok_eq(true, @action.c_member?)
91
+
92
+ # test_c_require_member, again
93
+ @action.c_require_member # nothing happen
94
+
95
+ # test_c_require_post
96
+ res = session {|req|
97
+ ok_eq(false, req.is_post?)
98
+ }
99
+ assert_raise(Qwik::RequirePost) {
100
+ @action.c_require_post
101
+ }
102
+ res = session('POST /test/1.html')
103
+ @action.c_require_post # nothing happen
104
+
105
+ # test_c_require_page_exist
106
+ res = session('/test/1.html') {|req|
107
+ ok_eq(nil, @site[req.base])
108
+ }
109
+ assert_raise(Qwik::PageNotFound) {
110
+ @action.c_require_page_exist
111
+ }
112
+
113
+ # test_c_require_no_path_args
114
+ res = session('/test/1.html/1') {|req|
115
+ ok_eq(['1'], req.path_args)
116
+ }
117
+ assert_raise(Qwik::RequireNoPathArgs) {
118
+ @action.c_require_no_path_args
119
+ }
120
+
121
+ # test_c_require_no_ext_args
122
+ res = session('/test/1.t.html') {|req|
123
+ ok_eq(['t'], req.ext_args)
124
+ }
125
+ assert_raise(RuntimeError) {
126
+ @action.c_require_no_ext_args
127
+ }
128
+
129
+ # test_c_require_pagename
130
+ # FIXME: Pagename is always not nil for now.
131
+
132
+ # test_c_require_base_is_sitename
133
+ res = session('/test/1.t.html') {|req|
134
+ ok_eq(['t'], req.ext_args)
135
+ }
136
+ assert_raise(RuntimeError) {
137
+ @action.c_require_no_ext_args
138
+ }
139
+
140
+ end
141
+ end
142
+ end