qwik2md 0.1.0

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. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.travis.yml +4 -0
  4. data/Gemfile +4 -0
  5. data/README.md +36 -0
  6. data/Rakefile +10 -0
  7. data/bin/console +14 -0
  8. data/bin/setup +8 -0
  9. data/exe/qwik2md +17 -0
  10. data/lib/qwik2md/version.rb +3 -0
  11. data/lib/qwik2md.rb +39 -0
  12. data/qwik2md.gemspec +30 -0
  13. data/vendor/qwik/AUTHORS +10 -0
  14. data/vendor/qwik/COPYING +340 -0
  15. data/vendor/qwik/COPYRIGHT +346 -0
  16. data/vendor/qwik/lib/qwik/Makefile +63 -0
  17. data/vendor/qwik/lib/qwik/Rakefile +17 -0
  18. data/vendor/qwik/lib/qwik/act-aa.rb +83 -0
  19. data/vendor/qwik/lib/qwik/act-archive.rb +386 -0
  20. data/vendor/qwik/lib/qwik/act-attach.rb +304 -0
  21. data/vendor/qwik/lib/qwik/act-backup.rb +236 -0
  22. data/vendor/qwik/lib/qwik/act-basic.rb +325 -0
  23. data/vendor/qwik/lib/qwik/act-book.rb +161 -0
  24. data/vendor/qwik/lib/qwik/act-calc.rb +371 -0
  25. data/vendor/qwik/lib/qwik/act-charset.rb +251 -0
  26. data/vendor/qwik/lib/qwik/act-christel.rb +112 -0
  27. data/vendor/qwik/lib/qwik/act-chronology.rb +149 -0
  28. data/vendor/qwik/lib/qwik/act-code.rb +155 -0
  29. data/vendor/qwik/lib/qwik/act-comment.rb +554 -0
  30. data/vendor/qwik/lib/qwik/act-config.rb +49 -0
  31. data/vendor/qwik/lib/qwik/act-counter.rb +125 -0
  32. data/vendor/qwik/lib/qwik/act-day.rb +96 -0
  33. data/vendor/qwik/lib/qwik/act-describe.rb +135 -0
  34. data/vendor/qwik/lib/qwik/act-diary.rb +109 -0
  35. data/vendor/qwik/lib/qwik/act-edit.rb +317 -0
  36. data/vendor/qwik/lib/qwik/act-embed-html.rb +296 -0
  37. data/vendor/qwik/lib/qwik/act-emode.rb +150 -0
  38. data/vendor/qwik/lib/qwik/act-event.rb +187 -0
  39. data/vendor/qwik/lib/qwik/act-file.rb +303 -0
  40. data/vendor/qwik/lib/qwik/act-files.rb +771 -0
  41. data/vendor/qwik/lib/qwik/act-getpass.rb +295 -0
  42. data/vendor/qwik/lib/qwik/act-history.rb +136 -0
  43. data/vendor/qwik/lib/qwik/act-html.rb +204 -0
  44. data/vendor/qwik/lib/qwik/act-httpauth.rb +147 -0
  45. data/vendor/qwik/lib/qwik/act-include.rb +142 -0
  46. data/vendor/qwik/lib/qwik/act-interwiki.rb +189 -0
  47. data/vendor/qwik/lib/qwik/act-isearch.rb +109 -0
  48. data/vendor/qwik/lib/qwik/act-keywords.rb +137 -0
  49. data/vendor/qwik/lib/qwik/act-lang.rb +81 -0
  50. data/vendor/qwik/lib/qwik/act-license.rb +63 -0
  51. data/vendor/qwik/lib/qwik/act-list.rb +287 -0
  52. data/vendor/qwik/lib/qwik/act-login.rb +410 -0
  53. data/vendor/qwik/lib/qwik/act-logout.rb +60 -0
  54. data/vendor/qwik/lib/qwik/act-mail.rb +159 -0
  55. data/vendor/qwik/lib/qwik/act-map.rb +292 -0
  56. data/vendor/qwik/lib/qwik/act-md5.rb +42 -0
  57. data/vendor/qwik/lib/qwik/act-mdlb.rb +741 -0
  58. data/vendor/qwik/lib/qwik/act-media.rb +416 -0
  59. data/vendor/qwik/lib/qwik/act-member.rb +157 -0
  60. data/vendor/qwik/lib/qwik/act-menu.rb +142 -0
  61. data/vendor/qwik/lib/qwik/act-metadata.rb +323 -0
  62. data/vendor/qwik/lib/qwik/act-mlsubmitform.rb +49 -0
  63. data/vendor/qwik/lib/qwik/act-monitor.rb +167 -0
  64. data/vendor/qwik/lib/qwik/act-new.rb +418 -0
  65. data/vendor/qwik/lib/qwik/act-pagelist.rb +248 -0
  66. data/vendor/qwik/lib/qwik/act-password.rb +145 -0
  67. data/vendor/qwik/lib/qwik/act-plan.rb +210 -0
  68. data/vendor/qwik/lib/qwik/act-povray.rb +230 -0
  69. data/vendor/qwik/lib/qwik/act-presen.rb +380 -0
  70. data/vendor/qwik/lib/qwik/act-redirect.rb +133 -0
  71. data/vendor/qwik/lib/qwik/act-ring.rb +1071 -0
  72. data/vendor/qwik/lib/qwik/act-rrefs.rb +255 -0
  73. data/vendor/qwik/lib/qwik/act-ruby.rb +116 -0
  74. data/vendor/qwik/lib/qwik/act-sample.rb +170 -0
  75. data/vendor/qwik/lib/qwik/act-save.rb +295 -0
  76. data/vendor/qwik/lib/qwik/act-schedule.rb +374 -0
  77. data/vendor/qwik/lib/qwik/act-search.rb +180 -0
  78. data/vendor/qwik/lib/qwik/act-searchwords.rb +51 -0
  79. data/vendor/qwik/lib/qwik/act-sendpass.rb +83 -0
  80. data/vendor/qwik/lib/qwik/act-site.rb +89 -0
  81. data/vendor/qwik/lib/qwik/act-sitebackup.rb +419 -0
  82. data/vendor/qwik/lib/qwik/act-sitelog.rb +118 -0
  83. data/vendor/qwik/lib/qwik/act-smil.rb +299 -0
  84. data/vendor/qwik/lib/qwik/act-status.rb +220 -0
  85. data/vendor/qwik/lib/qwik/act-style.rb +608 -0
  86. data/vendor/qwik/lib/qwik/act-table.rb +263 -0
  87. data/vendor/qwik/lib/qwik/act-tableform.rb +241 -0
  88. data/vendor/qwik/lib/qwik/act-tag.rb +103 -0
  89. data/vendor/qwik/lib/qwik/act-text.rb +70 -0
  90. data/vendor/qwik/lib/qwik/act-textarea.rb +164 -0
  91. data/vendor/qwik/lib/qwik/act-theme.rb +346 -0
  92. data/vendor/qwik/lib/qwik/act-toc.rb +112 -0
  93. data/vendor/qwik/lib/qwik/act-typekey.rb +198 -0
  94. data/vendor/qwik/lib/qwik/act-under-const.rb +94 -0
  95. data/vendor/qwik/lib/qwik/act-webservice.rb +321 -0
  96. data/vendor/qwik/lib/qwik/act-wema.rb +558 -0
  97. data/vendor/qwik/lib/qwik/act-wysiwyg.rb +238 -0
  98. data/vendor/qwik/lib/qwik/action.rb +325 -0
  99. data/vendor/qwik/lib/qwik/autoreload.rb +98 -0
  100. data/vendor/qwik/lib/qwik/bench-bench.rb +28 -0
  101. data/vendor/qwik/lib/qwik/bench-emode.rb +47 -0
  102. data/vendor/qwik/lib/qwik/bench-format-xml.rb +70 -0
  103. data/vendor/qwik/lib/qwik/bench-large-table.rb +62 -0
  104. data/vendor/qwik/lib/qwik/bench-md5.rb +14 -0
  105. data/vendor/qwik/lib/qwik/bench-module-session.rb +19 -0
  106. data/vendor/qwik/lib/qwik/bench-page.rb +50 -0
  107. data/vendor/qwik/lib/qwik/bench-s-md5.rb +28 -0
  108. data/vendor/qwik/lib/qwik/bench-session.rb +25 -0
  109. data/vendor/qwik/lib/qwik/bench-textformat.rb +31 -0
  110. data/vendor/qwik/lib/qwik/catalog-factory.rb +91 -0
  111. data/vendor/qwik/lib/qwik/catalog-ja.rb +479 -0
  112. data/vendor/qwik/lib/qwik/catalog-ml-ja.rb +145 -0
  113. data/vendor/qwik/lib/qwik/check-act-monitor.rb +112 -0
  114. data/vendor/qwik/lib/qwik/check-act-monitor2.rb +46 -0
  115. data/vendor/qwik/lib/qwik/check-act-theme.rb +27 -0
  116. data/vendor/qwik/lib/qwik/check-event.rb +112 -0
  117. data/vendor/qwik/lib/qwik/check-event2.rb +55 -0
  118. data/vendor/qwik/lib/qwik/check-htree-rexml.rb +77 -0
  119. data/vendor/qwik/lib/qwik/check-htree.rb +51 -0
  120. data/vendor/qwik/lib/qwik/check-libxml.rb +135 -0
  121. data/vendor/qwik/lib/qwik/check-many-pages.rb +47 -0
  122. data/vendor/qwik/lib/qwik/check-monitor.rb +33 -0
  123. data/vendor/qwik/lib/qwik/check-observer.rb +67 -0
  124. data/vendor/qwik/lib/qwik/check-server.rb +61 -0
  125. data/vendor/qwik/lib/qwik/check-uuencode.rb +33 -0
  126. data/vendor/qwik/lib/qwik/check-webdav.rb +65 -0
  127. data/vendor/qwik/lib/qwik/check-xml-xpath.rb +27 -0
  128. data/vendor/qwik/lib/qwik/common-backtrace.rb +94 -0
  129. data/vendor/qwik/lib/qwik/common-basic.rb +111 -0
  130. data/vendor/qwik/lib/qwik/common-condition.rb +142 -0
  131. data/vendor/qwik/lib/qwik/common-error.rb +48 -0
  132. data/vendor/qwik/lib/qwik/common-gettext.rb +50 -0
  133. data/vendor/qwik/lib/qwik/common-javascript.rb +45 -0
  134. data/vendor/qwik/lib/qwik/common-notice.rb +132 -0
  135. data/vendor/qwik/lib/qwik/common-plain.rb +105 -0
  136. data/vendor/qwik/lib/qwik/common-plugin.rb +111 -0
  137. data/vendor/qwik/lib/qwik/common-res.rb +76 -0
  138. data/vendor/qwik/lib/qwik/common-resolve.rb +92 -0
  139. data/vendor/qwik/lib/qwik/common-send.rb +171 -0
  140. data/vendor/qwik/lib/qwik/common-session.rb +139 -0
  141. data/vendor/qwik/lib/qwik/common-surface.rb +261 -0
  142. data/vendor/qwik/lib/qwik/common-url.rb +90 -0
  143. data/vendor/qwik/lib/qwik/compat/Makefile +12 -0
  144. data/vendor/qwik/lib/qwik/compat/add_load_path.rb +1 -0
  145. data/vendor/qwik/lib/qwik/config.rb +299 -0
  146. data/vendor/qwik/lib/qwik/db-b-backup.rb +142 -0
  147. data/vendor/qwik/lib/qwik/db-backup.rb +184 -0
  148. data/vendor/qwik/lib/qwik/db-berkeley.rb +306 -0
  149. data/vendor/qwik/lib/qwik/db-filesystem.rb +305 -0
  150. data/vendor/qwik/lib/qwik/db-indexer.rb +154 -0
  151. data/vendor/qwik/lib/qwik/db-searchwords.rb +238 -0
  152. data/vendor/qwik/lib/qwik/description-ja.rb +267 -0
  153. data/vendor/qwik/lib/qwik/description.rb +256 -0
  154. data/vendor/qwik/lib/qwik/dev-add-copyright.rb +23 -0
  155. data/vendor/qwik/lib/qwik/dev-backup.rb +24 -0
  156. data/vendor/qwik/lib/qwik/dev-bench.rb +175 -0
  157. data/vendor/qwik/lib/qwik/dev-calctime.rb +52 -0
  158. data/vendor/qwik/lib/qwik/dev-css-compressor.rb +60 -0
  159. data/vendor/qwik/lib/qwik/dev-extract-catalog.rb +102 -0
  160. data/vendor/qwik/lib/qwik/dev-js-compressor.rb +73 -0
  161. data/vendor/qwik/lib/qwik/dev-release.rb +235 -0
  162. data/vendor/qwik/lib/qwik/dev-replace.rb +353 -0
  163. data/vendor/qwik/lib/qwik/dev-sendmail.rb +25 -0
  164. data/vendor/qwik/lib/qwik/farm.rb +283 -0
  165. data/vendor/qwik/lib/qwik/gettext.rb +56 -0
  166. data/vendor/qwik/lib/qwik/group-cond.rb +157 -0
  167. data/vendor/qwik/lib/qwik/group-config.rb +247 -0
  168. data/vendor/qwik/lib/qwik/group-confirm.rb +147 -0
  169. data/vendor/qwik/lib/qwik/group-db.rb +326 -0
  170. data/vendor/qwik/lib/qwik/group-mail.rb +195 -0
  171. data/vendor/qwik/lib/qwik/group-member.rb +307 -0
  172. data/vendor/qwik/lib/qwik/group-sendmail.rb +231 -0
  173. data/vendor/qwik/lib/qwik/group-site.rb +374 -0
  174. data/vendor/qwik/lib/qwik/group-sweep.rb +63 -0
  175. data/vendor/qwik/lib/qwik/group.rb +157 -0
  176. data/vendor/qwik/lib/qwik/helper.rb +6 -0
  177. data/vendor/qwik/lib/qwik/html-generator.rb +104 -0
  178. data/vendor/qwik/lib/qwik/html-to-wabisabi.rb +148 -0
  179. data/vendor/qwik/lib/qwik/htree-diff.rb +87 -0
  180. data/vendor/qwik/lib/qwik/htree-format-xml.rb +57 -0
  181. data/vendor/qwik/lib/qwik/htree-generator.rb +144 -0
  182. data/vendor/qwik/lib/qwik/htree-get.rb +251 -0
  183. data/vendor/qwik/lib/qwik/htree-html-generator.rb +179 -0
  184. data/vendor/qwik/lib/qwik/htree-template.rb +263 -0
  185. data/vendor/qwik/lib/qwik/htree-to-wabisabi.rb +171 -0
  186. data/vendor/qwik/lib/qwik/loadlib.rb +79 -0
  187. data/vendor/qwik/lib/qwik/logger.rb +115 -0
  188. data/vendor/qwik/lib/qwik/mail-body.rb +171 -0
  189. data/vendor/qwik/lib/qwik/mail-header.rb +474 -0
  190. data/vendor/qwik/lib/qwik/mail-multipart.rb +193 -0
  191. data/vendor/qwik/lib/qwik/mail-parse.rb +147 -0
  192. data/vendor/qwik/lib/qwik/mail.rb +341 -0
  193. data/vendor/qwik/lib/qwik/mailaddress.rb +83 -0
  194. data/vendor/qwik/lib/qwik/mdlb-model.rb +81 -0
  195. data/vendor/qwik/lib/qwik/mdlb-sample.rb +324 -0
  196. data/vendor/qwik/lib/qwik/ml-catalog-factory.rb +27 -0
  197. data/vendor/qwik/lib/qwik/ml-exception.rb +15 -0
  198. data/vendor/qwik/lib/qwik/ml-generator.rb +28 -0
  199. data/vendor/qwik/lib/qwik/ml-gettext.rb +137 -0
  200. data/vendor/qwik/lib/qwik/ml-logger.rb +82 -0
  201. data/vendor/qwik/lib/qwik/ml-memory.rb +65 -0
  202. data/vendor/qwik/lib/qwik/ml-msg-validator.rb +86 -0
  203. data/vendor/qwik/lib/qwik/ml-processor.rb +609 -0
  204. data/vendor/qwik/lib/qwik/ml-quickml-server.rb +122 -0
  205. data/vendor/qwik/lib/qwik/ml-sendmail.rb +0 -0
  206. data/vendor/qwik/lib/qwik/ml-server.rb +107 -0
  207. data/vendor/qwik/lib/qwik/ml-session.rb +348 -0
  208. data/vendor/qwik/lib/qwik/ml-sweeper.rb +101 -0
  209. data/vendor/qwik/lib/qwik/mock-logger.rb +65 -0
  210. data/vendor/qwik/lib/qwik/mock-sendmail.rb +78 -0
  211. data/vendor/qwik/lib/qwik/mock-socket.rb +82 -0
  212. data/vendor/qwik/lib/qwik/modulobe.rb +406 -0
  213. data/vendor/qwik/lib/qwik/mongrel-server.rb +72 -0
  214. data/vendor/qwik/lib/qwik/page-files.rb +249 -0
  215. data/vendor/qwik/lib/qwik/page-generate.rb +82 -0
  216. data/vendor/qwik/lib/qwik/page-get.rb +262 -0
  217. data/vendor/qwik/lib/qwik/page-images.rb +168 -0
  218. data/vendor/qwik/lib/qwik/page-put.rb +128 -0
  219. data/vendor/qwik/lib/qwik/page-rrefs.rb +154 -0
  220. data/vendor/qwik/lib/qwik/page-title.rb +0 -0
  221. data/vendor/qwik/lib/qwik/page-wikidb.rb +234 -0
  222. data/vendor/qwik/lib/qwik/page.rb +67 -0
  223. data/vendor/qwik/lib/qwik/pages.rb +444 -0
  224. data/vendor/qwik/lib/qwik/parse-plugin.rb +249 -0
  225. data/vendor/qwik/lib/qwik/parser-emode.rb +116 -0
  226. data/vendor/qwik/lib/qwik/parser-inline.rb +272 -0
  227. data/vendor/qwik/lib/qwik/parser.rb +349 -0
  228. data/vendor/qwik/lib/qwik/password.rb +183 -0
  229. data/vendor/qwik/lib/qwik/periodic.rb +79 -0
  230. data/vendor/qwik/lib/qwik/qp.rb +56 -0
  231. data/vendor/qwik/lib/qwik/qwik-service.rb +341 -0
  232. data/vendor/qwik/lib/qwik/qwik.rb +5 -0
  233. data/vendor/qwik/lib/qwik/qwikweb-adduser.rb +34 -0
  234. data/vendor/qwik/lib/qwik/qwikweb-catalog-validator.rb +110 -0
  235. data/vendor/qwik/lib/qwik/qwikweb-incgen.rb +28 -0
  236. data/vendor/qwik/lib/qwik/qwikweb-makesite.rb +41 -0
  237. data/vendor/qwik/lib/qwik/qwikweb-server.rb +44 -0
  238. data/vendor/qwik/lib/qwik/qwikweb-showpassword.rb +26 -0
  239. data/vendor/qwik/lib/qwik/qwikweb-watchlog.rb +67 -0
  240. data/vendor/qwik/lib/qwik/request-path.rb +304 -0
  241. data/vendor/qwik/lib/qwik/request-ua.rb +76 -0
  242. data/vendor/qwik/lib/qwik/request-webrick.rb +81 -0
  243. data/vendor/qwik/lib/qwik/request.rb +91 -0
  244. data/vendor/qwik/lib/qwik/resolve-tdiary.rb +292 -0
  245. data/vendor/qwik/lib/qwik/resolve.rb +121 -0
  246. data/vendor/qwik/lib/qwik/response.rb +228 -0
  247. data/vendor/qwik/lib/qwik/server-memory.rb +57 -0
  248. data/vendor/qwik/lib/qwik/server-webrick.rb +102 -0
  249. data/vendor/qwik/lib/qwik/server.rb +252 -0
  250. data/vendor/qwik/lib/qwik/site-config.rb +149 -0
  251. data/vendor/qwik/lib/qwik/site-db.rb +136 -0
  252. data/vendor/qwik/lib/qwik/site-event.rb +162 -0
  253. data/vendor/qwik/lib/qwik/site-files.rb +86 -0
  254. data/vendor/qwik/lib/qwik/site-group.rb +103 -0
  255. data/vendor/qwik/lib/qwik/site-index.rb +47 -0
  256. data/vendor/qwik/lib/qwik/site-log.rb +64 -0
  257. data/vendor/qwik/lib/qwik/site-member.rb +230 -0
  258. data/vendor/qwik/lib/qwik/site-monitor.rb +97 -0
  259. data/vendor/qwik/lib/qwik/site-pages.rb +62 -0
  260. data/vendor/qwik/lib/qwik/site-plan.rb +139 -0
  261. data/vendor/qwik/lib/qwik/site-report.rb +282 -0
  262. data/vendor/qwik/lib/qwik/site-resolve.rb +230 -0
  263. data/vendor/qwik/lib/qwik/site-rrefs.rb +18 -0
  264. data/vendor/qwik/lib/qwik/site-search.rb +180 -0
  265. data/vendor/qwik/lib/qwik/site-timeline.rb +153 -0
  266. data/vendor/qwik/lib/qwik/site-url.rb +189 -0
  267. data/vendor/qwik/lib/qwik/site.rb +76 -0
  268. data/vendor/qwik/lib/qwik/smil-time.rb +105 -0
  269. data/vendor/qwik/lib/qwik/smtp-session.rb +331 -0
  270. data/vendor/qwik/lib/qwik/template-generator.rb +149 -0
  271. data/vendor/qwik/lib/qwik/template.rb +85 -0
  272. data/vendor/qwik/lib/qwik/test-common.rb +10 -0
  273. data/vendor/qwik/lib/qwik/test-ml-info.rb +225 -0
  274. data/vendor/qwik/lib/qwik/test-module-ml.rb +142 -0
  275. data/vendor/qwik/lib/qwik/test-module-path.rb +110 -0
  276. data/vendor/qwik/lib/qwik/test-module-public.rb +70 -0
  277. data/vendor/qwik/lib/qwik/test-module-server.rb +98 -0
  278. data/vendor/qwik/lib/qwik/test-module-session.rb +264 -0
  279. data/vendor/qwik/lib/qwik/test-module-suite.rb +91 -0
  280. data/vendor/qwik/lib/qwik/test-ms-applemail.rb +59 -0
  281. data/vendor/qwik/lib/qwik/test-ms-attach.rb +174 -0
  282. data/vendor/qwik/lib/qwik/test-ms-basic.rb +40 -0
  283. data/vendor/qwik/lib/qwik/test-ms-close.rb +35 -0
  284. data/vendor/qwik/lib/qwik/test-ms-confirm.rb +75 -0
  285. data/vendor/qwik/lib/qwik/test-ms-ignore-spam.rb +57 -0
  286. data/vendor/qwik/lib/qwik/test-ms-japanese.rb +97 -0
  287. data/vendor/qwik/lib/qwik/test-ms-jfilename.rb +82 -0
  288. data/vendor/qwik/lib/qwik/test-ms-large.rb +58 -0
  289. data/vendor/qwik/lib/qwik/test-ms-member.rb +103 -0
  290. data/vendor/qwik/lib/qwik/test-ms-multipart.rb +84 -0
  291. data/vendor/qwik/lib/qwik/test-ms-org.rb +129 -0
  292. data/vendor/qwik/lib/qwik/test-ms-plan.rb +130 -0
  293. data/vendor/qwik/lib/qwik/test-ms-post.rb +53 -0
  294. data/vendor/qwik/lib/qwik/test-ms-quopri.rb +76 -0
  295. data/vendor/qwik/lib/qwik/test-sub-quopri.rb +45 -0
  296. data/vendor/qwik/lib/qwik/test-submit-base64.rb +59 -0
  297. data/vendor/qwik/lib/qwik/test-submit-forward.rb +61 -0
  298. data/vendor/qwik/lib/qwik/test-submit-html-mail.rb +52 -0
  299. data/vendor/qwik/lib/qwik/test-submit-japanese.rb +135 -0
  300. data/vendor/qwik/lib/qwik/test-submit-jfilename.rb +144 -0
  301. data/vendor/qwik/lib/qwik/test-submit-uuencode.rb +71 -0
  302. data/vendor/qwik/lib/qwik/test-suite-all.rb +8 -0
  303. data/vendor/qwik/lib/qwik/test-suite-basic.rb +9 -0
  304. data/vendor/qwik/lib/qwik/test-suite-ml.rb +9 -0
  305. data/vendor/qwik/lib/qwik/test-typekey.rb +64 -0
  306. data/vendor/qwik/lib/qwik/testunit.rb +45 -0
  307. data/vendor/qwik/lib/qwik/tokenizer-inline.rb +288 -0
  308. data/vendor/qwik/lib/qwik/tokenizer.rb +331 -0
  309. data/vendor/qwik/lib/qwik/typekey.rb +160 -0
  310. data/vendor/qwik/lib/qwik/util-basic.rb +135 -0
  311. data/vendor/qwik/lib/qwik/util-charset.rb +331 -0
  312. data/vendor/qwik/lib/qwik/util-css.rb +56 -0
  313. data/vendor/qwik/lib/qwik/util-csv-tokenizer.rb +113 -0
  314. data/vendor/qwik/lib/qwik/util-filename.rb +112 -0
  315. data/vendor/qwik/lib/qwik/util-pathname.rb +202 -0
  316. data/vendor/qwik/lib/qwik/util-pid.rb +58 -0
  317. data/vendor/qwik/lib/qwik/util-safe.rb +67 -0
  318. data/vendor/qwik/lib/qwik/util-sendmail.rb +273 -0
  319. data/vendor/qwik/lib/qwik/util-string.rb +202 -0
  320. data/vendor/qwik/lib/qwik/util-time.rb +125 -0
  321. data/vendor/qwik/lib/qwik/util-webrick.rb +176 -0
  322. data/vendor/qwik/lib/qwik/version.rb +11 -0
  323. data/vendor/qwik/lib/qwik/wabisabi-basic.rb +163 -0
  324. data/vendor/qwik/lib/qwik/wabisabi-diff.rb +130 -0
  325. data/vendor/qwik/lib/qwik/wabisabi-format-xml.rb +310 -0
  326. data/vendor/qwik/lib/qwik/wabisabi-generator.rb +262 -0
  327. data/vendor/qwik/lib/qwik/wabisabi-index.rb +174 -0
  328. data/vendor/qwik/lib/qwik/wabisabi-table.rb +212 -0
  329. data/vendor/qwik/lib/qwik/wabisabi-template.rb +295 -0
  330. data/vendor/qwik/lib/qwik/wabisabi-to-htree.rb +111 -0
  331. data/vendor/qwik/lib/qwik/wabisabi-to-wiki.rb +690 -0
  332. data/vendor/qwik/lib/qwik/wabisabi-traverse.rb +207 -0
  333. data/vendor/qwik/lib/qwik/wabisabi-validator.rb +116 -0
  334. data/vendor/qwik/lib/qwik/wabisabi.rb +5 -0
  335. metadata +492 -0
@@ -0,0 +1,236 @@
1
+ # -*- coding: shift_jis -*-
2
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
3
+ # This is free software with ABSOLUTELY NO WARRANTY.
4
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
5
+
6
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
7
+ require 'qwik/wabisabi-diff'
8
+
9
+ module Qwik
10
+ class Action
11
+ D_ExtBackup = {
12
+ :dt => 'Backup pages',
13
+ :dd => 'You can see backup of the page.',
14
+ :dc => "* How to
15
+ Go edit page, follow 'Backup' link in the right side.
16
+ You see the backup list of the page.
17
+ "
18
+ }
19
+
20
+ D_ExtBackup_ja = {
21
+ :dt => 'ページ・バックアップ',
22
+ :dd => 'ページのバックアップを見ることができます。',
23
+ :dc => "* 使い方
24
+ 編集画面の右側に「バックアップ」というリンクがあります。
25
+ そのリンクより、ページのバックアップリストを見ることができます。
26
+ "
27
+ }
28
+
29
+ def plg_backup_list
30
+ return if @req.user.nil?
31
+ return if ! defined?(@req.base) || @req.base.nil?
32
+ return page_attribute('backup', _('Show backup'))
33
+ end
34
+
35
+ def ext_backup
36
+ c_require_pagename
37
+ c_require_member
38
+ #c_require_page_exist # does not require the page is exist
39
+ # because you can see the list of the page that is already deleted.
40
+ c_require_no_path_args
41
+
42
+ args = @req.ext_args
43
+ if 0 < args.length # has target
44
+ return backup_show(@site, @req.base, args)
45
+ end
46
+
47
+ return backup_list_page(@site, @req.base)
48
+ end
49
+
50
+ def backup_show(site, key, args)
51
+ page = site[key]
52
+
53
+ return c_nerror('only one time stamp') if 1 < args.length
54
+ time = args.shift
55
+ return c_nerror('should be number') unless /\A[0-9]+\z/ =~ time
56
+
57
+ # Is the backup exist?
58
+ time = Time.at(time.to_i)
59
+ unless site.backupdb.exist?(key, time)
60
+ return c_notfound('not found')
61
+ end
62
+
63
+ str = site.backupdb.get(key, time) # Get the old content.
64
+ =begin
65
+ # Do not show diffs for now. (2009/9/1)
66
+ list = backup_list(site, key) # Get the list.
67
+
68
+ # Get the index of the content.
69
+ index = nil
70
+ list.each_with_index {|a, i|
71
+ if a[1] == time.to_i
72
+ index = i
73
+ end
74
+ }
75
+ return c_notfound('no data?') if index.nil?
76
+
77
+ msg = ''
78
+ if index == 0
79
+ msg = [:p, _('This is the first page.')]
80
+ else
81
+ # FIXME: fix diff function. (2009/9/1)
82
+ diff = backup_diff(list, index-1, index)
83
+ msg = [:div, {:class=>'differ'}, *diff]
84
+ end
85
+
86
+ return c_plain("#{key} @ #{time.ymdax}") {
87
+ [[:div, {:class=>'day'},
88
+ [:h2, _('Difference from the previous page')],
89
+ [:div, {:class=>'section'}, msg]],
90
+ [:div, {:class=>'day'},
91
+ [:h2, _('Original data')],
92
+ [:div, {:class=>'section'},
93
+ [:pre, str]]]]
94
+ }
95
+ =end
96
+
97
+ return c_plain("#{key} @ #{time.ymdax}") {
98
+ [[:div, {:class=>'day'},
99
+ [:h2, _('Original data')],
100
+ [:div, {:class=>'section'},
101
+ [:pre, str]]]]
102
+ }
103
+ end
104
+
105
+ def backup_list(site, key)
106
+ list = []
107
+ site.backupdb.each_by_key(key) {|v, time|
108
+ list << [v, time.to_i]
109
+ }
110
+ return list
111
+ end
112
+
113
+ def backup_diff(list, last, now)
114
+ s1, t1 = list[last]
115
+ s2, t2 = list[now]
116
+ return DiffGenerator.generate(s1, s2)
117
+ end
118
+
119
+ def backup_list_page(site, key)
120
+ list = backup_list(site, key)
121
+
122
+ ul = list.map {|v, time|
123
+ [:li, [:a, {:href=>"#{key}.#{time}.backup"},
124
+ Time.at(time).format_date]]
125
+ }
126
+ if 0 < ul.length
127
+ ul.last << ' '+_('<-')+' '+ _('Newest')
128
+ end
129
+
130
+ return c_plain(_('Backup list')) {
131
+ [:div, {:class=>'day'},
132
+ [:div, {:class=>'section'},
133
+ [:ul, ul]]]
134
+ }
135
+ end
136
+ end
137
+ end
138
+
139
+ if $0 == __FILE__
140
+ require 'qwik/test-common'
141
+ $test = true
142
+ end
143
+
144
+ if defined?($test) && $test
145
+ class TestActBackup < Test::Unit::TestCase
146
+ include TestSession
147
+
148
+ def test_plg_backup_list
149
+ ok_wi [:span, {:class=>'attribute'},
150
+ [:a, {:href=>'1.backup'}, 'Show backup']],
151
+ '{{backup_list}}'
152
+ end
153
+
154
+ def test_act_backup2
155
+ #return if $0 != __FILE__
156
+
157
+ # Only members can see the page.
158
+ res = session '/test/1.html'
159
+ ok_title 'Members Only'
160
+ res = session '/test/1.backup'
161
+ ok_title 'Members Only'
162
+
163
+ t_add_user
164
+
165
+ # You can see backup page even if the page does not exist.
166
+ res = session '/test/1.html'
167
+ ok_title 'Page not found.'
168
+ res = session '/test/1.backup'
169
+ ok_in ['Backup list'], '//title'
170
+
171
+ page = @site.create_new
172
+ page.put_with_time('t', 0)
173
+
174
+ res = session '/test/1.html'
175
+ ok_title '1'
176
+ res = session '/test/1.backup'
177
+ ok_in ['Backup list'], '//title'
178
+
179
+ # Error check.
180
+ res = session '/test/1.backup/0'
181
+ ok_title 'Incorrect path arguments.'
182
+ res = session '/test/1.100.200.backup'
183
+ ok_title 'only one time stamp'
184
+ res = session '/test/1.hoge.backup'
185
+ ok_title 'should be number'
186
+
187
+ list = @action.backup_list(@site, '1')
188
+ # eq 't', list[0][0]
189
+ # eq '', list[1][0]
190
+ eq nil, list[2]
191
+
192
+ t1 = list[0][1]
193
+ res = session "/test/1.#{t1}.backup"
194
+ assert_text(/\A1 @ /, 'title')
195
+ assert_text 't', 'pre'
196
+
197
+ # Edit the page again.
198
+ page.put_with_time 't2', 1
199
+
200
+ list = @action.backup_list(@site, '1')
201
+ # eq 't', list[0][0]
202
+ # eq 't2', list[1][0]
203
+ # eq '', list[2][0]
204
+ eq nil, list[3]
205
+
206
+ diff = @action.backup_diff(list, 0, 1)
207
+ # eq [[:del, 't'], [:br], [:ins, 't2'], [:br]], diff
208
+
209
+ t2 = list[1][1]
210
+ res = session "/test/1.#{t2}.backup"
211
+ assert_text(/\A1 @ /, 'title')
212
+ assert_text('t2', 'pre')
213
+ # ok_in [[:del, 't'], [:br], [:ins, 't2'], [:br]],
214
+ # "//div[@class='differ']"
215
+
216
+ # Edit the page again. The 3rd times.
217
+ page.put_with_time('t3', 2)
218
+
219
+ list = @action.backup_list(@site, '1')
220
+ # eq 't', list[0][0]
221
+ # eq 't2', list[1][0]
222
+ # eq 't3', list[2][0]
223
+ # eq '', list[3][0]
224
+ eq nil, list[4]
225
+
226
+ diff = @action.backup_diff(list, 1, 2)
227
+ # eq [[:del, 't2'], [:br], [:ins, 't3'], [:br]], diff
228
+
229
+ t3 = list[2][1]
230
+ res = session "/test/1.#{t3}.backup"
231
+ assert_text 't3', 'pre'
232
+ # ok_in [[:del, 't2'], [:br], [:ins, 't3'], [:br]],
233
+ # "//div[@class='differ']"
234
+ end
235
+ end
236
+ end
@@ -0,0 +1,325 @@
1
+ # -*- coding: shift_jis -*-
2
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
3
+ # This is free software with ABSOLUTELY NO WARRANTY.
4
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
5
+
6
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
7
+ require 'qwik/act-describe'
8
+
9
+ module Qwik
10
+ class Action
11
+ D_PluginBasic = {
12
+ :dt => 'Basic plugins',
13
+ :dd => 'Simple and Basic plugins.',
14
+ :dc => '* Description
15
+ ** BR plugin
16
+ You can break a line by using <br> element.
17
+ This is {{br}} a test.
18
+ This is {{br}} a test.
19
+ ** Open with new window plugin
20
+ You can make a link to show the page in a new window.
21
+ {{window(http://qwik.jp/)}}
22
+ {{window(http://qwik.jp/)}}
23
+ ** Show last modified plugin
24
+ You can show last modified by this plugin.
25
+ {{last_modified}}
26
+ {{last_modified}}
27
+ ** Information only for a group
28
+ You can specify content only for guests or for members.
29
+ {{only_guest
30
+ You are a guest.
31
+ }}
32
+ {{only_member
33
+ You are a member.
34
+ }}
35
+ {{only_guest
36
+ You are a guest.
37
+ }}
38
+ {{only_member
39
+ You are a member.
40
+ }}
41
+ ** Comment out plugin
42
+ You can comment out the content.
43
+ {{com
44
+ You can not see this line.
45
+ You can not see this line also.
46
+ }}
47
+ {{com
48
+ You can not see this line.
49
+ You can not see this line also.
50
+ }}
51
+ ** My group
52
+ You can see your group list.
53
+ {{my_group}}
54
+ {{my_group}}
55
+ ** Plugin list plugin
56
+ プラグインの一覧を表示します。
57
+ {{plugin_list}}
58
+ {{plugin_list}}
59
+ '
60
+ }
61
+
62
+ D_PluginBasic_ja = {
63
+ :dt => '基本プラグイン',
64
+ :dd => '基本的なプラグインの説明です。',
65
+ :dc => '* 説明
66
+ ** BRプラグイン
67
+ 改行します。
68
+ This is {{br}} a test.
69
+ This is {{br}} a test.
70
+ ** 新規ウィンドウで表示
71
+ 新しいウィンドウを作って、そこで表示させます。
72
+ {{window(http://qwik.jp/)}}
73
+ {{window(http://qwik.jp/)}}
74
+ ** 最終更新プラグイン
75
+ 最終更新日時を表示します。
76
+ {{last_modified}}
77
+ {{last_modified}}
78
+ ** 特定グループ向け表示
79
+ ゲストだけに表示する部分、グループだけに表示する部分を指定できます。
80
+ {{only_guest
81
+ あなたはゲストです。
82
+ }}
83
+ {{only_member
84
+ あなたはメンバーです。
85
+ }}
86
+ {{only_guest
87
+ あなたはゲストです。
88
+ }}
89
+ {{only_member
90
+ あなたはメンバーです。
91
+ }}
92
+ ** コメントアウト・プラグイン
93
+ ある領域をコメントアウトします。
94
+ {{com
95
+ この行は見えない。
96
+ この行も見えない。
97
+ }}
98
+ {{com
99
+ この行は見えない。
100
+ この行も見えない。
101
+ }}
102
+ ** 自分のグループ
103
+ 自分が所属しているグループの一覧を表示します。
104
+ {{my_group}}
105
+ {{my_group}}
106
+ ** プラグインリスト・プラグイン
107
+ プラグインの一覧を表示します。
108
+ {{plugin_list}}
109
+ {{plugin_list}}
110
+ '
111
+ }
112
+
113
+ # ==============================
114
+ def plg_qwik_null
115
+ return ''
116
+ end
117
+
118
+ def plg_qwik_test
119
+ return 'test'
120
+ end
121
+
122
+ # ==============================
123
+ def plg_br
124
+ return [:br]
125
+ end
126
+
127
+ # ==============================
128
+ def plg_pre
129
+ content = yield
130
+ return [:pre, content]
131
+ end
132
+
133
+ # ==============================
134
+ def plg_window(url, text=nil)
135
+ text = url if text.nil?
136
+ a = [:a, {:href=>url, :class=>'external', :target=>'_blank'}, text]
137
+ # FIXME: Recognize the url is external or not.
138
+ return a
139
+ end
140
+
141
+ # ==============================
142
+ def plg_com(*args) # commentout
143
+ #str = yield if block_given?
144
+ return nil # ignore all
145
+ end
146
+
147
+ # ============================== adminmenu
148
+ def plg_menu(cmd, msg=nil)
149
+ return if ! @req.user
150
+ return if ! defined?(@req.base) || @req.base.nil?
151
+ return plg_act('new', cmd) if cmd == 'newpage'
152
+ return plg_ext(cmd) if cmd == 'edit' || cmd == 'wysiwyg'
153
+ return nil
154
+ end
155
+
156
+ def plg_act(act, msg=act)
157
+ return [:a, {:href=>".#{act}"}, _(msg)]
158
+ end
159
+
160
+ def plg_ext(ext, msg=ext)
161
+ return [:a, {:href=>"#{@req.base}.#{ext}"}, _(msg)]
162
+ end
163
+
164
+ # ============================== page attribute
165
+ def page_attribute(ext, msg, base=@req.base)
166
+ return [:span, {:class=>'attribute'},
167
+ [:a, {:href=>base+'.'+ext}, msg]]
168
+ end
169
+
170
+ def plg_last_modified
171
+ return if ! defined?(@req.base) || @req.base.nil?
172
+ page = @site[@req.base]
173
+ return if page.nil?
174
+ date = page.mtime
175
+ return [:span, {:class=>'attribute'}, _('Last modified'), ': ',
176
+ [:em, date.ymd]]
177
+ end
178
+
179
+ def plg_generate_time
180
+ return nil if @req.user.nil?
181
+ return [:span, {:class=>'attribute'}, _('Generation time'), ': ',
182
+ [:em, "__qwik_page_generate_time__", _('seconds')]]
183
+ end
184
+
185
+ # ============================== member control
186
+ def plg_only_guest
187
+ return nil if @req.user
188
+ s = yield
189
+ return if s.nil?
190
+ return c_res(s)
191
+ end
192
+
193
+ def plg_only_member
194
+ return nil if @req.user.nil?
195
+ s = yield
196
+ return if s.nil?
197
+ return c_res(s)
198
+ end
199
+
200
+ # ============================== group
201
+ def plg_my_group
202
+ return nil if @req.user.nil?
203
+ farm = @memory.farm
204
+ group_list = farm.get_my_group(@req.user)
205
+ ul = [:ul]
206
+ group_list.each {|name|
207
+ ul << [:li, [:a, {:href=>"/#{name}/"}, name]]
208
+ }
209
+ return ul
210
+ end
211
+
212
+ # ============================== meta function
213
+ def plg_plugin_list
214
+ desc = descriptions_hash
215
+ plg_desc = plugin_descriptions(desc)
216
+
217
+ ul = [:ul]
218
+ plugin_list.each {|plugin_name|
219
+ if plg_desc[plugin_name]
220
+ desc_link = plg_desc[plugin_name].first
221
+ ul << [:li, [:a, {:href=>"#{desc_link}.describe"}, plugin_name]]
222
+ else
223
+ ul << [:li, plugin_name]
224
+ end
225
+ }
226
+ return ul
227
+ end
228
+
229
+ IGNORE_PLUGINS = [/\Aring_/, /\Amodulobe_/]
230
+ def plugin_list
231
+ return self.methods.grep(/\Aplg_/).map {|name|
232
+ name.sub(/\Aplg_/) {''}
233
+ }.reject {|name|
234
+ IGNORE_PLUGINS.any? {|re| re =~ name }
235
+ }.sort
236
+ end
237
+
238
+ def descriptions_hash
239
+ desc = {}
240
+ description_list.each {|name|
241
+ desc[name] = self.class.const_get("D_#{name}")[:dc]
242
+ }
243
+ return desc
244
+ end
245
+
246
+ def plugin_descriptions(desc)
247
+ plg_desc = {}
248
+ desc.each {|k, v|
249
+ v.each {|line|
250
+ if /\{\{([a-z_]+)/ =~ line
251
+ name = $1
252
+ plg_desc[name] = [] if ! plg_desc[name]
253
+ if ! plg_desc[name].include? k
254
+ plg_desc[name] << k
255
+ end
256
+ end
257
+ }
258
+ }
259
+ return plg_desc
260
+ end
261
+ end
262
+ end
263
+
264
+ if $0 == __FILE__
265
+ require 'qwik/test-common'
266
+ $test = true
267
+ end
268
+
269
+ if defined?($test) && $test
270
+ class TestActBasic < Test::Unit::TestCase
271
+ include TestSession
272
+
273
+ def test_all
274
+ # test_null
275
+ ok_wi [''], '{{qwik_null}}'
276
+
277
+ # test_test
278
+ ok_wi ['test'], '{{qwik_test}}'
279
+
280
+ # test_br
281
+ ok_wi([:br], '{{br}}')
282
+
283
+ # test_pre
284
+ ok_wi [:pre, "t\n"], '{{pre
285
+ t
286
+ }}'
287
+
288
+ # test_window
289
+ ok_wi [:a, {:class=>"external", :target=>'_blank', :href=>'url'}, 't'],
290
+ '{{window(url,t)}}'
291
+ ok_wi [:a, {:class=>"external", :target=>'_blank', :href=>'url'}, 'url'],
292
+ '{{window(url)}}'
293
+
294
+ # test_admin_menu
295
+ ok_wi([:a, {:href=>'.new'}, 'newpage'], '{{menu(newpage)}}')
296
+ ok_wi([:a, {:href=>'1.edit'}, 'edit'], '{{menu(edit)}}')
297
+ ok_wi([], '{{menu(nosuchmenu)}}')
298
+ # test for not logined mode
299
+ #ok_wi('', '{{menu(newpage)}}', nil)
300
+ #ok_wi('', '{{menu(edit)}}', nil)
301
+ #ok_wi('', '{{menu(nosuchmenu)}}', nil)
302
+
303
+ # test_meta_plugin
304
+ #ok_wi ['test'], '{{plugin_list}}'
305
+ w = @action.plg_plugin_list
306
+ eq :ul, w[0]
307
+ end
308
+
309
+ def test_page_attribute
310
+ # test_last_modified
311
+ ok_wi(/Last modified: /, '{{last_modified}}')
312
+
313
+ # test_generate_time
314
+ ok_wi(/Generation time: /, '{{generate_time}}')
315
+
316
+ # test_only_member_or_guest
317
+ t_site_open
318
+ ok_wi([:p, 'm'], "{{only_member\nm\n}}")
319
+ assert_path([], "{{only_member\nm\n}}", nil, "//div[@class='section']")
320
+ ok_wi([], "{{only_guest\ng\n}}")
321
+ assert_path([:p, 'g'], "{{only_guest\ng\n}}",
322
+ nil, "//div[@class='section']")
323
+ end
324
+ end
325
+ end
@@ -0,0 +1,161 @@
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_PluginBook = {
10
+ :dt => 'Book and ISBN plugins',
11
+ :dd => 'Add a link to a book or to search by a phrase.',
12
+ :dc => "* Example
13
+ ** ISBN plugin
14
+ Add a link to a book by isbn.
15
+ {{isbn(4797318325)}}
16
+ {{isbn(4797318325)}}
17
+ {{isbn_amazon(4797318325)}}
18
+ {{isbn_amazon(4797318325)}}
19
+ {{isbn_amazon(4797318325,書名)}}
20
+ {{isbn_amazon(4797318325,書名)}}
21
+ ** Book Serach plugin
22
+ {{book_search(Wiki)}}
23
+ {{book_search(Wiki)}}
24
+ {{book_search(ブログ)}}
25
+ {{book_search(ブログ)}}
26
+ You can edit the book stores list on [[_BookSearch]].
27
+ "
28
+ }
29
+
30
+ D_PluginBook_ja = {
31
+ :dt => '本とISBNプラグイン',
32
+ :dd => '本や本の検索へのリンクを作ります。',
33
+ :dc => "* 例
34
+ ** ISBNプラグイン
35
+ ISBNでリンクします。
36
+ {{isbn(4797318325)}}
37
+ {{isbn(4797318325)}}
38
+ {{isbn_amazon(4797318325)}}
39
+ {{isbn_amazon(4797318325)}}
40
+ {{isbn_amazon(4797318325,書名)}}
41
+ {{isbn_amazon(4797318325,書名)}}
42
+ リンク先の一覧は、[[_IsbnLink]]で指定できます。
43
+ ** 本の検索プラグイン。
44
+ 本を検索します。
45
+ {{book_search(Wiki)}}
46
+ {{book_search(Wiki)}}
47
+ {{book_search(ブログ)}}
48
+ {{book_search(ブログ)}}
49
+ 検索リンク先の一覧は、[[_BookSearch]]で指定できます。
50
+ "
51
+ }
52
+
53
+ BOOK_SEARCH = '_BookSearch'
54
+
55
+ def plg_book(key)
56
+ page = @site[BOOK_SEARCH]
57
+ ar = []
58
+ ar << "book:#{key} "
59
+ page.wikidb.array.each {|name, args|
60
+ url, encoding = args
61
+ sk = key
62
+ sk = sk.to_sjis.escape if encoding == 'sjis'
63
+ sk = sk.to_euc.escape if encoding == 'euc'
64
+ sk = sk.to_utf8.escape if encoding == 'utf8'
65
+ url = url.index("$1") ? url.sub(/\$1/, sk) : url+sk
66
+ ar << [:a, {:href=>url}, name]
67
+ ar << ' '
68
+ }
69
+ return [:div, {:class=>'box'}, ar]
70
+ end
71
+ alias plg_book_search plg_book
72
+
73
+ def plg_isbn_amazon(isbn, t=nil)
74
+ isbn = isbn.to_s
75
+ msg = t
76
+ msg = "isbn:#{isbn}" if t.nil?
77
+ a = @site.siteconfig['aid']
78
+ aid = "/#{a}" if a
79
+ return [:a, {:href=>"http://www.amazon.co.jp/exec/obidos/ASIN/#{isbn}#{aid}/ref=nosim/"}, msg]
80
+ end
81
+
82
+ ISBN_LINK = '_IsbnLink'
83
+
84
+ def plg_isbn(isbn, t=nil)
85
+ isbn = isbn.to_s
86
+ isbn1 = isbn.gsub(/ISBN/i, '')
87
+ isbn2 = isbn1.gsub(/-/, '')
88
+ a = @site.siteconfig['aid']
89
+ aid = "/#{a}" if a
90
+
91
+ link = @site[ISBN_LINK]
92
+ db = link.wikidb
93
+ ar = []
94
+
95
+ msg = t
96
+ msg = "isbn:#{isbn}" if t.nil?
97
+
98
+ ar << msg
99
+ ar << ' '
100
+
101
+ db.array.each {|name, args|
102
+ args = args.dup
103
+ url = args.shift
104
+ next if url.nil?
105
+
106
+ url = url.sub_str('#{isbn1}', isbn1)
107
+ url = url.sub_str('#{isbn2}', isbn2)
108
+ url = url.sub_str('#{aid}', aid)
109
+ ar << [:a, {:href=>url}, name]
110
+ ar << ' '
111
+ }
112
+
113
+ return [:div, {:class=>'box'}, ar]
114
+ end
115
+ end
116
+ end
117
+
118
+ if $0 == __FILE__
119
+ require 'qwik/test-common'
120
+ $test = true
121
+ end
122
+
123
+ if defined?($test) && $test
124
+ class TestActBook < Test::Unit::TestCase
125
+ include TestSession
126
+
127
+ def test_book
128
+ page = @site['_BookSearch']
129
+ page.store(',utf8,http://example.com/utf8/,utf8
130
+ ,sjis,http://example.com/sjis/,sjis
131
+ ,euc,http://example.com/euc/,euc')
132
+
133
+ ok_wi([:div, {:class=>'box'},
134
+ ['book:本 ',
135
+ [:a, {:href=>'http://example.com/utf8/%E6%9C%AC'},
136
+ 'utf8'], ' ',
137
+ [:a, {:href=>'http://example.com/sjis/%96%7B'},
138
+ 'sjis'], ' ',
139
+ [:a, {:href=>'http://example.com/euc/%CB%DC'},
140
+ 'euc'], ' ']],
141
+ '{{book_search(本)}}')
142
+
143
+ # test_isbn
144
+ ok_wi([:a, {:href=>'http://www.amazon.co.jp/exec/obidos/ASIN/4797318325/q02-22/ref=nosim/'}, 'isbn:4797318325'], '{{isbn_amazon(4797318325)}}')
145
+ ok_wi([:a, {:href=>'http://www.amazon.co.jp/exec/obidos/ASIN/4797318325/q02-22/ref=nosim/'}, 't'], '{{isbn_amazon(4797318325,t)}}')
146
+
147
+ page = @site['_IsbnLink']
148
+ page.store(',i1,http://example.com/i1/#{isbn1}
149
+ ,i2,http://example.com/i2/#{isbn2}
150
+ ,aid,http://example.com/aid/#{isbn2}#{aid}
151
+ ')
152
+
153
+ ok_wi([:div, {:class=>'box'}, ['isbn:4797318325', ' ',
154
+ [:a, {:href=>'http://example.com/i1/4797318325'}, 'i1'], ' ',
155
+ [:a, {:href=>'http://example.com/i2/4797318325'}, 'i2'], ' ',
156
+ [:a, {:href=>'http://example.com/aid/4797318325/q02-22'},
157
+ 'aid'], ' ']],
158
+ '{{isbn(4797318325)}}')
159
+ end
160
+ end
161
+ end