qwikdoc 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/CHANGES +3 -0
  4. data/COPYING +340 -0
  5. data/Gemfile +3 -0
  6. data/README.md +10 -0
  7. data/Rakefile +10 -0
  8. data/TextFormattingRules +137 -0
  9. data/TextFormattingRules.ja +143 -0
  10. data/bin/qwikdoc +34 -0
  11. data/lib/qwik_doc.rb +15 -0
  12. data/lib/qwik_doc/hack.rb +184 -0
  13. data/qwikdoc.gemspec +26 -0
  14. data/spec/qwik_doc_spec.rb +305 -0
  15. data/spec/spec_helper.rb +12 -0
  16. data/vendor/qwik/Makefile +63 -0
  17. data/vendor/qwik/Rakefile +17 -0
  18. data/vendor/qwik/act-aa.rb +83 -0
  19. data/vendor/qwik/act-archive.rb +386 -0
  20. data/vendor/qwik/act-attach.rb +304 -0
  21. data/vendor/qwik/act-backup.rb +236 -0
  22. data/vendor/qwik/act-basic.rb +325 -0
  23. data/vendor/qwik/act-book.rb +161 -0
  24. data/vendor/qwik/act-calc.rb +371 -0
  25. data/vendor/qwik/act-charset.rb +251 -0
  26. data/vendor/qwik/act-christel.rb +112 -0
  27. data/vendor/qwik/act-chronology.rb +149 -0
  28. data/vendor/qwik/act-code.rb +155 -0
  29. data/vendor/qwik/act-comment.rb +554 -0
  30. data/vendor/qwik/act-config.rb +49 -0
  31. data/vendor/qwik/act-counter.rb +125 -0
  32. data/vendor/qwik/act-day.rb +96 -0
  33. data/vendor/qwik/act-describe.rb +135 -0
  34. data/vendor/qwik/act-diary.rb +109 -0
  35. data/vendor/qwik/act-edit.rb +317 -0
  36. data/vendor/qwik/act-embed-html.rb +296 -0
  37. data/vendor/qwik/act-emode.rb +150 -0
  38. data/vendor/qwik/act-event.rb +187 -0
  39. data/vendor/qwik/act-file.rb +303 -0
  40. data/vendor/qwik/act-files.rb +771 -0
  41. data/vendor/qwik/act-getpass.rb +295 -0
  42. data/vendor/qwik/act-history.rb +136 -0
  43. data/vendor/qwik/act-html.rb +204 -0
  44. data/vendor/qwik/act-httpauth.rb +147 -0
  45. data/vendor/qwik/act-include.rb +142 -0
  46. data/vendor/qwik/act-interwiki.rb +189 -0
  47. data/vendor/qwik/act-isearch.rb +109 -0
  48. data/vendor/qwik/act-keywords.rb +137 -0
  49. data/vendor/qwik/act-lang.rb +81 -0
  50. data/vendor/qwik/act-license.rb +63 -0
  51. data/vendor/qwik/act-list.rb +287 -0
  52. data/vendor/qwik/act-login.rb +410 -0
  53. data/vendor/qwik/act-logout.rb +60 -0
  54. data/vendor/qwik/act-mail.rb +159 -0
  55. data/vendor/qwik/act-map.rb +292 -0
  56. data/vendor/qwik/act-md5.rb +42 -0
  57. data/vendor/qwik/act-mdlb.rb +741 -0
  58. data/vendor/qwik/act-media.rb +416 -0
  59. data/vendor/qwik/act-member.rb +157 -0
  60. data/vendor/qwik/act-menu.rb +142 -0
  61. data/vendor/qwik/act-metadata.rb +323 -0
  62. data/vendor/qwik/act-mlsubmitform.rb +49 -0
  63. data/vendor/qwik/act-monitor.rb +167 -0
  64. data/vendor/qwik/act-new.rb +418 -0
  65. data/vendor/qwik/act-pagelist.rb +248 -0
  66. data/vendor/qwik/act-password.rb +145 -0
  67. data/vendor/qwik/act-plan.rb +210 -0
  68. data/vendor/qwik/act-povray.rb +230 -0
  69. data/vendor/qwik/act-presen.rb +380 -0
  70. data/vendor/qwik/act-redirect.rb +133 -0
  71. data/vendor/qwik/act-ring.rb +1071 -0
  72. data/vendor/qwik/act-rrefs.rb +255 -0
  73. data/vendor/qwik/act-ruby.rb +116 -0
  74. data/vendor/qwik/act-sample.rb +170 -0
  75. data/vendor/qwik/act-save.rb +295 -0
  76. data/vendor/qwik/act-schedule.rb +374 -0
  77. data/vendor/qwik/act-search.rb +180 -0
  78. data/vendor/qwik/act-searchwords.rb +51 -0
  79. data/vendor/qwik/act-sendpass.rb +83 -0
  80. data/vendor/qwik/act-site.rb +89 -0
  81. data/vendor/qwik/act-sitebackup.rb +419 -0
  82. data/vendor/qwik/act-sitelog.rb +118 -0
  83. data/vendor/qwik/act-smil.rb +299 -0
  84. data/vendor/qwik/act-status.rb +220 -0
  85. data/vendor/qwik/act-style.rb +608 -0
  86. data/vendor/qwik/act-table.rb +263 -0
  87. data/vendor/qwik/act-tableform.rb +241 -0
  88. data/vendor/qwik/act-tag.rb +103 -0
  89. data/vendor/qwik/act-text.rb +70 -0
  90. data/vendor/qwik/act-textarea.rb +164 -0
  91. data/vendor/qwik/act-theme.rb +346 -0
  92. data/vendor/qwik/act-toc.rb +112 -0
  93. data/vendor/qwik/act-typekey.rb +198 -0
  94. data/vendor/qwik/act-under-const.rb +94 -0
  95. data/vendor/qwik/act-webservice.rb +321 -0
  96. data/vendor/qwik/act-wema.rb +558 -0
  97. data/vendor/qwik/act-wysiwyg.rb +238 -0
  98. data/vendor/qwik/action.rb +325 -0
  99. data/vendor/qwik/autoreload.rb +98 -0
  100. data/vendor/qwik/bench-bench.rb +28 -0
  101. data/vendor/qwik/bench-emode.rb +47 -0
  102. data/vendor/qwik/bench-format-xml.rb +70 -0
  103. data/vendor/qwik/bench-large-table.rb +62 -0
  104. data/vendor/qwik/bench-md5.rb +14 -0
  105. data/vendor/qwik/bench-module-session.rb +19 -0
  106. data/vendor/qwik/bench-page.rb +50 -0
  107. data/vendor/qwik/bench-s-md5.rb +28 -0
  108. data/vendor/qwik/bench-session.rb +25 -0
  109. data/vendor/qwik/bench-textformat.rb +31 -0
  110. data/vendor/qwik/catalog-factory.rb +91 -0
  111. data/vendor/qwik/catalog-ja.rb +479 -0
  112. data/vendor/qwik/catalog-ml-ja.rb +145 -0
  113. data/vendor/qwik/check-act-monitor.rb +112 -0
  114. data/vendor/qwik/check-act-monitor2.rb +46 -0
  115. data/vendor/qwik/check-act-theme.rb +27 -0
  116. data/vendor/qwik/check-event.rb +112 -0
  117. data/vendor/qwik/check-event2.rb +55 -0
  118. data/vendor/qwik/check-htree-rexml.rb +77 -0
  119. data/vendor/qwik/check-htree.rb +51 -0
  120. data/vendor/qwik/check-libxml.rb +135 -0
  121. data/vendor/qwik/check-many-pages.rb +47 -0
  122. data/vendor/qwik/check-monitor.rb +33 -0
  123. data/vendor/qwik/check-observer.rb +67 -0
  124. data/vendor/qwik/check-server.rb +61 -0
  125. data/vendor/qwik/check-uuencode.rb +33 -0
  126. data/vendor/qwik/check-webdav.rb +65 -0
  127. data/vendor/qwik/check-xml-xpath.rb +27 -0
  128. data/vendor/qwik/common-backtrace.rb +94 -0
  129. data/vendor/qwik/common-basic.rb +111 -0
  130. data/vendor/qwik/common-condition.rb +142 -0
  131. data/vendor/qwik/common-error.rb +48 -0
  132. data/vendor/qwik/common-gettext.rb +50 -0
  133. data/vendor/qwik/common-javascript.rb +45 -0
  134. data/vendor/qwik/common-notice.rb +132 -0
  135. data/vendor/qwik/common-plain.rb +105 -0
  136. data/vendor/qwik/common-plugin.rb +111 -0
  137. data/vendor/qwik/common-res.rb +76 -0
  138. data/vendor/qwik/common-resolve.rb +92 -0
  139. data/vendor/qwik/common-send.rb +171 -0
  140. data/vendor/qwik/common-session.rb +139 -0
  141. data/vendor/qwik/common-surface.rb +261 -0
  142. data/vendor/qwik/common-url.rb +90 -0
  143. data/vendor/qwik/compat/Makefile +12 -0
  144. data/vendor/qwik/compat/add_load_path.rb +1 -0
  145. data/vendor/qwik/config.rb +299 -0
  146. data/vendor/qwik/db-b-backup.rb +142 -0
  147. data/vendor/qwik/db-backup.rb +184 -0
  148. data/vendor/qwik/db-berkeley.rb +306 -0
  149. data/vendor/qwik/db-filesystem.rb +305 -0
  150. data/vendor/qwik/db-indexer.rb +154 -0
  151. data/vendor/qwik/db-searchwords.rb +238 -0
  152. data/vendor/qwik/description-ja.rb +267 -0
  153. data/vendor/qwik/description.rb +256 -0
  154. data/vendor/qwik/dev-add-copyright.rb +23 -0
  155. data/vendor/qwik/dev-backup.rb +24 -0
  156. data/vendor/qwik/dev-bench.rb +175 -0
  157. data/vendor/qwik/dev-calctime.rb +52 -0
  158. data/vendor/qwik/dev-css-compressor.rb +60 -0
  159. data/vendor/qwik/dev-extract-catalog.rb +102 -0
  160. data/vendor/qwik/dev-js-compressor.rb +73 -0
  161. data/vendor/qwik/dev-release.rb +235 -0
  162. data/vendor/qwik/dev-replace.rb +353 -0
  163. data/vendor/qwik/dev-sendmail.rb +25 -0
  164. data/vendor/qwik/farm.rb +283 -0
  165. data/vendor/qwik/gettext.rb +56 -0
  166. data/vendor/qwik/group-cond.rb +157 -0
  167. data/vendor/qwik/group-config.rb +247 -0
  168. data/vendor/qwik/group-confirm.rb +147 -0
  169. data/vendor/qwik/group-db.rb +326 -0
  170. data/vendor/qwik/group-mail.rb +195 -0
  171. data/vendor/qwik/group-member.rb +307 -0
  172. data/vendor/qwik/group-sendmail.rb +231 -0
  173. data/vendor/qwik/group-site.rb +374 -0
  174. data/vendor/qwik/group-sweep.rb +63 -0
  175. data/vendor/qwik/group.rb +157 -0
  176. data/vendor/qwik/helper.rb +6 -0
  177. data/vendor/qwik/html-generator.rb +104 -0
  178. data/vendor/qwik/html-to-wabisabi.rb +149 -0
  179. data/vendor/qwik/htree-diff.rb +87 -0
  180. data/vendor/qwik/htree-format-xml.rb +57 -0
  181. data/vendor/qwik/htree-generator.rb +144 -0
  182. data/vendor/qwik/htree-get.rb +251 -0
  183. data/vendor/qwik/htree-html-generator.rb +179 -0
  184. data/vendor/qwik/htree-template.rb +263 -0
  185. data/vendor/qwik/htree-to-wabisabi.rb +171 -0
  186. data/vendor/qwik/loadlib.rb +79 -0
  187. data/vendor/qwik/logger.rb +115 -0
  188. data/vendor/qwik/mail-body.rb +171 -0
  189. data/vendor/qwik/mail-header.rb +474 -0
  190. data/vendor/qwik/mail-multipart.rb +193 -0
  191. data/vendor/qwik/mail-parse.rb +147 -0
  192. data/vendor/qwik/mail.rb +341 -0
  193. data/vendor/qwik/mailaddress.rb +83 -0
  194. data/vendor/qwik/mdlb-model.rb +81 -0
  195. data/vendor/qwik/mdlb-sample.rb +324 -0
  196. data/vendor/qwik/ml-catalog-factory.rb +27 -0
  197. data/vendor/qwik/ml-exception.rb +15 -0
  198. data/vendor/qwik/ml-generator.rb +28 -0
  199. data/vendor/qwik/ml-gettext.rb +137 -0
  200. data/vendor/qwik/ml-logger.rb +82 -0
  201. data/vendor/qwik/ml-memory.rb +65 -0
  202. data/vendor/qwik/ml-msg-validator.rb +86 -0
  203. data/vendor/qwik/ml-processor.rb +609 -0
  204. data/vendor/qwik/ml-quickml-server.rb +122 -0
  205. data/vendor/qwik/ml-sendmail.rb +0 -0
  206. data/vendor/qwik/ml-server.rb +107 -0
  207. data/vendor/qwik/ml-session.rb +348 -0
  208. data/vendor/qwik/ml-sweeper.rb +101 -0
  209. data/vendor/qwik/mock-logger.rb +65 -0
  210. data/vendor/qwik/mock-sendmail.rb +78 -0
  211. data/vendor/qwik/mock-socket.rb +82 -0
  212. data/vendor/qwik/modulobe.rb +406 -0
  213. data/vendor/qwik/mongrel-server.rb +72 -0
  214. data/vendor/qwik/page-files.rb +249 -0
  215. data/vendor/qwik/page-generate.rb +82 -0
  216. data/vendor/qwik/page-get.rb +262 -0
  217. data/vendor/qwik/page-images.rb +168 -0
  218. data/vendor/qwik/page-put.rb +128 -0
  219. data/vendor/qwik/page-rrefs.rb +154 -0
  220. data/vendor/qwik/page-title.rb +0 -0
  221. data/vendor/qwik/page-wikidb.rb +234 -0
  222. data/vendor/qwik/page.rb +67 -0
  223. data/vendor/qwik/pages.rb +444 -0
  224. data/vendor/qwik/parse-plugin.rb +249 -0
  225. data/vendor/qwik/parser-emode.rb +116 -0
  226. data/vendor/qwik/parser-inline.rb +273 -0
  227. data/vendor/qwik/parser.rb +350 -0
  228. data/vendor/qwik/password.rb +183 -0
  229. data/vendor/qwik/periodic.rb +79 -0
  230. data/vendor/qwik/qp.rb +56 -0
  231. data/vendor/qwik/qwik-service.rb +341 -0
  232. data/vendor/qwik/qwik.rb +5 -0
  233. data/vendor/qwik/qwikweb-adduser.rb +34 -0
  234. data/vendor/qwik/qwikweb-catalog-validator.rb +110 -0
  235. data/vendor/qwik/qwikweb-incgen.rb +28 -0
  236. data/vendor/qwik/qwikweb-makesite.rb +41 -0
  237. data/vendor/qwik/qwikweb-server.rb +44 -0
  238. data/vendor/qwik/qwikweb-showpassword.rb +26 -0
  239. data/vendor/qwik/qwikweb-watchlog.rb +67 -0
  240. data/vendor/qwik/request-path.rb +304 -0
  241. data/vendor/qwik/request-ua.rb +76 -0
  242. data/vendor/qwik/request-webrick.rb +81 -0
  243. data/vendor/qwik/request.rb +91 -0
  244. data/vendor/qwik/resolve-tdiary.rb +292 -0
  245. data/vendor/qwik/resolve.rb +121 -0
  246. data/vendor/qwik/response.rb +228 -0
  247. data/vendor/qwik/server-memory.rb +57 -0
  248. data/vendor/qwik/server-webrick.rb +102 -0
  249. data/vendor/qwik/server.rb +252 -0
  250. data/vendor/qwik/site-config.rb +149 -0
  251. data/vendor/qwik/site-db.rb +136 -0
  252. data/vendor/qwik/site-event.rb +162 -0
  253. data/vendor/qwik/site-files.rb +86 -0
  254. data/vendor/qwik/site-group.rb +103 -0
  255. data/vendor/qwik/site-index.rb +47 -0
  256. data/vendor/qwik/site-log.rb +64 -0
  257. data/vendor/qwik/site-member.rb +230 -0
  258. data/vendor/qwik/site-monitor.rb +97 -0
  259. data/vendor/qwik/site-pages.rb +62 -0
  260. data/vendor/qwik/site-plan.rb +139 -0
  261. data/vendor/qwik/site-report.rb +282 -0
  262. data/vendor/qwik/site-resolve.rb +230 -0
  263. data/vendor/qwik/site-rrefs.rb +18 -0
  264. data/vendor/qwik/site-search.rb +180 -0
  265. data/vendor/qwik/site-timeline.rb +153 -0
  266. data/vendor/qwik/site-url.rb +189 -0
  267. data/vendor/qwik/site.rb +76 -0
  268. data/vendor/qwik/smil-time.rb +105 -0
  269. data/vendor/qwik/smtp-session.rb +331 -0
  270. data/vendor/qwik/template-generator.rb +149 -0
  271. data/vendor/qwik/template.rb +85 -0
  272. data/vendor/qwik/test-common.rb +10 -0
  273. data/vendor/qwik/test-ml-info.rb +225 -0
  274. data/vendor/qwik/test-module-ml.rb +142 -0
  275. data/vendor/qwik/test-module-path.rb +110 -0
  276. data/vendor/qwik/test-module-public.rb +70 -0
  277. data/vendor/qwik/test-module-server.rb +98 -0
  278. data/vendor/qwik/test-module-session.rb +264 -0
  279. data/vendor/qwik/test-module-suite.rb +91 -0
  280. data/vendor/qwik/test-ms-applemail.rb +59 -0
  281. data/vendor/qwik/test-ms-attach.rb +174 -0
  282. data/vendor/qwik/test-ms-basic.rb +40 -0
  283. data/vendor/qwik/test-ms-close.rb +35 -0
  284. data/vendor/qwik/test-ms-confirm.rb +75 -0
  285. data/vendor/qwik/test-ms-ignore-spam.rb +57 -0
  286. data/vendor/qwik/test-ms-japanese.rb +97 -0
  287. data/vendor/qwik/test-ms-jfilename.rb +82 -0
  288. data/vendor/qwik/test-ms-large.rb +58 -0
  289. data/vendor/qwik/test-ms-member.rb +103 -0
  290. data/vendor/qwik/test-ms-multipart.rb +84 -0
  291. data/vendor/qwik/test-ms-org.rb +129 -0
  292. data/vendor/qwik/test-ms-plan.rb +130 -0
  293. data/vendor/qwik/test-ms-post.rb +53 -0
  294. data/vendor/qwik/test-ms-quopri.rb +76 -0
  295. data/vendor/qwik/test-sub-quopri.rb +45 -0
  296. data/vendor/qwik/test-submit-base64.rb +59 -0
  297. data/vendor/qwik/test-submit-forward.rb +61 -0
  298. data/vendor/qwik/test-submit-html-mail.rb +52 -0
  299. data/vendor/qwik/test-submit-japanese.rb +135 -0
  300. data/vendor/qwik/test-submit-jfilename.rb +144 -0
  301. data/vendor/qwik/test-submit-uuencode.rb +71 -0
  302. data/vendor/qwik/test-suite-all.rb +8 -0
  303. data/vendor/qwik/test-suite-basic.rb +9 -0
  304. data/vendor/qwik/test-suite-ml.rb +9 -0
  305. data/vendor/qwik/test-typekey.rb +64 -0
  306. data/vendor/qwik/testunit.rb +45 -0
  307. data/vendor/qwik/tokenizer-inline.rb +294 -0
  308. data/vendor/qwik/tokenizer.rb +332 -0
  309. data/vendor/qwik/typekey.rb +160 -0
  310. data/vendor/qwik/util-basic.rb +135 -0
  311. data/vendor/qwik/util-charset.rb +332 -0
  312. data/vendor/qwik/util-css.rb +56 -0
  313. data/vendor/qwik/util-csv-tokenizer.rb +113 -0
  314. data/vendor/qwik/util-filename.rb +112 -0
  315. data/vendor/qwik/util-pathname.rb +202 -0
  316. data/vendor/qwik/util-pid.rb +58 -0
  317. data/vendor/qwik/util-safe.rb +67 -0
  318. data/vendor/qwik/util-sendmail.rb +273 -0
  319. data/vendor/qwik/util-string.rb +203 -0
  320. data/vendor/qwik/util-time.rb +125 -0
  321. data/vendor/qwik/util-webrick.rb +176 -0
  322. data/vendor/qwik/version.rb +11 -0
  323. data/vendor/qwik/wabisabi-basic.rb +163 -0
  324. data/vendor/qwik/wabisabi-diff.rb +130 -0
  325. data/vendor/qwik/wabisabi-format-xml.rb +310 -0
  326. data/vendor/qwik/wabisabi-generator.rb +262 -0
  327. data/vendor/qwik/wabisabi-index.rb +174 -0
  328. data/vendor/qwik/wabisabi-table.rb +212 -0
  329. data/vendor/qwik/wabisabi-template.rb +295 -0
  330. data/vendor/qwik/wabisabi-to-htree.rb +111 -0
  331. data/vendor/qwik/wabisabi-to-wiki.rb +690 -0
  332. data/vendor/qwik/wabisabi-traverse.rb +207 -0
  333. data/vendor/qwik/wabisabi-validator.rb +116 -0
  334. data/vendor/qwik/wabisabi.rb +5 -0
  335. metadata +416 -0
@@ -0,0 +1,371 @@
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/wabisabi-table'
7
+
8
+ module Qwik
9
+ class Action
10
+ D_PluginCalc = {
11
+ :dt => 'Spreadsheet plugin',
12
+ :dd => 'You can caliculate sum by a simple table.',
13
+ :dc => '* Example
14
+ {{calc
15
+ ,$100 ,CPU
16
+ ,$100 ,Memory
17
+ ,$20.5 ,Cable
18
+ ,$250 ,Graphic Card
19
+ ,$250 ,HDD
20
+ ,$400 ,Mother Board
21
+ }}
22
+ {{calc
23
+ ,$100 ,CPU
24
+ ,$100 ,Memory
25
+ ,$20.5 ,Cable
26
+ ,$250 ,Graphic Card
27
+ ,$250 ,HDD
28
+ ,$400 ,Mother Board
29
+ }}
30
+ * Tab Caliculator Plugin
31
+ You can use a table splited by tabs.
32
+ {{tab_calc
33
+ 6000 Book
34
+ 3000 Mouse
35
+ }}
36
+ {{tab_calc
37
+ 6000 Book
38
+ 3000 Mouse
39
+ }}
40
+ '
41
+ }
42
+
43
+ D_PluginCalc_ja = {
44
+ :dt => '�\�v�Z�v���O�C��',
45
+ :dd => '�ȒP�ȕ\�v�Z���s�����Ƃ��ł��܂��B',
46
+ :dc => '* ��
47
+ {{calc
48
+ ,$100 ,CPU
49
+ ,$100 ,Memory
50
+ ,$20.5 ,Cable
51
+ ,$250 ,Graphic Card
52
+ ,$250 ,HDD
53
+ ,$400 ,Mother Board
54
+ }}
55
+ {{calc
56
+ ,$100 ,CPU
57
+ ,$100 ,Memory
58
+ ,$20.5 ,Cable
59
+ ,$250 ,Graphic Card
60
+ ,$250 ,HDD
61
+ ,$400 ,Mother Board
62
+ }}
63
+ * �^�u��؂�\�v�Z�v���O�C��
64
+ �^�u��؂�ɂ��\���v�Z�ł��܂��B
65
+ {{tab_calc
66
+ 6000 ����
67
+ 3000 �}�E�X
68
+ }}
69
+ {{tab_calc
70
+ 6000 ����
71
+ 3000 �}�E�X
72
+ }}
73
+ '
74
+ }
75
+
76
+ def plg_tab_calc
77
+ str = yield
78
+ table = Action.tab_to_table(str)
79
+ WabisabiTable.fill_empty_td(table)
80
+ Action.table_calc(table)
81
+ return table
82
+ end
83
+
84
+ def self.tab_to_table(str)
85
+ table = [:table]
86
+ str.each {|line|
87
+ ff = line.chomp.split(/\t/)
88
+ next if ff.empty?
89
+ tr = [:tr]
90
+ ff.each {|f|
91
+ tr << [:td, f]
92
+ }
93
+ table << tr
94
+ }
95
+ return nil if table.length == 1
96
+ return table
97
+ end
98
+
99
+ def self.table_calc(table)
100
+ sum = Array.new(0)
101
+ #pp table
102
+ WabisabiTable.each_td(table) {|td, col, row|
103
+ t = td[1]
104
+ prefix, n, suffix = Action.parse_num(t)
105
+ if n
106
+ #qp col, n
107
+ sum[col] ||= 0
108
+ sum[col] += n
109
+ end
110
+ }
111
+
112
+ max_col = WabisabiTable.max_col(table)
113
+
114
+ tr = [:tr, {:class=>'sum'}]
115
+ max_col.times {|n|
116
+ s = sum[n]
117
+ ss = ''
118
+ ss = s.to_s if s
119
+ tr << [:td, ss]
120
+ }
121
+
122
+ table << tr
123
+
124
+ return table
125
+ end
126
+
127
+ def plg_calc
128
+ str = yield
129
+
130
+ tokens = TextTokenizer.tokenize(str)
131
+
132
+ table = []
133
+ sum = []
134
+
135
+ used_prefix = []
136
+ used_suffix = []
137
+
138
+ tokens.each {|token|
139
+ case token[0]
140
+ when :table
141
+ col = []
142
+ token[1..-1].each_with_index {|t, i|
143
+ prefix, n, suffix = Action.parse_num(t)
144
+ col << t
145
+ if n
146
+ sum[i] ||= 0
147
+ if sum[i] != :NaN
148
+ sum[i] += n
149
+ end
150
+
151
+ if prefix
152
+ if used_prefix[i].nil?
153
+ used_prefix[i] = prefix
154
+ end
155
+ end
156
+
157
+ if suffix
158
+ if used_suffix[i].nil?
159
+ used_suffix[i] = suffix
160
+ end
161
+ end
162
+
163
+ else
164
+ sum[i] = :NaN
165
+ end
166
+ }
167
+ table << col
168
+ else
169
+ return 'you can use only tables in calc plugin'
170
+ end
171
+ }
172
+
173
+ if 0 < sum.length
174
+ sum_str = []
175
+ sum.each_with_index {|s, i|
176
+ if s == :NaN
177
+ sum_str << ''
178
+ else
179
+ sum_str << [used_prefix[i], s.to_s, used_suffix[i]].join
180
+ end
181
+ }
182
+ tokens << [:table, *sum_str]
183
+ end
184
+
185
+ tree = TextParser.make_tree(tokens)
186
+
187
+ table = tree[0]
188
+ last_tr = table.last
189
+ last_tr.insert(1, {:class=>'sum'})
190
+
191
+ return tree
192
+ end
193
+
194
+ CALC_INT_RE = /\A[0-9,]+\z/
195
+ CALC_FLOAT_RE = /\A[0-9,.]+\z/
196
+
197
+ def self.parse_num(str)
198
+ return [nil, 0, nil] if str.empty?
199
+ return [nil, nil, nil] if /\A[^0-9]+\z/ =~ str # no number
200
+
201
+ prefix = suffix = nil
202
+
203
+ if /\A([^-0-9]+)[0-9]/ =~ str
204
+ prefix = $1
205
+ str = str.sub($1, '')
206
+ end
207
+
208
+ if /[0-9]([^0-9]+)\z/ =~ str
209
+ suffix = $1
210
+ str = str.sub($1, '')
211
+ end
212
+
213
+ if /[^-.,0-9]/ =~ str
214
+ return [nil, nil, nil]
215
+ end
216
+
217
+ i = str.to_i
218
+ f = str.to_f
219
+ n = (f-i) == 0 ? i : f
220
+ return [prefix, n, suffix]
221
+ end
222
+ end
223
+ end
224
+
225
+ if $0 == __FILE__
226
+ require 'qwik/test-common'
227
+ $test = true
228
+ end
229
+
230
+ if defined?($test) && $test
231
+ class TestActCalc < Test::Unit::TestCase
232
+ include TestSession
233
+
234
+ def test_class_method
235
+ c = Qwik::Action
236
+
237
+ # test_tab_to_table
238
+ eq nil, c.tab_to_table("")
239
+ eq [:table, [:tr, [:td, "a"]]], c.tab_to_table("a")
240
+ eq [:table, [:tr, [:td, "a"], [:td, "b"]]], c.tab_to_table("a\tb")
241
+ eq [:table, [:tr, [:td, "a"], [:td, "b"]], [:tr, [:td, "c"]]],
242
+ c.tab_to_table("a\tb\nc")
243
+ eq [:table, [:tr, [:td, "a"], [:td, "b"]], [:tr, [:td, "c"], [:td, "d"]]],
244
+ c.tab_to_table("a\tb\nc\td")
245
+
246
+ # test_parse_num
247
+ ok_eq([nil, 0, nil], c.parse_num(''))
248
+ ok_eq([nil, nil, nil], c.parse_num('a'))
249
+ ok_eq([nil, 1, nil], c.parse_num('1'))
250
+ ok_eq([nil, 1.5, nil], c.parse_num('1.5'))
251
+ ok_eq([nil, 1, 'MB'], c.parse_num('1MB'))
252
+ ok_eq([nil, 1.5,'MB'], c.parse_num('1.5MB'))
253
+ ok_eq(['$', 1, nil], c.parse_num('$1'))
254
+ ok_eq(['$', 1.5, nil], c.parse_num('$1.5'))
255
+ eq [nil, nil, nil], c.parse_num('1/2')
256
+ end
257
+
258
+ def test_tab_calc
259
+ res = session
260
+
261
+ ok_wi [:table, [:tr, [:td, '1']], [:tr, [:td, '2']],
262
+ [:tr, {:class=>'sum'}, [:td, '3']]],
263
+ '{{tab_calc
264
+ 1
265
+ 2
266
+ }}'
267
+
268
+ ok_wi [:table,
269
+ [:tr, [:td, "6/7"], [:td, "100"], [:td, "Item A"]],
270
+ [:tr, [:td, "6/8"], [:td, "200"], [:td, "Item B"]],
271
+ [:tr, {:class=>"sum"}, [:td, ""], [:td, "300"], [:td, ""]]],
272
+ '{{tab_calc
273
+ 6/7 100 Item A
274
+ 6/8 200 Item B
275
+ }}'
276
+ end
277
+
278
+ def test_all
279
+ res = session
280
+
281
+ # test plg_calc
282
+ ok_wi([:table, [:tr, [:td, '0']], [:tr, {:class=>'sum'}, [:td, '0']]],
283
+ '{{calc
284
+ ,0
285
+ }}')
286
+ ok_wi([:table, [:tr, [:td, '1']], [:tr, [:td, '2']],
287
+ [:tr, {:class=>'sum'}, [:td, '3']]], '{{calc
288
+ ,1
289
+ ,2
290
+ }}')
291
+ ok_wi([:table,
292
+ [:tr, [:td, '1'], [:td, '3.4']],
293
+ [:tr, [:td, '2'], [:td, '5.6']],
294
+ [:tr, {:class=>'sum'}, [:td, '3'], [:td, '9.0']]],
295
+ '{{calc
296
+ ,1,3.4
297
+ ,2,5.6
298
+ }}')
299
+ ok_wi([:table, [:tr, [:td, 'a'], [:td, '0']],
300
+ [:tr, {:class=>'sum'}, [:td, ''], [:td, '0']]],
301
+ '{{calc
302
+ ,a,0
303
+ }}')
304
+ ok_wi([:table, [:tr, [:td, '1MB']], [:tr, {:class=>'sum'}, [:td, '1MB']]],
305
+ '{{calc
306
+ ,1MB
307
+ }}')
308
+ ok_wi([:table, [:tr, [:td, '$1']], [:tr, {:class=>'sum'}, [:td, '$1']]],
309
+ '{{calc
310
+ ,$1
311
+ }}')
312
+ ok_wi([:table, [:tr, [:td, '$1']], [:tr, {:class=>'sum'}, [:td, '$1']]],
313
+ '{{calc
314
+ ,$1,
315
+ }}' )
316
+ ok_wi([:table,
317
+ [:tr, [:td, "$100\t"], [:td, 'CPU']],
318
+ [:tr, [:td, "$100\t"], [:td, 'Memory']],
319
+ [:tr, [:td, "$20.5\t"], [:td, 'Cable']],
320
+ [:tr, [:td, "$250\t"], [:td, 'Graphic Card']],
321
+ [:tr, [:td, "$250\t"], [:td, 'HDD']],
322
+ [:tr, [:td, "$400\t"], [:td, 'Mother Board']],
323
+ [:tr, {:class=>'sum'}, [:td, "$1120.5\t"], [:td, '']]],
324
+ '{{calc
325
+ ,$100 ,CPU
326
+ ,$100 ,Memory
327
+ ,$20.5 ,Cable
328
+ ,$250 ,Graphic Card
329
+ ,$250 ,HDD
330
+ ,$400 ,Mother Board
331
+ }}')
332
+ ok_wi([:table,
333
+ [:tr, [:td, '1��'], [:td, "\tCPU"]],
334
+ [:tr, [:td, '1��'], [:td, "\tMemory"]],
335
+ [:tr, [:td, '0.2��'], [:td, "\tAdapter"]],
336
+ [:tr, [:td, '2.5��'], [:td, "\tnVidia"]],
337
+ [:tr, [:td, '2.5��'], [:td, "\tHDD 250GB"]],
338
+ [:tr, [:td, '4��'], [:td, "\tNAS"]],
339
+ [:tr, [:td, '22��'], [:td, "\tThinkPad X40"]],
340
+ [:tr, {:class=>'sum'}, [:td, '33.2��'], [:td, '']]],
341
+ '{{calc
342
+ ,1��, CPU
343
+ ,1��, Memory
344
+ ,0.2��, Adapter
345
+ ,2.5��, nVidia
346
+ ,2.5��, HDD 250GB
347
+ ,4��, NAS
348
+ ,22��, ThinkPad X40
349
+ }}')
350
+ ok_wi([:table,
351
+ [:tr, [:td, "a\t"], [:td, '10,000']],
352
+ [:tr, [:td, "b\t"], [:td, '20,000']],
353
+ [:tr, {:class=>'sum'}, [:td, ''], [:td, '30']]],
354
+ '{{calc
355
+ |a |10,000
356
+ |b |20,000
357
+ }}')
358
+ # Don't work.
359
+ ok_wi([:table,
360
+ [:tr, [:td, "���i\t"], [:td, '�l�i']],
361
+ [:tr, [:td, "a\t"], [:td, "\\10,000"]],
362
+ [:tr, [:td, "b\t"], [:td, "\\20,000"]],
363
+ [:tr, {:class=>'sum'}, [:td, ''], [:td, '']]],
364
+ '{{calc
365
+ |���i |�l�i
366
+ |a |\\10,000
367
+ |b |\\20,000
368
+ }}')
369
+ end
370
+ end
371
+ end
@@ -0,0 +1,251 @@
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
+ CHISE_DIR = File.expand_path(File.dirname(__FILE__)+'/../../../chise/ruby/lib')
6
+ $use_charset = CHISE_DIR.path.exist?
7
+
8
+ if defined?($use_charset) && $use_charset
9
+ $LOAD_PATH << CHISE_DIR unless $LOAD_PATH.include? CHISE_DIR
10
+ require 'chise'
11
+ require 'chise/ids'
12
+
13
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
14
+
15
+ module Qwik
16
+ class Action
17
+ def plg_define_char
18
+ str = yield
19
+ mode = nil
20
+ i = nil
21
+
22
+ h = {}
23
+ tokens = c_tokenize(str)
24
+ tokens.each {|t|
25
+ e = t[0]
26
+ case e
27
+ when :dt
28
+ # not yet.
29
+ when :dd
30
+ # not yet.
31
+ when :definition_term_close, :definition_desc_close
32
+ mode = nil
33
+ when :normal_text
34
+ s = t[:s]
35
+ if mode == :definition_term_open
36
+ i = s
37
+ elsif mode == :definition_desc_open
38
+ h[i] = s
39
+ end
40
+ end
41
+ }
42
+
43
+ if h['my']
44
+ c = "&my-#{h['my']};".de_er.char
45
+ h.each {|k, v|
46
+ c[k] = v
47
+ }
48
+ end
49
+
50
+ return
51
+ end
52
+
53
+ def my_char_ids(arg)
54
+ return unless /\A[0-9]+\z/ =~ arg.to_s
55
+ return "&my-#{arg};".de_er.char.ids.to_s
56
+ end
57
+
58
+ def my_char_kage_url
59
+ return 'http://127.0.0.1:5100/'
60
+ end
61
+
62
+ def plg_my_char(arg)
63
+ ids = my_char_ids(arg).to_utf8
64
+ return if ids.empty?
65
+ ids = ids.de_er
66
+
67
+ n = ids.gsub(/#0/, CHISE::IDC_LR).
68
+ gsub(/#1/, CHISE::IDC_AB).
69
+ gsub(/#2/, CHISE::IDC_LM).
70
+ gsub(/#3/, CHISE::IDC_AM).
71
+ gsub(/#4/, CHISE::IDC_FS).
72
+ gsub(/#5/, CHISE::IDC_FA).
73
+ gsub(/#6/, CHISE::IDC_FB).
74
+ gsub(/#7/, CHISE::IDC_FL).
75
+ gsub(/#8/, CHISE::IDC_UL).
76
+ gsub(/#9/, CHISE::IDC_UR).
77
+ gsub(/#a/i, CHISE::IDC_LL).
78
+ gsub(/#b/i, CHISE::IDC_OV)
79
+
80
+ ids = n
81
+
82
+ base = ids.to_a.map {|ch|
83
+ sprintf('u%04x',ch.ucs)
84
+ }.join
85
+ pngfile = "#{base}.gothic.png"
86
+ return [:img, {:src=>"#{my_char_kage_url}#{pngfile}",
87
+ :style=>"width:1em;", :alt=>pngfile}]
88
+ end
89
+ end
90
+ end
91
+
92
+ if $0 == __FILE__
93
+ require 'qwik/test-common'
94
+ $test = true
95
+ end
96
+
97
+ if defined?($test) && $test
98
+ # $use_charset = false
99
+ #class TestActCharset < Test::Unit::TestCase
100
+ class TestActCharset
101
+ include TestSession
102
+
103
+ def test_charset
104
+ n = 'CharTest'
105
+ page = @site.create(n)
106
+ page.store('test')
107
+ ok_eq(true, @site.exist?(n))
108
+ ok_wi('test', 'test')
109
+ ok_eq('test', page.load)
110
+ ok_eq('test', @site[n].load)
111
+ ok_wi('test', page.load)
112
+
113
+ str = "{{define_char
114
+ :my:1
115
+ :ids:#0�ؐX
116
+ }}
117
+
118
+ {{define_char
119
+ :my:2
120
+ :ids:#0�X�X
121
+ }}
122
+ "
123
+ page.store(str)
124
+
125
+ ok_wi('', page.load)
126
+ ok_eq("#0�ؐX", "&my-1;".de_er.char.ids)
127
+ ok_eq("#0�X�X", "&my-2;".de_er.char.ids)
128
+
129
+ url = @action.my_char_kage_url
130
+ page.store("{{my_char(1)}}")
131
+ ok_wi("<img src='#{url}u2ff0u6728u68ee.gothic.png' style='width:1em;'/>",
132
+ page.load)
133
+ page.store("&my-1;")
134
+ ok_wi("<img src='#{url}u2ff0u6728u68ee.gothic.png' style='width:1em;'/>",
135
+ page.load)
136
+ page.store("{{my_char(2)}}")
137
+ ok_wi("<img src='#{url}u2ff0u68eeu68ee.gothic.png' style='width:1em;'/>",
138
+ page.load)
139
+
140
+ page.store("{{my_char(a)}}")
141
+ ok_wi('', page.load)
142
+
143
+ #page.store("&my-3;") # does not exist.
144
+ #ok_wi("<p></p>\n", page.load) # It's empty.
145
+
146
+ page.store("{{my_char_ids(1)}}")
147
+ ok_wi("<p>#0�ؐX</p>\n", page.load)
148
+ page.store("{{my_char_ids(2)}}")
149
+ ok_wi("<p>#0�X�X</p>\n", page.load)
150
+
151
+ @site.delete(n)
152
+ ok_eq(false, @site.exist?(n))
153
+ end
154
+
155
+ def test_charset2
156
+ n = 'CharTest'
157
+ page = @site.create(n)
158
+ str = "{{define_char
159
+ :my:1
160
+ :ids:#0�ؐX
161
+ }}
162
+
163
+ {{define_char
164
+ :my:2
165
+ :ids:#0�X�X
166
+ }}
167
+
168
+ {{define_char
169
+ :my:3
170
+ :ids:#1&U-6728;�X
171
+ }}
172
+ "
173
+ page.store(str)
174
+
175
+ ok_wi('', page.load) # Eval the _chartest here.
176
+ ok_eq("#0�ؐX", "&my-1;".de_er.char.ids)
177
+ ok_eq("#0�X�X", "&my-2;".de_er.char.ids)
178
+ ok_eq("��", "&U-6728;".de_er)
179
+ #ok_eq("#1�ؐX", "&my-3;".de_er.char.ids)
180
+ #ok_eq("OV�s�d", "&my-2;".de_er.char.ids)
181
+ page.store("&my-1;")
182
+ url = @action.my_char_kage_url
183
+ ok_wi("<img src='#{url}u2ff0u6728u68ee.gothic.png' style='width:1em;'/>",
184
+ page.load)
185
+
186
+ @site.delete(n)
187
+ ok_eq(false, @site.exist?(n))
188
+ end
189
+ end
190
+
191
+ #class TestChiseBasic < Test::Unit::TestCase
192
+ class TestChiseBasic
193
+ include TestSession
194
+
195
+ def test_utf8
196
+ @char = "��".su.char
197
+ assert_equal "\273\372", "��".se
198
+ assert_equal "\345\255\227", "��".su
199
+ assert_equal "\273\372", "��".su.ue
200
+ assert_equal "\216\232", "��"
201
+ assert_equal "\273\372", "��".se
202
+ assert_equal "\345\255\227", "��".su
203
+ assert_equal "\216\232", "��".su.us
204
+ end
205
+
206
+ def test_er
207
+ @char = "��".su.char
208
+ assert_equal 23383, "��".su.ucs
209
+ assert_equal @char, CHISE::Character.get("&J90-3B7A;")
210
+ assert_equal @char, CHISE::Character.get("&MCS-00005B57;")
211
+ assert_equal @char, CHISE::Character.get("&M-06942;")
212
+ assert_equal "��", "&J90-3B7A;".de_er.us
213
+ assert_equal "��", "&U5B57;".de_er.us
214
+ assert_equal "��", "&U-5B57;".de_er.us
215
+ assert_equal "��", "&U+5B57;".de_er.us
216
+ assert_equal "��", "&#x5B57;".de_er.us
217
+ assert_equal "��", "&#23383;".de_er.us
218
+ end
219
+
220
+ def test_my
221
+ @char = "��".su.char
222
+ # private use area: 0xe000�`0xf8ff
223
+ k = CHISE::Character.get(0xe001)
224
+ assert_equal 0xe001, k.ucs
225
+ assert_equal "<\356\200\201,\#xe001>", k.inspect
226
+
227
+ k = "&#xe001;".de_er.char
228
+ assert_equal 0xe001, k.ucs
229
+
230
+ k = "&my-0001;".de_er.char
231
+ assert_equal 0xe001, k.ucs
232
+ k.ids = CHISE::IDC_LR+"�ؐX"
233
+ assert_equal CHISE::IDC_LR+"�ؐX", k.ids
234
+ assert_equal CHISE::IDC_LR+"�ؐX", "&my-0001;".de_er.ids
235
+ u = 'http://home.fonts.jp:5100/'
236
+ k.kage_url = u
237
+ assert_equal u, "&my-0001;".de_er.kage_url
238
+
239
+ k = "&my-0002;".de_er.char
240
+ assert_equal 0xe002, k.ucs
241
+ k.ids = CHISE::IDC_LR+"�X�X"
242
+ assert_equal CHISE::IDC_LR+"�X�X", k.ids
243
+ assert_equal CHISE::IDC_LR+"�X�X", "&my-0002;".de_er.ids
244
+
245
+ "��".eu.mydepth = 1
246
+ assert_equal 1, "��".eu.mydepth
247
+ end
248
+ end
249
+ end
250
+
251
+ end