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,306 @@
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
+ begin
6
+ require 'bdb'
7
+ $have_bdb_so = true
8
+ rescue LoadError
9
+ $have_bdb_so = false
10
+ end
11
+
12
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
13
+ require 'qwik/util-pathname'
14
+ require 'qwik/db-b-backup'
15
+
16
+ module Qwik
17
+ class BerkeleyDB
18
+ include Enumerable
19
+
20
+ def initialize(path, spath)
21
+ @path = path
22
+ raise 'No such dir. '+@path.to_s unless @path.directory?
23
+ @path_h = {}
24
+ @spath = spath
25
+ @spath_h = {}
26
+
27
+ @db = open_db(@path+'pages.db')
28
+ @mtime_db = open_db(@path+'mtime.db')
29
+
30
+ @backupdb = BackupBDB.new(@path)
31
+ end
32
+ attr_reader :backupdb
33
+
34
+ def open_db(path)
35
+ options = 0
36
+ options = BDB::CREATE | BDB::EXCL unless path.exist? # don't over write
37
+ begin
38
+ db = BDB::Hash.open(path.to_s, nil, options)
39
+ rescue => e
40
+ p 'e is '+e
41
+ @path.each_entry {|pa|
42
+ if /\.db\z/ =~ pa.to_s
43
+ p pa
44
+ (@path+pa).unlink
45
+ end
46
+ }
47
+ $try ||= 0
48
+ $try += 1
49
+ retry if $try < 5
50
+ raise e
51
+ end
52
+ return db
53
+ end
54
+
55
+ def close
56
+ @backupdb.close
57
+ @db.close
58
+ @mtime_db.close
59
+ end
60
+
61
+ def exist?(k)
62
+ begin
63
+ return true if baseexist?(k)
64
+ return true if spath(k).exist?
65
+ rescue
66
+ return false
67
+ end
68
+ return false
69
+ end
70
+
71
+ def baseexist?(k)
72
+ v = db_get(k)
73
+ return true if v
74
+ begin
75
+ return true if path(k).exist?
76
+ rescue
77
+ return false
78
+ end
79
+ return false
80
+ end
81
+
82
+ def create(k)
83
+ touch(k) unless exist?(k)
84
+ end
85
+
86
+ def get(k)
87
+ v = db_get(k)
88
+ return v if v
89
+ if path(k).exist?
90
+ str = path(k).get
91
+ mtime = path(k).mtime
92
+ db_put(k, str, mtime)
93
+ return str
94
+ end
95
+ return spath(k).get if spath(k).exist?
96
+ ''
97
+ end
98
+
99
+ def db_get(k)
100
+ begin
101
+ @db.get(k)
102
+ rescue BDB::Fatal => e
103
+ return if e.message == 'closed DB'
104
+ raise e
105
+ end
106
+ end
107
+
108
+ def mtime(k)
109
+ v = db_get(k)
110
+ if v
111
+ num = @mtime_db.get(k)
112
+ return Time.at(num.to_i)
113
+ end
114
+ return path(k).mtime if path(k).exist?
115
+ return spath(k).mtime if spath(k).exist?
116
+ Time.at(0) # the file is already deleted.
117
+ end
118
+
119
+ def add(k, v, time=Time.now)
120
+ # FIXME: use @db.add(k, v) instead
121
+ put(k, get(k)+v, time)
122
+ end
123
+
124
+ def put(k, v, time=Time.now)
125
+ db_put(k, v, time)
126
+ @backupdb.put(k, time, v)
127
+ path(k).open('wb'){|f| f.print(v) } # write through
128
+ end
129
+ alias set put
130
+
131
+ def db_put(k, v, mtime)
132
+ @db.put(k, v)
133
+ @mtime_db.put(k, mtime.to_i.to_s)
134
+ end
135
+
136
+ def touch(k)
137
+ add(k, '') # add null String
138
+ end
139
+
140
+ def delete(k)
141
+ put(k, nil)
142
+ path(k).unlink if path(k).exist?
143
+ end
144
+
145
+ def each
146
+ ar = []
147
+ @db.each {|k, v|
148
+ next if v.nil?
149
+ ar << k
150
+ }
151
+ dir = @path.to_s
152
+ Dir.foreach(dir) {|file|
153
+ f = dir+'/'+file
154
+ next unless FileTest.file?(f)
155
+ base = file.to_s
156
+ if /\A([_A-Za-z0-9]+)\.txt\z/ =~ base
157
+ b = $1
158
+ ar << b if !ar.include?(b)
159
+ end
160
+ }
161
+ ar.sort.each {|k|
162
+ yield(k)
163
+ }
164
+ end
165
+
166
+ def last_page_time # mtime of the newest page
167
+ t = map {|k| mtime(k) }.max
168
+ t = Time.at(0) if t.nil?
169
+ t
170
+ end
171
+
172
+ # QuickML support
173
+ def last_article_time # mtime of the newest file
174
+ max = maxfile = nil
175
+ @path.each_entry {|file|
176
+ f = @path+file
177
+ next unless f.file?
178
+ base = file.to_s
179
+ next if /\A\./ =~ base ||
180
+ base == ',config' ||
181
+ base == '_GroupConfig.txt' ||
182
+ base == ',charset' ||
183
+ base == '_GroupCharset.txt'
184
+ next if /\.db\z/ =~ base
185
+ mt = f.mtime
186
+ if max.nil? || max < mt
187
+ max = mt
188
+ maxfile = f
189
+ end
190
+ }
191
+ max # return nil if there is no file.
192
+ end
193
+
194
+ private
195
+
196
+ def path(k)
197
+ gen_path(@path, @path_h, k)
198
+ end
199
+
200
+ def spath(k)
201
+ gen_path(@spath, @spath_h, k)
202
+ end
203
+
204
+ def gen_path(path, h, k)
205
+ pa = h[k]
206
+ return pa if pa
207
+ raise 'Character type error '+k unless /\A([_A-Za-z0-9]+)\z/ =~ k
208
+ h[k] = path+(k+'.txt')
209
+ h[k]
210
+ end
211
+ end
212
+ end
213
+
214
+ if $0 == __FILE__
215
+ require 'qwik/testunit'
216
+ require 'qwik/config'
217
+ require 'qwik/farm'
218
+ require 'qwik/server-memory'
219
+ require 'qwik/test-module-session'
220
+ $test = true
221
+ end
222
+
223
+ if defined?($test) && $test
224
+ class TestBerkeleyDB < Test::Unit::TestCase
225
+ include TestSession
226
+
227
+ def test_bdb
228
+ @pagedb = @site.db
229
+
230
+ ok_eq(false, @pagedb.exist?('1'))
231
+
232
+ @pagedb.create('1')
233
+ ok_eq(true, @pagedb.exist?('1'))
234
+ ok_eq('', @pagedb.get('1'))
235
+
236
+ @pagedb.put('1', 't')
237
+ ok_eq('t', @pagedb.get('1'))
238
+
239
+ assert_instance_of(Time, @pagedb.mtime('1'))
240
+
241
+ @pagedb.add('1', 's')
242
+ ok_eq('ts', @pagedb.get('1'))
243
+
244
+ assert_instance_of(Time, @pagedb.last_page_time)
245
+
246
+ assert_instance_of(Time, @pagedb.last_article_time)
247
+
248
+ @pagedb.each {|f|
249
+ assert_instance_of(String, f)
250
+ }
251
+
252
+ @pagedb.touch('1')
253
+
254
+ @pagedb.delete('1')
255
+ ok_eq(false, @pagedb.exist?('1'))
256
+
257
+ # page = @pagedb.db_get('1') # db_get should be private.
258
+ # ok_eq(nil, page)
259
+ # page = @pagedb.get('1')
260
+ # ok_eq('', page)
261
+
262
+ @pagedb.touch('1')
263
+ ok_eq(true, @pagedb.exist?('1'))
264
+
265
+ @pagedb.delete('1')
266
+ ok_eq(false, @pagedb.exist?('1'))
267
+
268
+ ok_eq(true, @pagedb.exist?('_SideMenu'))
269
+ ok_eq(false, @pagedb.baseexist?('_SideMenu'))
270
+
271
+ # test_not_exist
272
+ @pagedb = @site.db
273
+
274
+ ok_eq(false, @pagedb.exist?('1'))
275
+
276
+ @pagedb.put('1', 't')
277
+ ok_eq(true, @pagedb.exist?('1'))
278
+
279
+ # test_super_files
280
+ @pagedb = @site.db
281
+
282
+ page = @site['_SiteConfig']
283
+ assert_match(/theme/, page.get)
284
+
285
+ @dir.erase_all_for_test
286
+
287
+ page = @site['_SiteConfig']
288
+ assert_match(/theme/, page.get)
289
+ end
290
+ end
291
+
292
+ class CheckBerkeleyDB < Test::Unit::TestCase
293
+ def test_bdb
294
+ return if $0 != __FILE__ # Only for separated test.
295
+
296
+ path = 'test.db'.path
297
+ path.unlink if path.exist?
298
+ options = BDB::CREATE | BDB::EXCL # Do not over write.
299
+ db = BDB::Hash.open(path.to_s, nil, options)
300
+ db.put('1', 't')
301
+ ok_eq('t', db.get('1'))
302
+ db.close
303
+ path.unlink if path.exist?
304
+ end
305
+ end
306
+ end
@@ -0,0 +1,305 @@
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-pathname'
7
+
8
+ module Qwik
9
+ class FileSystemDB
10
+ def initialize(path, spath)
11
+ @path = path
12
+ @path_h = {}
13
+ @spath = spath
14
+ @spath_h = {}
15
+
16
+ @observer = []
17
+ end
18
+
19
+ # FIXME: Obsolete this method.
20
+ def backupdb
21
+ # FIXME: Check if it is the backupdb.
22
+ return @observer[0]
23
+ end
24
+
25
+ def check_integrity(ob)
26
+ self.each {|k|
27
+ v = self.get(k)
28
+ ob.check(k, v)
29
+ }
30
+ end
31
+
32
+ def register_observer(ob)
33
+ check_integrity(ob)
34
+ @observer << ob
35
+ end
36
+
37
+ def close
38
+ # do nothing
39
+ end
40
+
41
+ def exist?(k)
42
+ begin
43
+ return true if baseexist?(k)
44
+ return true if spath(k).exist?
45
+ rescue
46
+ return false
47
+ end
48
+ return false
49
+ end
50
+
51
+ def baseexist?(k)
52
+ begin
53
+ return true if path(k).exist?
54
+ rescue
55
+ return false
56
+ end
57
+ return false
58
+ end
59
+
60
+ def create(k)
61
+ touch(k) unless exist?(k)
62
+ end
63
+
64
+ def get(k)
65
+ if path(k).exist?
66
+ return path(k).read
67
+ end
68
+ return spath(k).read if spath(k).exist?
69
+ return '' # Not nil.
70
+ end
71
+
72
+ def size(k)
73
+ return path(k).size if path(k).exist?
74
+ return 0
75
+ end
76
+
77
+ def mtime(k)
78
+ return path(k).mtime if path(k).exist?
79
+ return spath(k).mtime if spath(k).exist?
80
+ return Time.at(0) # Not nil. The file is already deleted.
81
+ end
82
+
83
+ def add(k, v)
84
+ put(k, get(k)+v)
85
+ end
86
+
87
+ def put(k, v, time=nil)
88
+ # FIXME: Should make it atomic. Use mutex.
89
+ path(k).put(v)
90
+ if time
91
+ time = Time.at(time) if time.is_a?(Integer)
92
+ path(k).utime(time, time)
93
+ else
94
+ time = Time.now
95
+ end
96
+
97
+ # @backupdb.put(k, time, v)
98
+ @observer.each {|ob|
99
+ ob.put(k, v, time)
100
+ }
101
+ end
102
+ alias set put
103
+
104
+ def touch(k)
105
+ add(k, '') # add null String
106
+ end
107
+
108
+ def delete(k)
109
+ path(k).unlink if path(k).exist?
110
+ end
111
+
112
+ def list(with_super = false)
113
+ ar = get_dir_list(@path.to_s)
114
+ ar += get_dir_list(@spath.to_s) if with_super
115
+ return ar.sort
116
+ end
117
+
118
+ def each(with_super = false)
119
+ list(with_super).each {|b|
120
+ yield(b)
121
+ }
122
+ end
123
+
124
+ def each_all(&b)
125
+ each(true, &b)
126
+ end
127
+
128
+ def nu_last_page_time # mtime of the newest page
129
+ t = map {|k| mtime(k) }.max
130
+ t = Time.at(0) if t.nil?
131
+ return t
132
+ end
133
+
134
+ def last_page_time # mtime of the newest page
135
+ max = 0
136
+ list().each {|pagename|
137
+ t = mtime(pagename).to_i
138
+ max = t if max < t
139
+ }
140
+ return Time.at(max)
141
+ end
142
+
143
+ # QuickML support
144
+ def last_article_time # mtime of the newest file
145
+ max = maxfile = nil
146
+ @path.each_entry {|file|
147
+ f = @path+file
148
+ next unless f.file?
149
+ base = file.to_s
150
+ next if ignore_on_last_article_time?(base)
151
+
152
+ mt = f.mtime
153
+ if max.nil? || max < mt
154
+ max = mt
155
+ maxfile = f
156
+ end
157
+ }
158
+ return max # return nil if there is no file.
159
+ end
160
+
161
+ private
162
+
163
+ IGNORE_ON_LAST_ARTICLE_TIME =
164
+ [
165
+ ',config', '_GroupConfig.txt',
166
+ ',charset', '_GroupCharset.txt',
167
+ ',alerted', '_GroupAlerted.txt',
168
+ /\A\./,
169
+ /\A_counter_[a-zA-Z0-9_]+\.txt\z/,
170
+ ]
171
+ def ignore_on_last_article_time?(base)
172
+ IGNORE_ON_LAST_ARTICLE_TIME.detect { |entry| entry === base }
173
+ end
174
+
175
+ def path(k)
176
+ return gen_path(@path, @path_h, k)
177
+ end
178
+
179
+ def spath(k)
180
+ return gen_path(@spath, @spath_h, k)
181
+ end
182
+
183
+ def gen_path(path, h, k)
184
+ pa = h[k]
185
+ return pa if pa
186
+ raise 'Character type error '+k unless /\A([_A-Za-z0-9]+)\z/ =~ k
187
+ h[k] = path+(k+'.txt')
188
+ return h[k]
189
+ end
190
+
191
+ # FIXME: I don't know why this method doesn't use Pathname.
192
+ def get_dir_list(dir)
193
+ ar = []
194
+ Dir.foreach(dir) {|file|
195
+ f = dir+'/'+file
196
+ next unless FileTest.file?(f)
197
+ base = file.to_s
198
+ if /\A([_A-Za-z0-9]+)\.txt\z/ =~ base
199
+ b = $1
200
+ ar << b
201
+ end
202
+ }
203
+ return ar
204
+ end
205
+ end
206
+ end
207
+
208
+ if $0 == __FILE__
209
+ require 'test/unit'
210
+ require 'qwik/config'
211
+ require 'qwik/test-module-path'
212
+ $test = true
213
+ end
214
+
215
+ if defined?($test) && $test
216
+ class TestFileSystemDB < Test::Unit::TestCase
217
+ def test_fsdb
218
+ # setup
219
+ config = Qwik::Config.new
220
+ config.update Qwik::Config::DebugConfig
221
+ config.update Qwik::Config::TestConfig
222
+ spath = config.super_dir.path
223
+ path = '.test/'.path
224
+ path.setup
225
+ db = Qwik::FileSystemDB.new(path, spath)
226
+
227
+ # test_exist?
228
+ assert_equal false, db.exist?('1')
229
+
230
+ # test_create
231
+ db.create('1')
232
+ assert_equal true, db.exist?('1')
233
+ assert_equal '', db.get('1')
234
+
235
+ # test_put
236
+ db.put('1', 't')
237
+ assert_equal 't', db.get('1')
238
+
239
+ # test_size
240
+ assert_equal 1, db.size('1')
241
+
242
+ # test_put_with_time
243
+ db.put('1', 't', Time.at(0))
244
+ assert_equal 0, db.mtime('1').to_i # test_mtime
245
+ # test_put_with_time_num
246
+ db.put('1', 't', 1)
247
+ assert_equal 1, db.mtime('1').to_i
248
+
249
+ # test_last_page_time
250
+ assert_equal Time.at(1), db.last_page_time
251
+ # test_last_article_time
252
+ assert_equal Time.at(1), db.last_article_time
253
+
254
+ # test_add
255
+ db.add('1', 's')
256
+ assert_equal 'ts', db.get('1')
257
+
258
+ # test_get_dir_list
259
+ ar = []
260
+ db.instance_eval {
261
+ dir = @path.to_s
262
+ ar += get_dir_list(dir)
263
+ }
264
+ assert_equal ['1'], ar
265
+
266
+ # test_get_dir_list_spath
267
+ ar = []
268
+ db.instance_eval {
269
+ dir = @spath.to_s
270
+ ar += get_dir_list(dir)
271
+ }
272
+ assert_equal true, ar.include?('FrontPage')
273
+
274
+ # test_each
275
+ db.each {|f|
276
+ assert_instance_of(String, f)
277
+ }
278
+
279
+ # test_each_all
280
+ db.each(true) {|f|
281
+ assert_instance_of(String, f)
282
+ }
283
+ db.each_all {|f|
284
+ assert_instance_of(String, f)
285
+ }
286
+
287
+ # test_backup_db
288
+ #assert_instance_of(Qwik::BackupDB, db.backup_db('1'))
289
+
290
+ # test_touch
291
+ db.touch('1')
292
+
293
+ # test_delete
294
+ db.delete('1')
295
+ assert_equal false, db.exist?('1')
296
+
297
+ # test_super_pages
298
+ assert_equal true, db.exist?('_SideMenu')
299
+ assert_equal false, db.baseexist?('_SideMenu')
300
+
301
+ # teardown
302
+ path.teardown
303
+ end
304
+ end
305
+ end