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,145 @@
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_PluginPassword = {
10
+ :dt => 'Set password plugin',
11
+ :dd => 'You can lock a page by a password.',
12
+ :dc => "* Example
13
+ {{password(\"a password string\")}}
14
+ You can lock your page by setting this password plugin.
15
+
16
+ '''Warning:''' There is no way to unlock the page.
17
+ If you forgot your password, you can not edit the page.
18
+ Please be careful.
19
+ "
20
+ }
21
+
22
+ D_PluginPassword_ja = {
23
+ :dt => 'パスワード保護プラグイン',
24
+ :dd => 'ページをパスワードで保護することができます。',
25
+ :dc => "* 例
26
+ {{password(\"a password string\")}}
27
+ このようなプラグインをページに埋込むと、
28
+ そのページはパスワードで保護されます。
29
+
30
+ '''注意:''' 現在はまだパスワードを解除する方法を提供してません。
31
+ もしパスワードを忘れた場合は、ページを編集できなくなりますので、
32
+ 気をつけてください。
33
+ "
34
+ }
35
+
36
+ def plg_password(pass=nil)
37
+ # password plugin is parsed in act-edit.rb
38
+ return nil
39
+ end
40
+ end
41
+
42
+ # These methods will be used in ext_save
43
+ class Page
44
+ def get_password
45
+ return Page.get_password(self.load)
46
+ end
47
+
48
+ def self.get_password(str)
49
+ return $1 if str && /\{\{password\((.+)\)\}\}/ =~ str
50
+ return nil
51
+ end
52
+
53
+ def self.embed_password(content)
54
+ new_pass = get_password(content)
55
+ return content if new_pass.nil? # Nothing to embed.
56
+ new_content = content.sub(/\{\{password\((.+)\)\}\}/) {
57
+ "{{password(#{$1.md5hex})}}"
58
+ }
59
+ return new_content
60
+ end
61
+
62
+ def match_password?(v)
63
+ old_pass_md5 = self.get_password
64
+ return true if old_pass_md5.nil? # No password. Go on.
65
+ new_pass_md5 = Page.get_password(v) # assume already become md5
66
+ return false if new_pass_md5.nil? # Can not go if there is no pass
67
+ return false if new_pass_md5 != old_pass_md5 # should be correct pass
68
+ return true # Go on.
69
+ end
70
+ end
71
+ end
72
+
73
+ if $0 == __FILE__
74
+ require 'qwik/test-common'
75
+ $test = true
76
+ end
77
+
78
+ if defined?($test) && $test
79
+ class TestActPassword < Test::Unit::TestCase
80
+ include TestSession
81
+
82
+ def test_password
83
+ @pages = Qwik::Pages.new(@config, @dir)
84
+ page = @pages.create('1')
85
+ page.store('test2')
86
+
87
+ eq 'test2', page.load
88
+ # The text is rewrite to the text with embeded password.
89
+ text = Qwik::Page.embed_password('take1 {{password(testpassword)}}')
90
+ eq "take1 {{password(e16b2ab8d12314bf4efbd6203906ea6c)}}", text
91
+ page.store(text)
92
+
93
+ eq "e16b2ab8d12314bf4efbd6203906ea6c", page.get_password
94
+
95
+ take2 = Qwik::Page.embed_password('take2 {{password(notcorrectpassword)}}')
96
+ eq false, page.match_password?(take2) # NG
97
+
98
+ take3 = Qwik::Page.embed_password('take3 {{password(testpassword)}}')
99
+ eq true, page.match_password?(take3)
100
+ page.store(take3) # OK
101
+ assert_match(/take3/, page.load)
102
+ eq "take3 {{password(e16b2ab8d12314bf4efbd6203906ea6c)}}", page.load
103
+
104
+ eq "e16b2ab8d12314bf4efbd6203906ea6c", page.get_password
105
+ eq 'testpassword'.md5hex, page.get_password
106
+ @pages.erase_all
107
+ end
108
+
109
+ def test_usecase_password
110
+ t_add_user
111
+
112
+ page = @site.create_new
113
+ page.store("test\n")
114
+ res = session('/test/1.html')
115
+ ok_in(['test'], "//div[@class='section']/p")
116
+
117
+ res = session('/test/1.edit')
118
+ assert_text("test\n", 'textarea')
119
+
120
+ res = session('/test/1.save?contents=test%0A{{password(test)}}%0A')
121
+ ok_title('Page is saved.')
122
+
123
+ res = session('/test/1.edit')
124
+ assert_text("test\n{{password(098f6bcd4621d373cade4e832627b4f6)}}\n",
125
+ 'textarea')
126
+
127
+ res = session('/test/1.save?contents=t2%0A{{password(test)}}%0A')
128
+ ok_title('Page is saved.')
129
+
130
+ res = session('/test/1.edit')
131
+ assert_text("t2\n{{password(098f6bcd4621d373cade4e832627b4f6)}}\n",
132
+ 'textarea')
133
+
134
+ res = session('/test/1.save?contents=t3%0A{{password(nomatch)}}%0A')
135
+ ok_in([[:tt, '{{password('], 'Password', [:tt, ')}}']],
136
+ "//div[@class='section']/p")
137
+ assert_text("t3\n{{password(nomatch)}}\n", 'textarea')
138
+
139
+ res = session('/test/1.save?contents=t3%0A{{password(test)}}%0A')
140
+ ok_title('Page is saved.')
141
+ eq "t3\n{{password(098f6bcd4621d373cade4e832627b4f6)}}\n",
142
+ page.load
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,210 @@
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/site-plan'
8
+
9
+ module Qwik
10
+ class Action
11
+ D_PluginPlan = {
12
+ :dt => 'Show plan plugin',
13
+ :dd => 'You can show the plan of this group.',
14
+ :dc => "* Example
15
+ {{plan}}
16
+ {{plan}}
17
+ You can see plans of this group.
18
+ If there are no plan for this group, you see nothing.
19
+ * How to create new plan.
20
+ Follow '''Create a new plan''' link and create a new plan page.
21
+ You'll see plans on sidemenu.
22
+ '''Notice''' We changed the format of the date of pages.
23
+ You can not use tag notation to specify date now.
24
+ "
25
+ }
26
+
27
+ D_PluginPlan_ja = {
28
+ :dt => '予定表示プラグイン',
29
+ :dd => '予定を表示します。',
30
+ :dc => '* 例
31
+ {{plan}}
32
+ {{plan}}
33
+ もし予定が登録されている場合は、このプラグインで表示されます。
34
+ * 予定の登録方法
35
+ 一番下の「新しい予定を登録する」というリンクをたどって、
36
+ 新しい予定ページを作ってください。
37
+ サイドメニューに予定が表示されるようになります。
38
+ 過去の予定は表示されません。また一年以上先の予定も表示されません。
39
+ 一ヶ月先程度の予定を登録してみてください。
40
+
41
+ \'\'\'注意\'\'\' 以前はタグ記法による日付指定を採用していましたが、
42
+ 新しいバージョンから上記の新規予定ページ方式に切り替えました。
43
+ 御了承下さい。
44
+ '
45
+ }
46
+
47
+ def plg_side_plan
48
+ div = [:div, [:h2, _('Plan')]]
49
+ pages = @site.get_pages_with_date
50
+ div << plan_make_html(pages) if ! pages.empty?
51
+ div << [:p, plg_new_plan]
52
+ return div
53
+ end
54
+
55
+ def plg_plan
56
+ div = [:div, [:h2, _('Plan')]]
57
+ pages = @site.get_pages_with_date
58
+ return if pages.empty?
59
+ div << plan_make_html(pages)
60
+ div << [:p, plg_new_plan]
61
+ return div
62
+ end
63
+
64
+ def plg_new_plan
65
+ return [:a, {:href=>'.plan'}, _('Create a new plan')]
66
+ end
67
+
68
+ def plan_make_html(pages)
69
+ day = 60 * 60 * 24
70
+ nowi = @req.start_time.to_i
71
+ pages = pages.select {|pagekey, datei|
72
+ page = @site[pagekey]
73
+ diff = datei - nowi
74
+ -day < diff
75
+ }
76
+ return nil if pages.empty?
77
+
78
+ ul = [:ul]
79
+ pages.sort_by {|pagekey, datei|
80
+ datei
81
+ }.each {|pagekey, datei|
82
+ page = @site[pagekey]
83
+ title = page.get_title
84
+ date = Time.at(datei)
85
+ now = Time.at(nowi)
86
+ date_abbr = Time.date_abbr(now, date)
87
+ em_title = Time.date_emphasis(now, date, title)
88
+ ul << [:li, "#{date_abbr} ", [:a, {:href=>"#{pagekey}.html"}, em_title]]
89
+ }
90
+ return ul
91
+ end
92
+
93
+ # Make a new plan.
94
+ def act_plan
95
+ date = @req.query['date']
96
+ title = @req.query['title']
97
+ if date.nil? || date.empty? || title.nil? || title.empty?
98
+ date_attr = {:name=>'date', :class => 'focus'}
99
+ date_attr[:value] = @req.start_time.ymd_s
100
+ date_attr[:value] = date if date && ! date.empty?
101
+ title_attr = {:name=>'title'}
102
+ title_attr[:value] = 'Plan'
103
+ title_attr[:value] = title if title && ! title.empty?
104
+ form = [:form, {:action=>'.plan', :method=>'POST'},
105
+ [:dl,
106
+ [:dt, _('Date')],
107
+ [:dd, [:input, date_attr]],
108
+ [:dt, _('Title')],
109
+ [:dd, [:input, title_attr]]],
110
+ [:input, {:type=>'submit', :value=>_('Create a new plan')}]]
111
+ return c_notice(_('New plan')) {
112
+ [[:h2, _('New plan')],
113
+ [:div, {:class=>'plan form'},
114
+ form]]
115
+ }
116
+ end
117
+
118
+ # Create a new plan
119
+ #page = @site.create_new # CREATE
120
+
121
+ dateobj = Time.parse(date)
122
+
123
+ pagename = "plan_#{dateobj.ymd_s}"
124
+ page = @site[pagename]
125
+ msg = _('Already Exists.')
126
+ if page.nil?
127
+ msg = _('Created.')
128
+ page = @site.create(pagename) # CREATE
129
+ page.store("* #{title}\n") # Specify title.
130
+ end
131
+
132
+ url = "#{page.key}.edit"
133
+ return c_notice(_('New plan'), url, 201) { # 201, Created
134
+ [[:h2, msg],
135
+ [:p, [:a, {:href=>url}, _('Edit new page')]]]
136
+ }
137
+ end
138
+ end
139
+ end
140
+
141
+ if $0 == __FILE__
142
+ require 'qwik/test-common'
143
+ $test = true
144
+ end
145
+
146
+ if defined?($test) && $test
147
+ class TestActPlan < Test::Unit::TestCase
148
+ include TestSession
149
+
150
+ def create_plan_pages(site)
151
+ page = site.create 'plan_19700101'
152
+ page.store("* t")
153
+ page = site.create 'plan_19700115'
154
+ page.store("* t")
155
+ page = site.create 'plan_19700201'
156
+ page.store("* t")
157
+ page = site.create 'plan_19710101'
158
+ page.store("* t")
159
+ end
160
+
161
+ def test_plg_plan
162
+ ok_wi([], '{{plan}}')
163
+
164
+ create_plan_pages(@site)
165
+
166
+ ok_wi [:div,
167
+ [:h2, "Plan"],
168
+ [:ul,
169
+ [:li, "01-01 ", [:a, {:href=>"plan_19700101.html"}, [:strong, "t"]]],
170
+ [:li, "01-15 ", [:a, {:href=>"plan_19700115.html"}, [:em, "t"]]],
171
+ [:li, "02-01 ", [:a, {:href=>"plan_19700201.html"},
172
+ [:span, {:class=>"future"}, "t"]]],
173
+ [:li, "1971-01-01 ", [:a, {:href=>"plan_19710101.html"},
174
+ [:span, {:class=>"future"}, "t"]]]],
175
+ [:p, [:a, {:href=>".plan"}, "Create a new plan"]]],
176
+ '{{plan}}'
177
+
178
+ # $KCODE = 'n'
179
+ eq "\227\\\222\350", '予定'
180
+ end
181
+
182
+ def ok_date(num, date)
183
+ assert_equal(num, Time.parse(date).to_i + Time::now.utc_offset)
184
+ end
185
+
186
+ def test_parsedate
187
+ ok_date 0, '1970-01-01'
188
+ ok_date 0, '19700101'
189
+ ok_date 0, '1970/01/01'
190
+ ok_date 0, '1970/1/1'
191
+ end
192
+
193
+ def test_plan
194
+ t_add_user
195
+
196
+ ok_wi [:div, [:h2, "Plan"], [:p, [:a, {:href=>".plan"},
197
+ "Create a new plan"]]], '{{side_plan}}'
198
+
199
+ # Go create a new plan page.
200
+ res = session '/test/.plan'
201
+ ok_in ["New plan"], '//h1'
202
+ ok_attr({:action=>".plan", :method=>"POST"}, '//form')
203
+ ok_attr({:value=>"19700101", :class=>"focus", :name=>"date"}, '//input')
204
+ ok_attr({:value=>"Plan", :name=>"title"}, '//input[2]')
205
+
206
+ page = @site.create_new
207
+ page.store('t1')
208
+ end
209
+ end
210
+ end
@@ -0,0 +1,230 @@
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
+
8
+ require 'open3'
9
+
10
+ module Qwik
11
+ class Action
12
+ D_PluginPovray = {
13
+ :dt => 'PovRay plugin',
14
+ :dd => 'You can embed ray tracing rendered 3D CG.',
15
+ :dc => "* Example
16
+ {{povray
17
+ sphere { <0, 0, 9>, 3
18
+ finish { ambient 0.2 diffuse 0.8 phong 1 }
19
+ pigment { red 1 }
20
+ }
21
+ light_source { <-9, 9, 0> rgb 1 }
22
+ }}
23
+ {{povray
24
+ sphere { <0, 0, 9>, 3
25
+ finish { ambient 0.2 diffuse 0.8 phong 1 }
26
+ pigment { red 1 }
27
+ }
28
+ light_source { <-9, 9, 0> rgb 1 }
29
+ }}
30
+ - I recommend [[POVRay Short Code Contest, Round 3|http://astronomy.swin.edu.au/~pbourke/raytracing/scc3/final/]] for samples of POV-Ray source code.
31
+ "
32
+ }
33
+
34
+ D_PluginPovray_ja = {
35
+ :dt => 'PovRayプラグイン',
36
+ :dd => 'レイトレーシングによる3D CGを埋め込めます。',
37
+ :dc => '* 例
38
+ {{povray
39
+ sphere { <0, 0, 9>, 3
40
+ finish { ambient 0.2 diffuse 0.8 phong 1 }
41
+ pigment { red 1 }
42
+ }
43
+ light_source { <-9, 9, 0> rgb 1 }
44
+ }}
45
+ {{povray
46
+ sphere { <0, 0, 9>, 3
47
+ finish { ambient 0.2 diffuse 0.8 phong 1 }
48
+ pigment { red 1 }
49
+ }
50
+ light_source { <-9, 9, 0> rgb 1 }
51
+ }}
52
+ - [[POVRay Short Code Contest, Round 3|http://astronomy.swin.edu.au/~pbourke/raytracing/scc3/final/]]などのサンプルを見てみると面白いかもしれません。
53
+ '
54
+ }
55
+
56
+ MIN_COLS = 50
57
+ MIN_ROWS = 7
58
+ MAX_COLS = 100
59
+ MAX_ROWS = 50
60
+ def plg_povray
61
+ if ! povray_exist?
62
+ return [:div, {:class=>'povray'},
63
+ [:p, 'No povray command.']
64
+ ]
65
+ end
66
+
67
+ # Generate a povray file.
68
+ content = ''
69
+ content = yield if block_given?
70
+
71
+ pngfilename, stapath = povray_generate(content)
72
+
73
+ # @povray_num is global for an action.
74
+ @povray_num = 0 if ! defined?(@povray_num)
75
+ @povray_num += 1
76
+ action = "#{@req.base}.#{@povray_num}.povray"
77
+
78
+ cols = 0
79
+ rows = 1 # Add an empty line.
80
+ content.each_line {|line|
81
+ len = line.chomp.length
82
+ cols = len if cols < len
83
+ rows += 1
84
+ }
85
+ cols = MIN_COLS if cols < MIN_COLS
86
+ rows = MIN_ROWS if rows < MIN_ROWS
87
+ cols = MAX_COLS if MAX_COLS < cols
88
+ rows = MAX_ROWS if MAX_ROWS < rows
89
+
90
+ status = [:div, {:class=>'status'}]
91
+ begin
92
+ sta = stapath.read
93
+ st, et = sta.to_a
94
+ status << [:p, 'Start : ', Time.at(st.to_i).ymdax] if st
95
+ status << [:p, 'End : ', Time.at(et.to_i).ymdax] if et
96
+ status << [:p, 'Past : ', Time.at(et.to_i).ymdax] if et
97
+ rescue
98
+ status << [:p, 'The rendering is started.']
99
+ end
100
+
101
+ div = [:div, {:class=>'povray'},
102
+ [:img, {:src=>"#{@req.base}.files/#{pngfilename}"}],
103
+ [:br],
104
+ [:form, {:method=>'POST', :action=>action},
105
+ [:textarea, {:name=>'t', :cols=>cols, :rows=>rows}, content],
106
+ [:br],
107
+ [:input, {:type=>'submit', :value=>_('Update')}]],
108
+ [:br],
109
+ status]
110
+
111
+ return div
112
+ end
113
+
114
+ POVRAY_CMD = '/usr/bin/povray'
115
+ # POVRAY_CMD = '/usr/local/bin/povray'
116
+ MV_CMD = '/bin/mv'
117
+ def povray_exist?
118
+ return POVRAY_CMD.path.exist?
119
+ end
120
+
121
+ def povray_generate(content)
122
+ files = @site.files(@req.base)
123
+ base = content.md5hex
124
+ povfilename = "#{base}.pov"
125
+ pngfilename = "#{base}.png"
126
+
127
+ povpath = files.path(povfilename)
128
+ pngpath = files.path(pngfilename)
129
+ pngtmppath = "/tmp/#{pngfilename}"
130
+
131
+ msgpath = files.path("#{base}.povmsg").path
132
+ stapath = files.path("#{base}.povsta").path
133
+
134
+ return pngfilename, stapath if stapath.exist? # Already started.
135
+
136
+ files.overwrite(povfilename, content)
137
+
138
+ # Render it background.
139
+ t = Thread.new {
140
+ cmd = "#{POVRAY_CMD} #{povpath} -O#{pngtmppath}"
141
+ #system cmd
142
+ stapath.open('wb') {|sta|
143
+ sta.puts Time.now.to_i.to_s
144
+ msgpath.open('wb') {|msg|
145
+ Open3.popen3(cmd) {|stdin, stdout, stderr|
146
+ while line = stderr.gets
147
+ msg.print line
148
+ end
149
+ }
150
+ }
151
+ sta.puts Time.now.to_i.to_s
152
+ }
153
+ system "#{MV_CMD} #{pngtmppath} #{pngpath}"
154
+ }
155
+ return pngfilename, stapath
156
+ end
157
+
158
+ def ext_povray
159
+ c_require_post
160
+ c_require_page_exist
161
+
162
+ num = @req.ext_args[0].to_i
163
+ return c_nerror(_('Error')) if num < 1
164
+
165
+ text = @req.query['t']
166
+ return c_nerror(_('No text.')) if text.nil? || text.empty?
167
+ text = text.normalize_newline
168
+
169
+ begin
170
+ plugin_edit(:povray, num) {|content|
171
+ text
172
+ }
173
+ rescue NoCorrespondingPlugin
174
+ return c_nerror(_('Failed'))
175
+ rescue PageCollisionError
176
+ return mcomment_error(_('Page collision detected.'))
177
+ end
178
+
179
+ c_make_log('povray') # TEXTAREA
180
+
181
+ url = "#{@req.base}.html"
182
+ return c_notice(_('Edit text done.'), url){
183
+ [[:h2, _('Edit text done.')],
184
+ [:p, [:a, {:href=>url}, _('Go back')]]]
185
+ }
186
+ end
187
+
188
+ end
189
+ end
190
+
191
+ if $0 == __FILE__
192
+ require 'qwik/test-common'
193
+ $test = true
194
+ end
195
+
196
+ if defined?($test) && $test
197
+ class TestActPovray < Test::Unit::TestCase
198
+ include TestSession
199
+
200
+ def test_all
201
+ t_add_user
202
+
203
+ page = @site.create_new
204
+ page.store '{{povray
205
+ sphere { <0, 0, 9>, 3
206
+ finish { ambient 0.2 diffuse 0.8 phong 1 }
207
+ pigment { red 1 }
208
+ }
209
+ light_source { <-9, 9, 0> rgb 1 }
210
+ }}'
211
+
212
+ res = session
213
+
214
+ return if ! @action.povray_exist?
215
+
216
+ res = session '/test/1.html'
217
+ ok_xp [:div, {:class=>"povray"},
218
+ [:img, {:src=>"1.files/4c5c412765d503e22d83bd5fdd4a1c80.png"}], [:br],
219
+ [:form, {:method=>"POST", :action=>"1.1.povray"},
220
+ [:textarea, {:name=>"t", :cols=>50, :rows=>7},
221
+ "sphere { <0, 0, 9>, 3\nfinish { ambient 0.2 diffuse 0.8 phong 1 }\npigment { red 1 }\n}\nlight_source { <-9, 9, 0> rgb 1 }\n"], [:br],
222
+ [:input, {:type=>"submit", :value=>"Update"}]], [:br],
223
+ [:div, {:class=>"status"}]],
224
+ "//div[@class='povray']"
225
+
226
+ files = @site.files('1')
227
+ ok files.exist?('4c5c412765d503e22d83bd5fdd4a1c80.pov')
228
+ end
229
+ end
230
+ end