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,125 @@
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 'parsedate'
6
+
7
+ class Time
8
+ def md
9
+ return strftime('%m-%d') # 01-01
10
+ end
11
+
12
+ def ymd_s
13
+ return strftime('%Y%m%d') # 20000101
14
+ end
15
+
16
+ def ymd
17
+ return strftime('%Y-%m-%d') # 2000-01-01
18
+ end
19
+
20
+ def ymdx
21
+ return strftime('%Y-%m-%d %X') # 2000-01-01 12:34:56
22
+ end
23
+
24
+ def ymdax
25
+ return strftime("%Y-%m-%d(%a) %X") # 2000-01-01(Sat) 12:34:56
26
+ end
27
+
28
+ def format_date
29
+ day = %w(�� �� �� �� �� �� �y) # 2000-01-01 (�y) 12:34:56
30
+ return strftime("%Y-%m-%d #DAY# %H:%M:%S").sub(/#DAY#/, "(#{day[wday]})")
31
+ end
32
+
33
+ def rfc1123_date
34
+ return strftime('%a, %d %b %Y %H:%M:%S GMT') # Sat, 01 Jan 2000 12:34:56 GMT
35
+ end
36
+
37
+ def rfc_date
38
+ return strftime('%Y-%m-%dT%H:%M:%S') # 2000-01-01T12:34:56
39
+ end
40
+
41
+ # ============================== date
42
+ def self.date_parse(tag)
43
+ if /\A(\d\d\d\d)-(\d\d)-(\d\d)\z/ =~ tag
44
+ return Time.local($1.to_i, $2.to_i, $3.to_i)
45
+ end
46
+ return nil
47
+ end
48
+
49
+ def self.date_abbr(now, date)
50
+ year = date.year
51
+ month = date.month
52
+ mday = date.mday
53
+ return date.ymd if now.year != date.year
54
+ return date.md
55
+ end
56
+
57
+ def self.date_emphasis(now, date, title)
58
+ diff = date - now
59
+ day = 60*60*24
60
+ if diff < -day # past
61
+ return [:span, {:class=>'past'}, title]
62
+ elsif diff < day*7 # This week.
63
+ return [:strong, title]
64
+ elsif diff < day*30 # This month.
65
+ return [:em, title]
66
+ else
67
+ return [:span, {:class=>'future'}, title]
68
+ end
69
+ end
70
+ end
71
+
72
+ if $0 == __FILE__
73
+ require 'test/unit'
74
+ $test = true
75
+ end
76
+
77
+ if defined?($test) && $test
78
+ class TestUtilTime < Test::Unit::TestCase
79
+ def test_time
80
+ t = Time.gm(2000, 1, 1, 12, 34, 56)
81
+ assert_equal '01-01', t.md
82
+ assert_equal '20000101', t.ymd_s
83
+ assert_equal '2000-01-01', t.ymd
84
+ assert_equal '2000-01-01 12:34:56', t.ymdx
85
+ assert_equal "2000-01-01(Sat) 12:34:56", t.ymdax
86
+ assert_equal "2000-01-01 (�y) 12:34:56", t.format_date
87
+ assert_equal 'Sat, 01 Jan 2000 12:34:56 GMT', t.rfc1123_date
88
+ assert_equal '2000-01-01T12:34:56', t.rfc_date
89
+ end
90
+ end
91
+
92
+ def test_date
93
+ # test_date_parse
94
+ time = Time.date_parse('1970-01-01')
95
+ assert_equal(-32400, time.to_i)
96
+
97
+ # test_date_abbr
98
+ now = Time.local(1970, 1, 1)
99
+ t2 = Time.local(1970, 1, 2)
100
+ abbr = Time.date_abbr(now, t2)
101
+ assert_equal '01-02', abbr
102
+
103
+ t2 = Time.local(1971, 1, 1)
104
+ abbr = Time.date_abbr(now, t2)
105
+ assert_equal '1971-01-01', abbr
106
+
107
+ # test_date_emphasis
108
+ now = Time.local(1970, 2, 1)
109
+ past = Time.local(1970, 1, 30)
110
+ span = Time.date_emphasis(now, past, 't')
111
+ assert_equal [:span, {:class=>'past'}, 't'], span
112
+
113
+ tomorrow = Time.local(1970, 2, 2)
114
+ span = Time.date_emphasis(now, tomorrow, 't')
115
+ assert_equal [:strong, 't'], span
116
+
117
+ nextweek = Time.local(1970, 2, 9)
118
+ span = Time.date_emphasis(now, nextweek, 't')
119
+ assert_equal [:em, 't'], span
120
+
121
+ nextmonth = Time.local(1970, 3, 3)
122
+ span = Time.date_emphasis(now, nextmonth, 't')
123
+ assert_equal [:span, {:class=>'future'}, 't'], span
124
+ end
125
+ end
@@ -0,0 +1,176 @@
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'
6
+
7
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
8
+
9
+ module WEBrick
10
+ class BasicLog
11
+ # FIXEM: Ad hoc reopen support.
12
+ def reopen
13
+ log_file = @log.path
14
+ @log.close
15
+ @log = open(log_file, "a+")
16
+ @log.sync = true
17
+ @opened = true
18
+ end
19
+ end
20
+
21
+ class HTTPRequest
22
+ # copied from gonzui-0.1
23
+ # FIXME: it should be deleted if WEBrick supports the method
24
+ def parse_accept_language
25
+ if self['Accept-Language']
26
+ tmp = []
27
+ parts = self['Accept-Language'].split(/,\s*/)
28
+ parts.each {|part|
29
+ if m = /\A([\w-]+)(?:;q=([\d]+(?:\.[\d]+)))?\z/.match(part)
30
+ lang = m[1]
31
+ q = (m[2] or 1).to_f
32
+ tmp.push([lang, q])
33
+ end
34
+ }
35
+ @accept_language =
36
+ tmp.sort_by {|lang, q| q}.map {|lang, q| lang}.reverse
37
+ else
38
+ @accept_language = ['en'] # FIXME: should be customizable?
39
+ end
40
+ end
41
+
42
+ #DEFINE_ACCEPT_LANGUAGE = true
43
+ DEFINE_ACCEPT_LANGUAGE = false
44
+ if DEFINE_ACCEPT_LANGUAGE || ! defined?(:accept_language)
45
+ def accept_language
46
+ if !defined?(@accept_language) || @accept_language.nil? ||
47
+ @accept_language.empty?
48
+ parse_accept_language
49
+ end
50
+ return @accept_language
51
+ end
52
+ end
53
+
54
+ def gzip_encoding_supported?
55
+ /\bgzip\b/.match(self['accept-encoding'])
56
+ end
57
+ end
58
+
59
+ # from webrick/httputils.rb
60
+ module HTTPUtils
61
+ undef parse_header
62
+ # FIXME: it should be deleted if WEBrick fix the problem
63
+ def parse_header(raw)
64
+ header = Hash.new([].freeze)
65
+ field = nil
66
+ raw.each{|line|
67
+ case line
68
+ #when /^([A-Za-z0-9_\-]+):\s*(.*?)\s*\z/om
69
+ #when /^([A-Za-z0-9_\-\!\#\$\%\&\'\*\+\.\^\`\|\~]+):\s*(.*?)\s*\z/om
70
+ when /^([A-Za-z0-9_\-~]+):\s*(.*?)\s*\z/om
71
+ field, value = $1, $2
72
+ field.downcase!
73
+ header[field] = [] unless header.has_key?(field)
74
+ header[field] << value
75
+ when /^\s+(.*?)\s*\z/om
76
+ value = $1
77
+ unless field
78
+ raise "bad header '#{line.inspect}'."
79
+ end
80
+ header[field][-1] << ' ' << value
81
+ else
82
+ raise "bad header '#{line.inspect}'."
83
+ end
84
+ }
85
+ header.each{|key, values|
86
+ values.each{|value|
87
+ value.strip!
88
+ value.gsub!(/\s+/, ' ')
89
+ }
90
+ }
91
+ header
92
+ end
93
+ module_function :parse_header
94
+
95
+ undef parse_query
96
+ # FIXME: it should be deleted if WEBRick fix the problem
97
+ def parse_query(str)
98
+ query = Hash.new
99
+ if str
100
+ str.split(/[&;]/).each{|x|
101
+ key, val = x.split(/=/,2)
102
+ next if key.nil?
103
+ key = unescape_form(key)
104
+ val = unescape_form(val.to_s)
105
+ val = FormData.new(val)
106
+ val.name = key
107
+ if query.has_key?(key)
108
+ query[key].append_data(val)
109
+ next
110
+ end
111
+ query[key] = val
112
+ }
113
+ end
114
+ query
115
+ end
116
+ module_function :parse_query
117
+ end
118
+ end
119
+
120
+ if $0 == __FILE__
121
+ require 'qwik/testunit'
122
+ $test = true
123
+ end
124
+
125
+ if defined?($test) && $test
126
+ class TestHTTPUtils < Test::Unit::TestCase
127
+ def test_parse_accept_language
128
+ request = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
129
+ request.instance_eval {
130
+ @header = WEBrick::HTTPUtils::parse_header('Accept-Language: ja')
131
+ @accept_language = WEBrick::HTTPUtils.parse_qvalues(self['accept-language'])
132
+ }
133
+ ok_eq(['ja'], request.accept_language)
134
+
135
+ request.instance_eval {
136
+ @header = WEBrick::HTTPUtils::parse_header('Accept-Language: ja,en-us;q=0.7,en;q=0.3')
137
+ @accept_language = WEBrick::HTTPUtils.parse_qvalues(self['accept-language'])
138
+ }
139
+ ok_eq(['ja', 'en-us', 'en'], request.accept_language)
140
+
141
+ request.instance_eval {
142
+ @header = WEBrick::HTTPUtils::parse_header('Accept-Language: ja,en-us;q=0.7,en;q=0.9')
143
+ @accept_language = WEBrick::HTTPUtils.parse_qvalues(self['accept-language'])
144
+ }
145
+ ok_eq(['ja', 'en', 'en-us'], request.accept_language)
146
+ end
147
+
148
+ def test_gzip_encofing_supported?
149
+ request = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
150
+ request.instance_eval {
151
+ @header = WEBrick::HTTPUtils::parse_header('Accept-Encoding: gzip, deflate')
152
+ }
153
+ ok_eq('gzip, deflate', request['accept-encoding'])
154
+ ok_eq(true, !!request.gzip_encoding_supported?)
155
+ end
156
+
157
+ def test_parse_header
158
+ ok_eq("{\"header\"=>[\"content\"]}",
159
+ WEBrick::HTTPUtils::parse_header('Header: content').inspect)
160
+ ok_eq('{"~"=>["~"]}',
161
+ WEBrick::HTTPUtils::parse_header("~: ~\r\n").inspect)
162
+
163
+ # real situation
164
+ str = <<EOS
165
+ Accept: */*
166
+ Accept-Language: ja
167
+ ~~~~~~~~~~: ~~~~~~~~~~
168
+ EOS
169
+ ok_eq({"accept-language"=>["ja"], "accept"=>["*/*"], "~~~~~~~~~~"=>["~~~~~~~~~~"]}, WEBrick::HTTPUtils::parse_header(str))
170
+ end
171
+
172
+ def test_parse_query
173
+ ok_eq({'a'=>'b'}, WEBrick::HTTPUtils::parse_query('&a=b'))
174
+ end
175
+ end
176
+ end
@@ -0,0 +1,11 @@
1
+ # Automatically generated.
2
+ # DO NOT EDIT!
3
+
4
+ module Qwik
5
+ VERSION = '0.8.4.1'
6
+ RELEASE_DATE = '20060807'
7
+ end
8
+
9
+ module QuickML
10
+ VERSION = '0.6q'
11
+ end
@@ -0,0 +1,163 @@
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 WabisabiBasicModule
8
+ def attr(k=nil)
9
+ attr = self[1]
10
+ return nil unless attr.is_a?(Hash)
11
+ return attr[k] if k
12
+ return attr
13
+ end
14
+
15
+ def set_attr(new_attr)
16
+ attr = self.attr
17
+ if attr
18
+ attr.update(new_attr)
19
+ else
20
+ self.insert(1, new_attr)
21
+ end
22
+ return self # For chain method.
23
+ end
24
+
25
+ def element_name
26
+ return self[0] if self[0].is_a?(Symbol)
27
+ return nil
28
+ end
29
+
30
+ def inside
31
+ self.reject {|x| x.is_a?(Symbol) || x.is_a?(Hash) }
32
+ end
33
+
34
+ def each_child
35
+ self.each {|e|
36
+ next if e.is_a?(Symbol) || e.is_a?(Hash)
37
+ yield(e)
38
+ }
39
+ end
40
+
41
+ def children
42
+ children = []
43
+ self.each_child {|child|
44
+ children << child
45
+ }
46
+ return children
47
+ end
48
+
49
+ def each_child_with_index
50
+ i = 0
51
+ self.each_child {|e|
52
+ yield(e, i)
53
+ i += 1
54
+ }
55
+ end
56
+
57
+ def text
58
+ i = 0
59
+ while true
60
+ x = self[i]
61
+ if x.is_a?(Symbol) || x.is_a?(Hash)
62
+ i += 1
63
+ next
64
+ else
65
+ break
66
+ end
67
+ end
68
+
69
+ (i...self.length).map {|i|
70
+ x = self[i]
71
+ if x.is_a?(String)
72
+ x
73
+ elsif x.is_a?(Array)
74
+ if x[0] != :"!--"
75
+ x.text
76
+ end
77
+ else
78
+ nil
79
+ end
80
+ }.join
81
+ end
82
+
83
+ def get_single
84
+ if self.length == 1 && self.first.is_a?(Array)
85
+ return self.first.get_single
86
+ end
87
+ return self
88
+ end
89
+
90
+ def each_element(elementname)
91
+ self.each {|e|
92
+ if e.is_a?(Array) && e[0] == elementname
93
+ yield(e)
94
+ end
95
+ }
96
+ end
97
+ end
98
+
99
+ class Array
100
+ include WabisabiBasicModule
101
+ end
102
+
103
+ if $0 == __FILE__
104
+ require 'test/unit'
105
+ $test = true
106
+ end
107
+
108
+ if defined?($test) && $test
109
+ class TestWabisabiBasic < Test::Unit::TestCase
110
+ def test_all
111
+ # test_attr
112
+ w = [:a, {:href=>'t1', :class=>'t2'}, 't3']
113
+ assert_equal({:href=>'t1', :class=>'t2'}, w.attr)
114
+
115
+ # test_set_attr
116
+ w = [:a]
117
+ assert_equal [:a, {:href=>'u'}], w.set_attr(:href=>'u')
118
+ assert_equal [:a, {:href=>'u', :class=>'c'}], w.set_attr(:class=>'c')
119
+
120
+ w = [:a, {:href=>'t.html'}, 't', [:b, 'b']]
121
+
122
+ # test_element_name
123
+ assert_equal nil, [].element_name
124
+ assert_equal nil, ['t'].element_name
125
+ assert_equal :b, [:b, 't'].element_name
126
+ assert_equal :a, w.element_name
127
+
128
+ # test_inside
129
+ assert_equal ['t', [:b, 'b']], w.inside
130
+
131
+ # test_each_child
132
+ w.each_child {|e|
133
+ assert(e == "t" || e == [:b, "b"])
134
+ }
135
+
136
+ # test_children
137
+ assert_equal ['t', [:b, 'b']], w.children
138
+
139
+ # test_each_child_with_index
140
+ w.each_child_with_index {|e, i|
141
+ case i
142
+ when 0; assert_equal "t", e
143
+ when 1; assert_equal [:b, "b"], e
144
+ end
145
+ }
146
+
147
+ # test_text
148
+ assert_equal 't', [:a, 't'].text
149
+ assert_equal 't', [:a, ['t']].text
150
+ assert_equal 'tb', w.text
151
+
152
+ # test_get_single
153
+ assert_equal [:a], [:a].get_single
154
+ assert_equal [:a], [[:a]].get_single
155
+ assert_equal [[:a], [:b]], [[:a], [:b]].get_single
156
+
157
+ # test_each_element
158
+ w.each_element(:b) {|e|
159
+ assert_equal [:b, "b"], e
160
+ }
161
+ end
162
+ end
163
+ end