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,97 @@
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 'monitor'
6
+
7
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
8
+
9
+ module Qwik
10
+ class Site
11
+ def sitemonitor
12
+ @sitemonitor = SiteMonitor.new(@config, self) unless defined? @sitemonitor
13
+ return @sitemonitor
14
+ end
15
+ end
16
+
17
+ class SiteMonitor
18
+ MAX_LISTENER = 5
19
+
20
+ def initialize(config, site)
21
+ @config = config
22
+ @site = site
23
+
24
+ @buf = []
25
+ @buf.extend(MonitorMixin)
26
+ @empty_cond = @buf.new_cond
27
+
28
+ @listener = []
29
+ end
30
+
31
+ def shout(event)
32
+ @buf.synchronize {
33
+ @buf.push(event)
34
+ @empty_cond.broadcast
35
+ }
36
+ end
37
+
38
+ def listen(action)
39
+ len = @listener.length
40
+ # if MAX_LISTENER < len
41
+ # return
42
+ # end
43
+
44
+ @listener << action
45
+
46
+ index = @buf.length
47
+ loop {
48
+ @buf.synchronize {
49
+ @empty_cond.wait_while {
50
+ @buf[index].nil?
51
+ }
52
+ ev = @buf[index]
53
+ index += 1
54
+ yield(ev)
55
+ }
56
+ }
57
+ end
58
+ end
59
+ end
60
+
61
+ if $0 == __FILE__
62
+ require 'qwik/test-common'
63
+ $test = true
64
+ end
65
+
66
+ if defined?($test) && $test
67
+ class TestMonitor < Test::Unit::TestCase
68
+ include TestSession
69
+
70
+ def listen_one(monitor)
71
+ monitor.listen(nil) {|ev|
72
+ return ev
73
+ }
74
+ end
75
+
76
+ def test_monitors
77
+ monitor = @site.sitemonitor
78
+
79
+ t1 = Thread.new {
80
+ ev = listen_one(monitor)
81
+ ok_eq(1, ev)
82
+ }
83
+
84
+ t2 = Thread.new {
85
+ ev = listen_one(monitor)
86
+ ok_eq(1, ev)
87
+ }
88
+
89
+ sleep 0.01
90
+ monitor.shout(1)
91
+
92
+ t1.join
93
+ t2.join
94
+ end
95
+
96
+ end
97
+ end
@@ -0,0 +1,62 @@
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 Site
9
+ def db(); @pages.db; end
10
+ def backupdb(); @pages.backupdb; end
11
+
12
+ def last_page_time; @pages.last_page_time; end
13
+ def [](k) @pages[k]; end
14
+ def exist?(k) @pages.exist?(k); end
15
+ def each(*a, &b) @pages.each(*a, &b); end
16
+ def each_all(*a, &b) @pages.each_all(*a, &b); end
17
+ def to_a(*a) @pages.to_a(*a); end
18
+ def create(k) @pages.create(k); end
19
+ def create_new(); @pages.create_new; end
20
+ def get_new_id(); @pages.get_new_id; end
21
+ def delete(k) @pages.delete(k); end
22
+ def title_list(); @pages.title_list; end
23
+ def date_list(); @pages.date_list; end
24
+ # def path(f) @pages.path(f); end
25
+ def close(); @pages.close; end
26
+ def get_by_title(t) @pages.get_by_title(t); end
27
+
28
+ def get_superpage(k)
29
+ page = self[k]
30
+ return page if page
31
+ page = self["_#{k}"]
32
+ return page if page
33
+ return nil
34
+ end
35
+ end
36
+ end
37
+
38
+ if $0 == __FILE__
39
+ require 'qwik/test-module-session'
40
+ require 'qwik/farm'
41
+ $test = true
42
+ end
43
+
44
+ if defined?($test) && $test
45
+ class TestSitePages < Test::Unit::TestCase
46
+ include TestSession
47
+
48
+ def test_all
49
+ # test_get_superpage
50
+ eq nil, @site.get_superpage('t') # Not found.
51
+ page = @site.create '_t'
52
+ eq '_t', @site.get_superpage('t').key # There is a private page.
53
+ page = @site.create 't'
54
+ eq 't', @site.get_superpage('t').key # There is a public page.
55
+
56
+ # test_get_superpage_for_super_page
57
+ eq '_SideMenu', @site.get_superpage('SideMenu').key
58
+ page = @site.create 'SideMenu'
59
+ eq 'SideMenu', @site.get_superpage('SideMenu').key
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,139 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/util-time'
7
+
8
+ module Qwik
9
+ class Site
10
+ # ============================== plan
11
+ PLAN_RE = /\Aplan_(\d\d\d\d\d\d\d\d)\z/
12
+
13
+ def get_pages_with_date
14
+ pages = []
15
+ self.each {|page|
16
+ if PLAN_RE =~ page.key
17
+ datestr = $1
18
+ date = Time.parse(datestr).to_i
19
+ pages << [page.key, date.to_i]
20
+ next
21
+ end
22
+
23
+ =begin
24
+ tags = page.get_tags
25
+ if tags
26
+ tags.each {|tag|
27
+ date = Time.date_parse(tag)
28
+ if date
29
+ pages << [page.key, date.to_i]
30
+ end
31
+ }
32
+ end
33
+ =end
34
+ }
35
+ return pages
36
+ end
37
+
38
+ # ============================== footer
39
+ def get_footer(now)
40
+ pages = get_pages_with_date
41
+ footer = ''
42
+ footer << generate_plan(pages, now)
43
+ return footer
44
+ end
45
+
46
+ private
47
+
48
+ def generate_plan(pages, now)
49
+ return '' if pages.empty?
50
+
51
+ # Select near futer. From yesterday to 1 month in the future.
52
+ pages = plan_select_future(pages, now)
53
+ pages = plan_select_near_future(pages, now)
54
+ return '' if pages.empty?
55
+
56
+ # Sort by date.
57
+ pages = pages.sort_by {|pagekey, datei|
58
+ datei
59
+ }
60
+
61
+ str = "* Plan\n"
62
+ pages.each {|pagekey, datei|
63
+ date = Time.at(datei)
64
+ date_abbr = Time.date_abbr(now, date)
65
+
66
+ page = self[pagekey]
67
+ title = page.get_title
68
+
69
+ url = self.page_url(pagekey)
70
+
71
+ str << "- [#{date_abbr}] #{title}\n"
72
+ str << url+"\n"
73
+ }
74
+
75
+ return str
76
+ end
77
+
78
+ def plan_select_future(pages, now)
79
+ day = 60*60*24 # 1 day
80
+ nowi = now.to_i
81
+ return pages.select {|pagekey, datei|
82
+ diff = datei - nowi
83
+ -day < diff
84
+ }
85
+ end
86
+
87
+ def plan_select_near_future(pages, now)
88
+ month = 60*60*24*30 # 1 month
89
+ nowi = now.to_i
90
+ return pages.select {|pagekey, datei|
91
+ diff = datei - nowi
92
+ diff < month
93
+ }
94
+ end
95
+ end
96
+ end
97
+
98
+ if $0 == __FILE__
99
+ require 'qwik/test-common'
100
+ $test = true
101
+ end
102
+
103
+ if defined?($test) && $test
104
+ class TestSitePlan < Test::Unit::TestCase
105
+ include TestSession
106
+
107
+ def create_plan_pages(site)
108
+ page = site.create 'plan_19700101'
109
+ page.store("* t")
110
+ page = site.create 'plan_19700115'
111
+ page.store("* t")
112
+ page = site.create 'plan_19700201'
113
+ page.store("* t")
114
+ page = site.create 'plan_19710101'
115
+ page.store("* t")
116
+ end
117
+
118
+ def test_site_plan
119
+ create_plan_pages(@site)
120
+ pages = @site.get_pages_with_date
121
+ eq [["plan_19700101", -32400],
122
+ ["plan_19700115", 1177200],
123
+ ["plan_19700201", 2646000],
124
+ ["plan_19710101", 31503600]],
125
+ pages
126
+ end
127
+
128
+ def test_site_footer
129
+ res = session
130
+
131
+ eq '', @site.get_footer(Time.at(0))
132
+
133
+ create_plan_pages(@site)
134
+ eq "* Plan\n- [01-01] t\nhttp://example.com/test/plan_19700101.html\n- [01-15] t\nhttp://example.com/test/plan_19700115.html\n", @site.get_footer(Time.at(0))
135
+
136
+ eq "* Plan\n- [01-15] t\nhttp://example.com/test/plan_19700115.html\n- [02-01] t\nhttp://example.com/test/plan_19700201.html\n", @site.get_footer(Time.at(60*60*24*10)) # 10 days later.
137
+ end
138
+ end
139
+ end
@@ -0,0 +1,282 @@
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/config'
7
+ require 'qwik/farm'
8
+ require 'qwik/mail'
9
+ require 'qwik/mailaddress'
10
+ require 'qwik/util-sendmail'
11
+ require 'qwik/util-pathname'
12
+ #require 'qwik/group-config'
13
+
14
+ module Qwik
15
+ class SendReportThread
16
+ def initialize(memory)
17
+ @memory = memory
18
+ end
19
+
20
+ def start
21
+ loop {
22
+ now = Time.now
23
+ sleep(calc_sleep_time(now))
24
+ begin
25
+ process
26
+ rescue Exception => e
27
+ p e
28
+ end
29
+ }
30
+ end
31
+
32
+ def send(interval)
33
+ farm = @memory.farm
34
+ farm.list.each {|sitename|
35
+ site = farm.get_site(sitename)
36
+ if site.siteconfig['reportmail'] == interval
37
+ site.send_report
38
+ end
39
+ }
40
+ end
41
+ end
42
+
43
+ class WeeklySendReportThread < SendReportThread
44
+ def calc_sleep_time(w)
45
+ t = Time.at(w.to_i + 60*60*24*7) # next week
46
+ nxt = Time.local(t.year, t.mon, t.day, 0, 0, 0, 0) # next
47
+ return (nxt - w).to_i
48
+ end
49
+
50
+ def process
51
+ send('weekly')
52
+ end
53
+ end
54
+
55
+ class DailySendReportThread < SendReportThread
56
+ def calc_sleep_time(w)
57
+ t = Time.at(w.to_i + 60*60*24) # next day
58
+ nxt = Time.local(t.year, t.mon, t.day, 0, 0, 0, 0) # next
59
+ return (nxt - w).to_i
60
+ end
61
+
62
+ def process
63
+ send('daily')
64
+ end
65
+ end
66
+
67
+ class HourlySendReportThread < SendReportThread
68
+ def calc_sleep_time(w)
69
+ t = Time.at(w.to_i + 60*60) # next hour
70
+ nxt = Time.local(t.year, t.mon, t.day, t.hour, 0, 0, 0) # next
71
+ return (nxt - w).to_i
72
+ end
73
+
74
+ def process
75
+ send('hourly')
76
+ end
77
+ end
78
+
79
+ class Site
80
+ def send_report
81
+ rep = self.make_report
82
+ return nil if rep.nil?
83
+ list = self.member.list(false) # Without obfuscation.
84
+
85
+ list.each {|user|
86
+ mail = generate_report_mail(user, rep)
87
+ sm = Sendmail.new(@config.smtp_host, @config.smtp_port, @config.test)
88
+ begin
89
+ sm.send(mail)
90
+ rescue => e
91
+ p 'error '+e
92
+ end
93
+ }
94
+ self.delete('_SiteChanged') # Destructive.
95
+ end
96
+
97
+ # private
98
+
99
+ def make_report
100
+ page = self['_SiteChanged']
101
+ return nil if page.nil?
102
+
103
+ report = ''
104
+ page.wikidb.array.each {|k, v|
105
+ user, cmd, pagename = v
106
+ user = 'anonymous' if user.nil? || user.empty?
107
+ user = MailAddress.obfuscate(user) if ! user.empty?
108
+ time = Time.at(k.to_i)
109
+ time_str = time.strftime('%H:%M')
110
+ url = self.page_url(pagename)
111
+ line = "#{time_str} #{user} #{cmd} #{url}\n"
112
+ report += line
113
+ }
114
+ return report
115
+ end
116
+
117
+ def generate_report_mail(user, rep)
118
+ domainurl = self.host_url
119
+ siteurl = self.site_url
120
+ f = self.siteconfig['reportfrom']
121
+ from = self.ml_address
122
+ from = f if f && ! f.empty?
123
+ mail = {
124
+ :from => from,
125
+ :to => user,
126
+ :subject => "#{siteurl} Report",
127
+ :content => "Recent changes on #{siteurl}\n\n#{rep}",
128
+ :precedence => "bulk",
129
+ }
130
+
131
+ lang = get_lang
132
+ if lang == 'ja'
133
+ mail[:subject] = "#{siteurl} レポート"
134
+ mail[:content] = "#{siteurl} における、本日の編集記録です。\n\n#{rep}"
135
+ end
136
+
137
+ return mail
138
+ end
139
+
140
+ def get_lang
141
+ lang = 'en'
142
+ page = self['_GroupCharset']
143
+ return lang if page.nil?
144
+ content = page.load
145
+ charset = self.class.parse_charset(content)
146
+ return 'ja' if charset == 'iso-2022-jp'
147
+ return lang
148
+ end
149
+
150
+ # FIXME: Same as in group-config.rb
151
+ def self.parse_charset(content)
152
+ return (content.to_a.first || '').chomp
153
+ end
154
+ end
155
+ end
156
+
157
+ if $0 == __FILE__
158
+ require 'qwik/test-common'
159
+ $test = true
160
+ end
161
+
162
+ if defined?($test) && $test
163
+ class TestReportThread < Test::Unit::TestCase
164
+ include TestSession
165
+
166
+ def test_all
167
+ memory = @memory
168
+
169
+ # test_weekly_thread
170
+ @day = Qwik::WeeklySendReportThread.new(memory)
171
+ t = Time.now
172
+ eq(true, 0 < @day.calc_sleep_time(t))
173
+ t = Time.local(2000, 1, 1, 0, 0, 0) # 2000-01-01T00:00:00
174
+ eq(86400*7, @day.calc_sleep_time(t))
175
+ t = Time.local(2000, 1, 1, 0, 30, 0) # 2000-01-01T00:30:00
176
+ eq(603000, @day.calc_sleep_time(t))
177
+
178
+ # test_daily_thread
179
+ @day = Qwik::DailySendReportThread.new(memory)
180
+ t = Time.now
181
+ eq(true, 0 < @day.calc_sleep_time(t))
182
+ t = Time.local(2000, 1, 1, 0, 0, 0) # 2000-01-01T00:00:00
183
+ eq(86400, @day.calc_sleep_time(t))
184
+ t = Time.local(2000, 1, 1, 0, 30, 0) # 2000-01-01T00:30:00
185
+ eq(84600, @day.calc_sleep_time(t))
186
+
187
+ # test_hourly_thread
188
+ @day = Qwik::HourlySendReportThread.new(memory)
189
+ t = Time.now
190
+ eq(true, 0 < @day.calc_sleep_time(t))
191
+ t = Time.local(2000, 1, 1, 0, 0, 0) # 2000-01-01T00:00:00
192
+ eq(3600, @day.calc_sleep_time(t))
193
+ t = Time.local(2000, 1, 1, 0, 30, 0) # 2000-01-01T00:30:00
194
+ eq(1800, @day.calc_sleep_time(t))
195
+ end
196
+ end
197
+
198
+ class TestSiteReport < Test::Unit::TestCase
199
+ include TestSession
200
+
201
+ def test_all
202
+ t_add_user
203
+
204
+ # test_get_lang
205
+ t_make_public(Qwik::Site, :get_lang)
206
+ eq('en', @site.get_lang)
207
+
208
+ # test_generate_report_mail
209
+ t_make_public(Qwik::Site, :generate_report_mail)
210
+ mail = @site.generate_report_mail('user@e.com', 'test')
211
+ eq 'test@q.example.com', mail[:from]
212
+ eq 'user@e.com', mail[:to]
213
+ eq 'http://example.com/test/ Report', mail[:subject]
214
+ eq 'Recent changes on http://example.com/test/
215
+
216
+ test', mail[:content]
217
+
218
+ # test_get_lang_ja
219
+ page = @site.create('_GroupCharset')
220
+ page.put('iso-2022-jp
221
+ ')
222
+ eq('ja', @site.get_lang)
223
+
224
+ # test_generate_report_mail_ja
225
+ t_make_public(Qwik::Site, :generate_report_mail)
226
+ mail = @site.generate_report_mail('user@e.com', 'test')
227
+ eq 'test@q.example.com', mail[:from]
228
+ eq 'user@e.com', mail[:to]
229
+ eq 'http://example.com/test/ レポート', mail[:subject]
230
+ eq 'http://example.com/test/ における、本日の編集記録です。
231
+
232
+ test', mail[:content]
233
+
234
+ # test_make_report
235
+ t_make_public(Qwik::Site, :make_report)
236
+ rep = @site.make_report
237
+ eq(nil, rep)
238
+
239
+ page = @site.create_new
240
+ page.store('t')
241
+
242
+ sitelog = @site.sitelog
243
+ sitelog.add(0, 'user@e.com', 'save', '1')
244
+ eq(',0,user@e.com,save,1
245
+ ', @site['_SiteChanged'].load)
246
+ sitelog.add(0, nil, 'save', '1')
247
+ eq(',0,user@e.com,save,1
248
+ ,0,,save,1
249
+ ', @site['_SiteChanged'].load)
250
+
251
+ # test_make_report2
252
+ eq('09:00 user@e... save http://example.com/test/1.html
253
+ 09:00 anonymous save http://example.com/test/1.html
254
+ ', @site.make_report)
255
+ eq(',0,user@e.com,save,1
256
+ ,0,,save,1
257
+ ', @site['_SiteChanged'].load)
258
+
259
+ # test_send_report
260
+ @site.send_report
261
+ eq(['test@q.example.com', 'user@e.com'], $smtp_sendmail[2..3])
262
+ assert_match(/test@q.example.com/, $smtp_sendmail[4])
263
+
264
+ header =
265
+ "From: test@q.example.com
266
+ To: user@e.com
267
+ Subject: http://example.com/test/ =?ISO-2022-JP?B?GyRCJWwlXSE8JUgbKEI=?=
268
+ Content-Type: text/plain; charset=\"ISO-2022-JP\"
269
+
270
+ "
271
+ body =
272
+ 'http://example.com/test/ における、本日の編集記録です。
273
+
274
+ 09:00 user@e... save http://example.com/test/1.html
275
+ 09:00 anonymous save http://example.com/test/1.html
276
+
277
+ '
278
+ eq((header+body.set_sourcecode_charset.to_mail_charset),
279
+ $smtp_sendmail[4])
280
+ end
281
+ end
282
+ end