tdiary 3.2.2.20130507

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 (509) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +16 -0
  4. data/.travis.yml +29 -0
  5. data/Capfile +2 -0
  6. data/ChangeLog +3173 -0
  7. data/Gemfile +58 -0
  8. data/Gemfile.lock +201 -0
  9. data/LICENSE +340 -0
  10. data/Procfile +1 -0
  11. data/README.md +33 -0
  12. data/Rakefile +26 -0
  13. data/bin/tdiary +7 -0
  14. data/config.ru +61 -0
  15. data/data/.htaccess +2 -0
  16. data/doc/HOWTO-authenticate-in-rack.md +89 -0
  17. data/doc/HOWTO-make-io.md +305 -0
  18. data/doc/HOWTO-make-plugin.md +279 -0
  19. data/doc/HOWTO-make-theme.md +67 -0
  20. data/doc/HOWTO-testing-tDiary.md +44 -0
  21. data/doc/HOWTO-use-plugin.md +148 -0
  22. data/doc/HOWTO-write-tDiary.en.md +131 -0
  23. data/doc/HOWTO-write-tDiary.md +136 -0
  24. data/doc/INSTALL-paas.md +202 -0
  25. data/doc/INSTALL.md +160 -0
  26. data/doc/README.en.md +174 -0
  27. data/doc/README.md +56 -0
  28. data/doc/UPGRADE.md +164 -0
  29. data/doc/doc.css +115 -0
  30. data/dot.htaccess +27 -0
  31. data/index.fcgi +45 -0
  32. data/index.rb +57 -0
  33. data/js/00default.js +60 -0
  34. data/js/01conf.js +62 -0
  35. data/js/02edit.coffee +5 -0
  36. data/js/02edit.js +15 -0
  37. data/js/amazon.js +43 -0
  38. data/js/calendar3.js +130 -0
  39. data/js/caretposition.js +170 -0
  40. data/js/category.js +29 -0
  41. data/js/category_autocomplete.js +96 -0
  42. data/js/comment_ajax.js +27 -0
  43. data/js/draft.js +149 -0
  44. data/js/highlight.js +36 -0
  45. data/js/image.js +181 -0
  46. data/misc/convert2.rb +123 -0
  47. data/misc/filter/antispamservice.rb +101 -0
  48. data/misc/filter/limitdays.rb +40 -0
  49. data/misc/filter/linkcheck.rb +81 -0
  50. data/misc/filter/plugin/antispamservice.rb +82 -0
  51. data/misc/filter/plugin/en/antispamservice.rb +21 -0
  52. data/misc/filter/plugin/ja/antispamservice.rb +20 -0
  53. data/misc/lib/README +4 -0
  54. data/misc/lib/compatible.rb +1 -0
  55. data/misc/lib/fcgi_patch.rb +90 -0
  56. data/misc/migrate.rb +157 -0
  57. data/misc/paas/cloudfoundry/Gemfile +26 -0
  58. data/misc/paas/cloudfoundry/Gemfile.lock +85 -0
  59. data/misc/paas/heroku/Gemfile +22 -0
  60. data/misc/paas/heroku/Gemfile.lock +85 -0
  61. data/misc/paas/sqale/Gemfile +19 -0
  62. data/misc/paas/sqale/Gemfile.lock +85 -0
  63. data/misc/paas/sqale/Procfile +1 -0
  64. data/misc/paas/sqale/dot.env +1 -0
  65. data/misc/plugin/ChangeLog.DO_NOT_UPDATE +2333 -0
  66. data/misc/plugin/a.rb +211 -0
  67. data/misc/plugin/amazon.rb +403 -0
  68. data/misc/plugin/amazon/README.en +17 -0
  69. data/misc/plugin/amazon/README.ja +29 -0
  70. data/misc/plugin/amazon/amazonimg.rb +113 -0
  71. data/misc/plugin/amazon/large.png +0 -0
  72. data/misc/plugin/amazon/medium.png +0 -0
  73. data/misc/plugin/amazon/small.png +0 -0
  74. data/misc/plugin/append-css.rb +51 -0
  75. data/misc/plugin/bq.rb +48 -0
  76. data/misc/plugin/calendar2.rb +184 -0
  77. data/misc/plugin/calendar3.rb +256 -0
  78. data/misc/plugin/category.rb +779 -0
  79. data/misc/plugin/category_autocomplete.rb +33 -0
  80. data/misc/plugin/comment_ajax.rb +11 -0
  81. data/misc/plugin/comment_mail-qmail.rb +57 -0
  82. data/misc/plugin/comment_mail-sendmail.rb +56 -0
  83. data/misc/plugin/comment_mail-smtp.rb +59 -0
  84. data/misc/plugin/comment_rank.rb +36 -0
  85. data/misc/plugin/counter.rb +631 -0
  86. data/misc/plugin/daily_theme.rb +55 -0
  87. data/misc/plugin/disp_referrer.rb +1486 -0
  88. data/misc/plugin/doctype-html401tr.rb +16 -0
  89. data/misc/plugin/draft.rb +20 -0
  90. data/misc/plugin/dropdown_calendar.rb +32 -0
  91. data/misc/plugin/edit_today.rb +50 -0
  92. data/misc/plugin/en/a.rb +10 -0
  93. data/misc/plugin/en/amazon.rb +71 -0
  94. data/misc/plugin/en/append-css.rb +17 -0
  95. data/misc/plugin/en/bq.rb +12 -0
  96. data/misc/plugin/en/calendar2.rb +12 -0
  97. data/misc/plugin/en/category.rb +204 -0
  98. data/misc/plugin/en/counter.rb +48 -0
  99. data/misc/plugin/en/daily_theme.rb +14 -0
  100. data/misc/plugin/en/disp_referrer.rb +387 -0
  101. data/misc/plugin/en/dropdown_calendar.rb +14 -0
  102. data/misc/plugin/en/edit_today.rb +22 -0
  103. data/misc/plugin/en/hide-mail-field.rb +19 -0
  104. data/misc/plugin/en/highlight.rb +29 -0
  105. data/misc/plugin/en/image.rb +54 -0
  106. data/misc/plugin/en/kw.rb +22 -0
  107. data/misc/plugin/en/makerss.rb +47 -0
  108. data/misc/plugin/en/pb-show.rb +21 -0
  109. data/misc/plugin/en/ping.rb +16 -0
  110. data/misc/plugin/en/recent_comment.rb +44 -0
  111. data/misc/plugin/en/recent_comment3.rb +56 -0
  112. data/misc/plugin/en/recent_rss.rb +33 -0
  113. data/misc/plugin/en/referer_scheme.rb +48 -0
  114. data/misc/plugin/en/search_control.rb +74 -0
  115. data/misc/plugin/en/search_form.rb +22 -0
  116. data/misc/plugin/en/speed_comment.rb +19 -0
  117. data/misc/plugin/en/tb-show.rb +37 -0
  118. data/misc/plugin/en/todo.rb +43 -0
  119. data/misc/plugin/en/weather.rb +185 -0
  120. data/misc/plugin/en/xmlrpc.rb +14 -0
  121. data/misc/plugin/footnote.rb +92 -0
  122. data/misc/plugin/gradation.rb +39 -0
  123. data/misc/plugin/gradient.rb +36 -0
  124. data/misc/plugin/hide-mail-field.rb +50 -0
  125. data/misc/plugin/highlight.rb +22 -0
  126. data/misc/plugin/html_anchor.rb +34 -0
  127. data/misc/plugin/image.rb +290 -0
  128. data/misc/plugin/ja/amazon.rb +89 -0
  129. data/misc/plugin/ja/bq.rb +13 -0
  130. data/misc/plugin/ja/calendar2.rb +12 -0
  131. data/misc/plugin/ja/category.rb +212 -0
  132. data/misc/plugin/ja/daily_theme.rb +15 -0
  133. data/misc/plugin/ja/disp_referrer.rb +644 -0
  134. data/misc/plugin/ja/edit_today.rb +23 -0
  135. data/misc/plugin/ja/hide-mail-field.rb +20 -0
  136. data/misc/plugin/ja/highlight.rb +30 -0
  137. data/misc/plugin/ja/makerss.rb +44 -0
  138. data/misc/plugin/ja/my-sequel.rb +52 -0
  139. data/misc/plugin/ja/pb-show.rb +23 -0
  140. data/misc/plugin/ja/ping.rb +17 -0
  141. data/misc/plugin/ja/recent_comment.rb +45 -0
  142. data/misc/plugin/ja/recent_comment3.rb +57 -0
  143. data/misc/plugin/ja/recent_rss.rb +34 -0
  144. data/misc/plugin/ja/referer_scheme.rb +86 -0
  145. data/misc/plugin/ja/search_control.rb +75 -0
  146. data/misc/plugin/ja/search_form.rb +32 -0
  147. data/misc/plugin/ja/tb-show.rb +38 -0
  148. data/misc/plugin/ja/todo.rb +46 -0
  149. data/misc/plugin/ja/weather.rb +402 -0
  150. data/misc/plugin/ja/xmlrpc.rb +15 -0
  151. data/misc/plugin/kw.rb +150 -0
  152. data/misc/plugin/list.rb +40 -0
  153. data/misc/plugin/makelirs.rb +89 -0
  154. data/misc/plugin/makerss.rb +744 -0
  155. data/misc/plugin/my-ex.rb +68 -0
  156. data/misc/plugin/my-sequel.rb +539 -0
  157. data/misc/plugin/navi_user.rb +19 -0
  158. data/misc/plugin/number_anchor.rb +47 -0
  159. data/misc/plugin/pb-show.rb +165 -0
  160. data/misc/plugin/ping.rb +99 -0
  161. data/misc/plugin/pre_wrap.rb +19 -0
  162. data/misc/plugin/random_google.rb +165 -0
  163. data/misc/plugin/recent_comment.rb +82 -0
  164. data/misc/plugin/recent_comment3.rb +192 -0
  165. data/misc/plugin/recent_list.rb +91 -0
  166. data/misc/plugin/recent_namazu.rb +50 -0
  167. data/misc/plugin/recent_rss.rb +305 -0
  168. data/misc/plugin/referer-antibot.rb +53 -0
  169. data/misc/plugin/referer-utf8.rb +12 -0
  170. data/misc/plugin/referer_scheme.rb +87 -0
  171. data/misc/plugin/search_control.rb +227 -0
  172. data/misc/plugin/search_form.rb +53 -0
  173. data/misc/plugin/sn.rb +107 -0
  174. data/misc/plugin/speed_comment.rb +68 -0
  175. data/misc/plugin/squeeze.rb +272 -0
  176. data/misc/plugin/src.rb +30 -0
  177. data/misc/plugin/tb-show.rb +212 -0
  178. data/misc/plugin/title_list.rb +41 -0
  179. data/misc/plugin/title_tag.rb +80 -0
  180. data/misc/plugin/tlink.rb +163 -0
  181. data/misc/plugin/todo.rb +182 -0
  182. data/misc/plugin/weather.rb +505 -0
  183. data/misc/plugin/whatsnew.rb +100 -0
  184. data/misc/plugin/xmlrpc.rb +80 -0
  185. data/misc/plugin/xmlrpc/README +20 -0
  186. data/misc/plugin/xmlrpc/xmlrpc.rb +575 -0
  187. data/misc/style/emptdiary/README.rd +83 -0
  188. data/misc/style/emptdiary/README.rd.en +78 -0
  189. data/misc/style/emptdiary/emptdiary_style.rb +199 -0
  190. data/misc/style/etdiary/README.rd +83 -0
  191. data/misc/style/etdiary/etdiary_style.rb +446 -0
  192. data/misc/style/gfm/gfm_style.rb +194 -0
  193. data/misc/style/rd/README.rd +71 -0
  194. data/misc/style/rd/rd_style.rb +366 -0
  195. data/misc/style/wiki/README +116 -0
  196. data/misc/style/wiki/README.en +101 -0
  197. data/misc/style/wiki/wiki_parser.rb +273 -0
  198. data/misc/style/wiki/wiki_style.rb +478 -0
  199. data/misc/theme_convert/Readme.rd +21 -0
  200. data/misc/theme_convert/append.rcss +150 -0
  201. data/misc/theme_convert/theme_convert.rb +453 -0
  202. data/plugin/00default.rb +1015 -0
  203. data/plugin/05referer.rb +298 -0
  204. data/plugin/10spamfilter.rb +183 -0
  205. data/plugin/50sp.rb +146 -0
  206. data/plugin/60sf.rb +152 -0
  207. data/plugin/90migrate.rb +109 -0
  208. data/plugin/en/00default.rb +390 -0
  209. data/plugin/en/05referer.rb +49 -0
  210. data/plugin/en/10spamfilter.rb +81 -0
  211. data/plugin/en/50sp.rb +56 -0
  212. data/plugin/en/60sf.rb +60 -0
  213. data/plugin/ja/00default.rb +401 -0
  214. data/plugin/ja/05referer.rb +47 -0
  215. data/plugin/ja/10spamfilter.rb +79 -0
  216. data/plugin/ja/50sp.rb +66 -0
  217. data/plugin/ja/60sf.rb +73 -0
  218. data/public/.gitkeep +0 -0
  219. data/public/images/.gitkeep +0 -0
  220. data/public/javascripts/.gitkeep +0 -0
  221. data/public/stylesheets/.gitkeep +0 -0
  222. data/skel/category.rhtml +9 -0
  223. data/skel/conf.rhtml +23 -0
  224. data/skel/day.rhtml +33 -0
  225. data/skel/diary.rhtml +83 -0
  226. data/skel/footer.rhtml +8 -0
  227. data/skel/header.rhtml +10 -0
  228. data/skel/i.category.rhtml +6 -0
  229. data/skel/i.conf.rhtml +14 -0
  230. data/skel/i.day.rhtml +28 -0
  231. data/skel/i.diary.rhtml +17 -0
  232. data/skel/i.footer.rhtml +2 -0
  233. data/skel/i.header.rhtml +3 -0
  234. data/skel/i.latest.rhtml +24 -0
  235. data/skel/i.month.rhtml +39 -0
  236. data/skel/i.search.rhtml +5 -0
  237. data/skel/i.update.rhtml +40 -0
  238. data/skel/i.update.rhtml.en +40 -0
  239. data/skel/latest.rhtml +27 -0
  240. data/skel/mail.rtxt +18 -0
  241. data/skel/mail.rtxt.en +18 -0
  242. data/skel/month.rhtml +27 -0
  243. data/skel/plugin_error.rhtml +27 -0
  244. data/skel/preview.rhtml +85 -0
  245. data/skel/preview.rhtml.en +72 -0
  246. data/skel/referer.rhtml +24 -0
  247. data/skel/search.rhtml +14 -0
  248. data/skel/tdiary.rconf +76 -0
  249. data/skel/update.rhtml +103 -0
  250. data/skel/update.rhtml.en +83 -0
  251. data/spec/acceptance/append_comment_spec.rb +94 -0
  252. data/spec/acceptance/append_diary_spec.rb +98 -0
  253. data/spec/acceptance/bugfix/encoding_error_spec.rb +27 -0
  254. data/spec/acceptance/save_conf_comment_spec.rb +87 -0
  255. data/spec/acceptance/save_conf_default_spec.rb +169 -0
  256. data/spec/acceptance/save_conf_dnsbl_spec.rb +152 -0
  257. data/spec/acceptance/save_conf_filter_spec.rb +50 -0
  258. data/spec/acceptance/save_conf_plugin_spec.rb +69 -0
  259. data/spec/acceptance/save_conf_referer_spec.rb +60 -0
  260. data/spec/acceptance/save_conf_security_spec.rb +280 -0
  261. data/spec/acceptance/support/helpers.rb +49 -0
  262. data/spec/acceptance/support/paths.rb +7 -0
  263. data/spec/acceptance/update_diary_spec.rb +113 -0
  264. data/spec/acceptance/view_category_spec.rb +38 -0
  265. data/spec/acceptance/view_comment_spec.rb +67 -0
  266. data/spec/acceptance/view_diary_spec.rb +126 -0
  267. data/spec/acceptance/view_referer_spec.rb +31 -0
  268. data/spec/acceptance_helper.rb +101 -0
  269. data/spec/core/compatible_spec.rb +54 -0
  270. data/spec/core/core_ext_spec.rb +59 -0
  271. data/spec/core/plugin_spec.rb +389 -0
  272. data/spec/core/rack/assets/precompile_spec.rb +76 -0
  273. data/spec/core/rack/html_anchor_spec.rb +57 -0
  274. data/spec/core/rack/valid_request_path_spec.rb +67 -0
  275. data/spec/core/style/emptdiary_style_spec.rb +165 -0
  276. data/spec/core/style/etdiary_style_spec.rb +512 -0
  277. data/spec/core/style/gfm_style_spec.rb +334 -0
  278. data/spec/core/style/rd_style_spec.rb +202 -0
  279. data/spec/core/style/tdiary_style_spec.rb +240 -0
  280. data/spec/core/style/wiki_style_spec.rb +441 -0
  281. data/spec/fixtures/ascii8bit-pstore.db +0 -0
  282. data/spec/fixtures/invalid-sequence-volatile.tdr +9 -0
  283. data/spec/fixtures/just_installed.conf +1 -0
  284. data/spec/fixtures/plugin/ja/sample.rb +4 -0
  285. data/spec/fixtures/plugin/sample.rb +6 -0
  286. data/spec/fixtures/sample.rb +12 -0
  287. data/spec/fixtures/tdiary.conf.gem +212 -0
  288. data/spec/fixtures/tdiary.conf.rack +212 -0
  289. data/spec/fixtures/tdiary.conf.rdb +227 -0
  290. data/spec/fixtures/tdiary.conf.secure +204 -0
  291. data/spec/fixtures/tdiary.conf.webrick +212 -0
  292. data/spec/javascripts/00default_spec.js +35 -0
  293. data/spec/javascripts/fixtures/00default.html +1 -0
  294. data/spec/javascripts/support/jasmine.yml +76 -0
  295. data/spec/plugin/bq_spec.rb +24 -0
  296. data/spec/plugin/plugin_helper.rb +203 -0
  297. data/spec/spec_helper.rb +32 -0
  298. data/tdiary.conf.beginner +244 -0
  299. data/tdiary.conf.sample +345 -0
  300. data/tdiary.conf.sample-en +333 -0
  301. data/tdiary.gemspec +26 -0
  302. data/tdiary.rb +151 -0
  303. data/tdiary/admin.rb +236 -0
  304. data/tdiary/application.rb +57 -0
  305. data/tdiary/author_only_base.rb +171 -0
  306. data/tdiary/base.rb +220 -0
  307. data/tdiary/cli.rb +116 -0
  308. data/tdiary/comment.rb +40 -0
  309. data/tdiary/comment_manager.rb +94 -0
  310. data/tdiary/compatible.rb +72 -0
  311. data/tdiary/config.rb +270 -0
  312. data/tdiary/core_ext.rb +122 -0
  313. data/tdiary/deploy.rb +50 -0
  314. data/tdiary/dispatcher.rb +77 -0
  315. data/tdiary/dispatcher/index_main.rb +122 -0
  316. data/tdiary/dispatcher/update_main.rb +101 -0
  317. data/tdiary/environment.rb +15 -0
  318. data/tdiary/filter.rb +48 -0
  319. data/tdiary/filter/default.rb +54 -0
  320. data/tdiary/filter/spam.rb +304 -0
  321. data/tdiary/io/base.rb +70 -0
  322. data/tdiary/io/cache/file.rb +123 -0
  323. data/tdiary/io/cache/memcached.rb +88 -0
  324. data/tdiary/io/cache/redis.rb +100 -0
  325. data/tdiary/io/default.rb +297 -0
  326. data/tdiary/io/pstore.rb +252 -0
  327. data/tdiary/io/rdb.rb +213 -0
  328. data/tdiary/lang/en.rb +79 -0
  329. data/tdiary/lang/ja.rb +72 -0
  330. data/tdiary/plugin.rb +375 -0
  331. data/tdiary/rack/assets/precompile.rb +37 -0
  332. data/tdiary/rack/auth/basic.rb +38 -0
  333. data/tdiary/rack/auth/omniauth.rb +51 -0
  334. data/tdiary/rack/html_anchor.rb +31 -0
  335. data/tdiary/rack/valid_request_path.rb +36 -0
  336. data/tdiary/referer_manager.rb +80 -0
  337. data/tdiary/request.rb +217 -0
  338. data/tdiary/response.rb +29 -0
  339. data/tdiary/server.rb +85 -0
  340. data/tdiary/style.rb +194 -0
  341. data/tdiary/style/tdiary_style.rb +198 -0
  342. data/tdiary/style/wiki_style.rb +213 -0
  343. data/tdiary/tasks.rb +1 -0
  344. data/tdiary/tasks/assets.rake +31 -0
  345. data/tdiary/tasks/auth.rake +28 -0
  346. data/tdiary/tasks/db.rake +110 -0
  347. data/tdiary/tasks/doc.rake +31 -0
  348. data/tdiary/tasks/heroku.rake +37 -0
  349. data/tdiary/tasks/jasmine.rake +16 -0
  350. data/tdiary/tasks/rdoc.rake +24 -0
  351. data/tdiary/tasks/release.rake +122 -0
  352. data/tdiary/tasks/rspec.rake +51 -0
  353. data/tdiary/tasks/server.rake +33 -0
  354. data/tdiary/tasks/test.rake +17 -0
  355. data/tdiary/version.rb +3 -0
  356. data/tdiary/view.rb +468 -0
  357. data/tdiary/view_helper.rb +15 -0
  358. data/test/disp_referrer_test.rb +93 -0
  359. data/test/my-sequel_test.rb +238 -0
  360. data/test/test_helper.rb +7 -0
  361. data/test/test_plugin_helper.rb +64 -0
  362. data/test/test_plugin_helper_test.rb +28 -0
  363. data/test/weather_test.rb +33 -0
  364. data/theme/base.css +268 -0
  365. data/theme/conf.block.png +0 -0
  366. data/theme/conf.css +254 -0
  367. data/theme/default/README +11 -0
  368. data/theme/default/body.png +0 -0
  369. data/theme/default/default.css +743 -0
  370. data/theme/help.png +0 -0
  371. data/theme/loading.gif +0 -0
  372. data/theme/tdiary1/README +7 -0
  373. data/theme/tdiary1/tdiary1.css +394 -0
  374. data/theme/tdiary2/README +19 -0
  375. data/theme/tdiary2/tdiary2.css +624 -0
  376. data/update.fcgi +45 -0
  377. data/update.rb +57 -0
  378. data/vendor/hikidoc-0.0.6/COPYING +28 -0
  379. data/vendor/hikidoc-0.0.6/NEWS +30 -0
  380. data/vendor/hikidoc-0.0.6/NEWS.ja +30 -0
  381. data/vendor/hikidoc-0.0.6/README +86 -0
  382. data/vendor/hikidoc-0.0.6/README.ja +83 -0
  383. data/vendor/hikidoc-0.0.6/Rakefile +68 -0
  384. data/vendor/hikidoc-0.0.6/TextFormattingRules +320 -0
  385. data/vendor/hikidoc-0.0.6/TextFormattingRules.ja +318 -0
  386. data/vendor/hikidoc-0.0.6/bin/hikidoc +66 -0
  387. data/vendor/hikidoc-0.0.6/lib/hikidoc.rb +914 -0
  388. data/vendor/hikidoc-0.0.6/setup.rb +1360 -0
  389. data/vendor/hikidoc-0.0.6/test/run-test.rb +13 -0
  390. data/vendor/hikidoc-0.0.6/test/test_hikidoc.rb +506 -0
  391. data/vendor/imagesize-0.1.1/Manifest.txt +19 -0
  392. data/vendor/imagesize-0.1.1/README.txt +49 -0
  393. data/vendor/imagesize-0.1.1/lib/image_size.rb +305 -0
  394. data/vendor/imagesize-0.1.1/lib/image_size/version.rb +9 -0
  395. data/vendor/imagesize-0.1.1/setup.rb +1585 -0
  396. data/vendor/imagesize-0.1.1/test/2-4-7.png +0 -0
  397. data/vendor/imagesize-0.1.1/test/4_1_2.gif +0 -0
  398. data/vendor/imagesize-0.1.1/test/bmp.bmp +0 -0
  399. data/vendor/imagesize-0.1.1/test/cursor.xbm +6 -0
  400. data/vendor/imagesize-0.1.1/test/detect.swf +0 -0
  401. data/vendor/imagesize-0.1.1/test/pbm.pbm +0 -0
  402. data/vendor/imagesize-0.1.1/test/pcx.pcx +0 -0
  403. data/vendor/imagesize-0.1.1/test/pgm.pgm +5 -0
  404. data/vendor/imagesize-0.1.1/test/test.xpm +38 -0
  405. data/vendor/imagesize-0.1.1/test/test_helper.rb +2 -0
  406. data/vendor/imagesize-0.1.1/test/test_image_size.rb +71 -0
  407. data/vendor/imagesize-0.1.1/test/tiff.tiff +0 -0
  408. data/vendor/imagesize-0.1.1/test/tokyo_tower.jpg +0 -0
  409. data/vendor/imagesize-0.1.1/test/tower_e.gif.psd +0 -0
  410. data/vendor/jasmine-jquery-1.4.2/jasmine-jquery.js +548 -0
  411. data/vendor/jquery-1.8/jquery.js +9227 -0
  412. data/vendor/rdtool-0.6.38/COPYING.txt +339 -0
  413. data/vendor/rdtool-0.6.38/Gemfile +3 -0
  414. data/vendor/rdtool-0.6.38/HISTORY +318 -0
  415. data/vendor/rdtool-0.6.38/LGPL-2.1 +502 -0
  416. data/vendor/rdtool-0.6.38/LICENSE.txt +58 -0
  417. data/vendor/rdtool-0.6.38/README.html +66 -0
  418. data/vendor/rdtool-0.6.38/README.ja.html +73 -0
  419. data/vendor/rdtool-0.6.38/README.rd +76 -0
  420. data/vendor/rdtool-0.6.38/README.rd.ja +85 -0
  421. data/vendor/rdtool-0.6.38/Rakefile +152 -0
  422. data/vendor/rdtool-0.6.38/TODO +22 -0
  423. data/vendor/rdtool-0.6.38/bin/rd2 +283 -0
  424. data/vendor/rdtool-0.6.38/bin/rdswap.rb +207 -0
  425. data/vendor/rdtool-0.6.38/doc/rd-draft.html +456 -0
  426. data/vendor/rdtool-0.6.38/doc/rd-draft.ja.html +466 -0
  427. data/vendor/rdtool-0.6.38/doc/rd-draft.rd +479 -0
  428. data/vendor/rdtool-0.6.38/doc/rd-draft.rd.ja +487 -0
  429. data/vendor/rdtool-0.6.38/lib/rd/block-element.rb +114 -0
  430. data/vendor/rdtool-0.6.38/lib/rd/complex-list-item.rb +65 -0
  431. data/vendor/rdtool-0.6.38/lib/rd/desclist.rb +55 -0
  432. data/vendor/rdtool-0.6.38/lib/rd/document-struct.rb +46 -0
  433. data/vendor/rdtool-0.6.38/lib/rd/dot.rd2rc +18 -0
  434. data/vendor/rdtool-0.6.38/lib/rd/element.rb +160 -0
  435. data/vendor/rdtool-0.6.38/lib/rd/filter.rb +255 -0
  436. data/vendor/rdtool-0.6.38/lib/rd/head-filter.rb +14 -0
  437. data/vendor/rdtool-0.6.38/lib/rd/inline-element.rb +233 -0
  438. data/vendor/rdtool-0.6.38/lib/rd/labeled-element.rb +14 -0
  439. data/vendor/rdtool-0.6.38/lib/rd/list.rb +57 -0
  440. data/vendor/rdtool-0.6.38/lib/rd/loose-struct.rb +11 -0
  441. data/vendor/rdtool-0.6.38/lib/rd/methodlist.rb +57 -0
  442. data/vendor/rdtool-0.6.38/lib/rd/output-format-visitor.rb +30 -0
  443. data/vendor/rdtool-0.6.38/lib/rd/package.rb +4 -0
  444. data/vendor/rdtool-0.6.38/lib/rd/parser-util.rb +14 -0
  445. data/vendor/rdtool-0.6.38/lib/rd/post-install +1 -0
  446. data/vendor/rdtool-0.6.38/lib/rd/pre-setup.rb +18 -0
  447. data/vendor/rdtool-0.6.38/lib/rd/rbl-file.rb +69 -0
  448. data/vendor/rdtool-0.6.38/lib/rd/rbl-suite.rb +37 -0
  449. data/vendor/rdtool-0.6.38/lib/rd/rd-struct.rb +86 -0
  450. data/vendor/rdtool-0.6.38/lib/rd/rd2html-ext-lib.rb +266 -0
  451. data/vendor/rdtool-0.6.38/lib/rd/rd2html-ext-opt.rb +34 -0
  452. data/vendor/rdtool-0.6.38/lib/rd/rd2html-lib.rb +490 -0
  453. data/vendor/rdtool-0.6.38/lib/rd/rd2html-opt.rb +67 -0
  454. data/vendor/rdtool-0.6.38/lib/rd/rd2man-lib.rb +251 -0
  455. data/vendor/rdtool-0.6.38/lib/rd/rd2rdo-lib.rb +19 -0
  456. data/vendor/rdtool-0.6.38/lib/rd/rd2rmi-lib.rb +32 -0
  457. data/vendor/rdtool-0.6.38/lib/rd/rdblockparser.ry +518 -0
  458. data/vendor/rdtool-0.6.38/lib/rd/rdblockparser.tab.rb +1061 -0
  459. data/vendor/rdtool-0.6.38/lib/rd/rdfmt.rb +15 -0
  460. data/vendor/rdtool-0.6.38/lib/rd/rdinlineparser.ry +503 -0
  461. data/vendor/rdtool-0.6.38/lib/rd/rdinlineparser.tab.rb +1243 -0
  462. data/vendor/rdtool-0.6.38/lib/rd/rdvisitor.rb +214 -0
  463. data/vendor/rdtool-0.6.38/lib/rd/reference-resolver.rb +114 -0
  464. data/vendor/rdtool-0.6.38/lib/rd/search-file.rb +14 -0
  465. data/vendor/rdtool-0.6.38/lib/rd/tree.rb +103 -0
  466. data/vendor/rdtool-0.6.38/lib/rd/version.rb +41 -0
  467. data/vendor/rdtool-0.6.38/lib/rd/visitor.rb +86 -0
  468. data/vendor/rdtool-0.6.38/rdtool.gemspec +125 -0
  469. data/vendor/rdtool-0.6.38/setup.rb +1596 -0
  470. data/vendor/rdtool-0.6.38/test/data/includee1.html +1 -0
  471. data/vendor/rdtool-0.6.38/test/data/includee2.html +1 -0
  472. data/vendor/rdtool-0.6.38/test/data/includee3.nothtml +1 -0
  473. data/vendor/rdtool-0.6.38/test/data/includee4.xhtml +0 -0
  474. data/vendor/rdtool-0.6.38/test/data/label.rbl +2 -0
  475. data/vendor/rdtool-0.6.38/test/data/label2.rbl +2 -0
  476. data/vendor/rdtool-0.6.38/test/data/sub/includee2.html +1 -0
  477. data/vendor/rdtool-0.6.38/test/data/sub/includee4.html +0 -0
  478. data/vendor/rdtool-0.6.38/test/dummy-observer.rb +6 -0
  479. data/vendor/rdtool-0.6.38/test/dummy.rb +33 -0
  480. data/vendor/rdtool-0.6.38/test/temp-dir.rb +19 -0
  481. data/vendor/rdtool-0.6.38/test/test-block-parser.rb +46 -0
  482. data/vendor/rdtool-0.6.38/test/test-desclist-item.rb +219 -0
  483. data/vendor/rdtool-0.6.38/test/test-document-element.rb +46 -0
  484. data/vendor/rdtool-0.6.38/test/test-document-struct.rb +66 -0
  485. data/vendor/rdtool-0.6.38/test/test-element.rb +46 -0
  486. data/vendor/rdtool-0.6.38/test/test-headline.rb +80 -0
  487. data/vendor/rdtool-0.6.38/test/test-inline-parser.rb +46 -0
  488. data/vendor/rdtool-0.6.38/test/test-list-item.rb +54 -0
  489. data/vendor/rdtool-0.6.38/test/test-list.rb +53 -0
  490. data/vendor/rdtool-0.6.38/test/test-methodlist-item.rb +73 -0
  491. data/vendor/rdtool-0.6.38/test/test-nonterminal-element.rb +170 -0
  492. data/vendor/rdtool-0.6.38/test/test-nonterminal-inline.rb +33 -0
  493. data/vendor/rdtool-0.6.38/test/test-output-format-visitor.rb +48 -0
  494. data/vendor/rdtool-0.6.38/test/test-parser-util.rb +41 -0
  495. data/vendor/rdtool-0.6.38/test/test-rbl-file.rb +156 -0
  496. data/vendor/rdtool-0.6.38/test/test-rbl-suite.rb +43 -0
  497. data/vendor/rdtool-0.6.38/test/test-rd2html-lib.rb +496 -0
  498. data/vendor/rdtool-0.6.38/test/test-rdtree.rb +17 -0
  499. data/vendor/rdtool-0.6.38/test/test-rdvisitor.rb +29 -0
  500. data/vendor/rdtool-0.6.38/test/test-reference-resolver.rb +202 -0
  501. data/vendor/rdtool-0.6.38/test/test-reference.rb +132 -0
  502. data/vendor/rdtool-0.6.38/test/test-search-file.rb +22 -0
  503. data/vendor/rdtool-0.6.38/test/test-terminal-inline.rb +41 -0
  504. data/vendor/rdtool-0.6.38/test/test-textblock.rb +44 -0
  505. data/vendor/rdtool-0.6.38/test/test-tree.rb +82 -0
  506. data/vendor/rdtool-0.6.38/test/test-version.rb +57 -0
  507. data/vendor/rdtool-0.6.38/test/test-visitor.rb +230 -0
  508. data/vendor/rdtool-0.6.38/utils/rd-mode.el +464 -0
  509. metadata +666 -0
data/tdiary.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'tdiary/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "tdiary"
8
+ spec.version = TDiary::VERSION
9
+ spec.authors = ["TADA Tadashi", "SHIBATA Hiroshi", "MATSUOKA Kohei"]
10
+ spec.email = ["support@tdiary.org"]
11
+ spec.summary = %q{a TSUKKOMI-able Web-log}
12
+ spec.description = %q{tDiary is so called Weblog.}
13
+ spec.homepage = "http://www.tdiary.org/"
14
+ spec.license = "GPL-2"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["."]
20
+
21
+ spec.add_dependency 'rack'
22
+ spec.add_dependency 'rake'
23
+ spec.add_dependency 'thor'
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.3"
26
+ end
data/tdiary.rb ADDED
@@ -0,0 +1,151 @@
1
+ # -*- coding: utf-8; -*-
2
+ =begin
3
+ == NAME
4
+ tDiary: the "tsukkomi-able" web diary system.
5
+
6
+ Copyright (C) 2001-2013, TADA Tadashi <t@tdtds.jp>
7
+ You can redistribute it and/or modify it under GPL2.
8
+ =end
9
+
10
+ require 'tdiary/version'
11
+ TDIARY_VERSION = TDiary::VERSION
12
+
13
+ $:.unshift File.join(File::dirname(__FILE__), '/misc/lib').untaint
14
+ Dir["#{File::dirname(__FILE__) + '/vendor/*/lib'}"].each {|dir| $:.unshift dir.untaint }
15
+ begin
16
+ Encoding::default_external = 'UTF-8'
17
+ rescue NameError
18
+ $KCODE = 'n'
19
+ end
20
+
21
+ require 'cgi'
22
+ require 'uri'
23
+ require 'fileutils'
24
+ require 'pstore'
25
+ require 'json'
26
+ require 'erb'
27
+ require 'tdiary/compatible'
28
+ require 'tdiary/core_ext'
29
+
30
+ #
31
+ # module TDiary
32
+ #
33
+ module TDiary
34
+ PATH = File::dirname( __FILE__ ).untaint
35
+
36
+ # tDiary configuration class, initialize tdiary.conf and stored configuration.
37
+ autoload :Config, 'tdiary/config'
38
+ # tDiary plugin class, loading all Plugin and eval plugins in view context.
39
+ autoload :Plugin, 'tdiary/plugin'
40
+ # tDiary Filter class, all filters is loaded by in TDiaryView.
41
+ autoload :Filter, 'tdiary/filter'
42
+
43
+ # CGI standalone server
44
+ autoload :Server, 'tdiary/server'
45
+ # Rack Application, TODO: integrate Server and Application
46
+ autoload :Application, 'tdiary/application'
47
+
48
+ # Diary model class
49
+ autoload :DiaryBase, 'tdiary/style'
50
+ autoload :SectionBase, 'tdiary/style'
51
+ autoload :CategorizableDiary, 'tdiary/style'
52
+ autoload :UncategorizableDiary, 'tdiary/style'
53
+ autoload :Comment, 'tdiary/comment'
54
+ autoload :CommentManager, 'tdiary/comment_manager'
55
+ autoload :RefererManager, 'tdiary/referer_manager'
56
+
57
+ # Routing and Dispatch
58
+ autoload :Dispatcher, 'tdiary/dispatcher'
59
+ # Rack Request and Reponse, If you don't use Rack, adopt Rack interface.
60
+ autoload :Request, 'tdiary/request'
61
+ autoload :Response, 'tdiary/response'
62
+
63
+ # ViewController created by Dispatcher
64
+ autoload :TDiaryBase, 'tdiary/base'
65
+ autoload :TDiaryCategoryView, 'tdiary/base'
66
+ autoload :TDiarySearch, 'tdiary/base'
67
+ autoload :TDiaryPluginView, 'tdiary/base'
68
+ autoload :TDiaryAuthorOnlyBase, 'tdiary/author_only_base'
69
+ autoload :TDiaryFormPlugin, 'tdiary/author_only_base'
70
+ autoload :TDiaryConf, 'tdiary/author_only_base'
71
+ autoload :TDiarySaveConf, 'tdiary/author_only_base'
72
+ autoload :TDiaryAdmin, 'tdiary/admin'
73
+ autoload :TDiaryForm, 'tdiary/admin'
74
+ autoload :TDiaryEdit, 'tdiary/admin'
75
+ autoload :TDiaryPreview, 'tdiary/admin'
76
+ autoload :TDiaryUpdate, 'tdiary/admin'
77
+ autoload :TDiaryAppend, 'tdiary/admin'
78
+ autoload :TDiaryReplace, 'tdiary/admin'
79
+ autoload :TDiaryShowComment, 'tdiary/admin'
80
+ autoload :TDiaryView, 'tdiary/view'
81
+ autoload :TDiaryDay, 'tdiary/view'
82
+ autoload :TDiaryComment, 'tdiary/view'
83
+ autoload :TDiaryMonthBase, 'tdiary/view'
84
+ autoload :TDiaryMonth, 'tdiary/view'
85
+ autoload :TDiaryNYear, 'tdiary/view'
86
+ autoload :TDiaryMonthWithoutFilter, 'tdiary/view'
87
+ autoload :TDiaryLatest, 'tdiary/view'
88
+
89
+ # Helper, these module called from ViewController and Plugins
90
+ autoload :ViewHelper, 'tdiary/view_helper'
91
+
92
+ #
93
+ # exception classes
94
+ #
95
+ class TDiaryError < StandardError; end
96
+ class PermissionError < TDiaryError; end
97
+ class PluginError < TDiaryError; end
98
+ class BadStyleError < TDiaryError; end
99
+ class NotFound < TDiaryError; end
100
+
101
+ # class ForceRedirect
102
+ # force redirect to another page
103
+ #
104
+ class ForceRedirect < StandardError
105
+ attr_reader :path
106
+ def initialize( path )
107
+ @path = path
108
+ end
109
+ end
110
+
111
+ class << self
112
+ def logger
113
+ @@logger
114
+ end
115
+
116
+ def logger=(obj)
117
+ @@logger = obj
118
+ end
119
+
120
+ def root
121
+ library_root
122
+ end
123
+
124
+ # directory where tDiary libraries is located
125
+ def library_root
126
+ File.expand_path('..', __FILE__)
127
+ end
128
+
129
+ # directory where the server was started
130
+ def server_root
131
+ Dir.pwd
132
+ end
133
+
134
+ # directory in which the document is published
135
+ def document_root
136
+ if defined?( Rack )
137
+ File.join(server_root, 'public')
138
+ else
139
+ server_root
140
+ end
141
+ end
142
+ end
143
+ end
144
+
145
+ # Local Variables:
146
+ # mode: ruby
147
+ # indent-tabs-mode: t
148
+ # tab-width: 3
149
+ # ruby-indent-level: 3
150
+ # End:
151
+ # vim: ts=3
data/tdiary/admin.rb ADDED
@@ -0,0 +1,236 @@
1
+ module TDiary
2
+ #
3
+ # class TDiaryAdmin
4
+ # base class of administration
5
+ #
6
+ class TDiaryAdmin < TDiaryAuthorOnlyBase
7
+ def initialize( cgi, rhtml, conf )
8
+ super
9
+
10
+ begin
11
+ @date = Time::local( @cgi.params['year'][0].to_i, @cgi.params['month'][0].to_i, @cgi.params['day'][0].to_i )
12
+ rescue ArgumentError, NameError
13
+ raise TDiaryError, 'bad date'
14
+ end
15
+ end
16
+ end
17
+
18
+ #
19
+ # class TDiaryForm
20
+ # show diary append form
21
+ #
22
+ class TDiaryForm < TDiaryAdmin
23
+ def csrf_protection_get_is_okay; true; end
24
+
25
+ def initialize( cgi, rhtml, conf )
26
+ begin
27
+ super
28
+ rescue TDiaryError
29
+ end
30
+
31
+ @date = Time::now + (@conf.hour_offset * 3600).to_i
32
+ title = ''
33
+ @io.transaction( @date ) do |diaries|
34
+ @diaries = diaries
35
+ diary = self[@date]
36
+ title = diary.title if diary
37
+ DIRTY_NONE
38
+ end
39
+ @diary = @io.diary_factory( @date, title, '', @conf.style )
40
+ end
41
+ end
42
+
43
+ #
44
+ # class TDiaryEdit
45
+ # show edit diary form
46
+ #
47
+ class TDiaryEdit < TDiaryAdmin
48
+ def csrf_protection_get_is_okay; true; end
49
+
50
+ def initialize( cgi, rhtm, conf )
51
+ super
52
+
53
+ @io.transaction( @date ) do |diaries|
54
+ @diaries = diaries
55
+ @diary = self[@date]
56
+ if @diary then
57
+ @conf.style = @diary.style
58
+ else
59
+ @diary = @io.diary_factory( @date, '', '', @conf.style )
60
+ end
61
+ DIRTY_NONE
62
+ end
63
+ end
64
+ end
65
+
66
+ #
67
+ # class TDiaryPreview
68
+ # preview diary
69
+ #
70
+ class TDiaryPreview < TDiaryAdmin
71
+ def initialize( cgi, rhtm, conf )
72
+ super
73
+
74
+ @title = @cgi.params['title'][0]
75
+ @body = @cgi.params['body'][0]
76
+ if @cgi.mobile_agent? && String.method_defined?(:encode)
77
+ @title.force_encoding(@conf.mobile_encoding)
78
+ @body.force_encoding(@conf.mobile_encoding)
79
+ end
80
+ @title = @conf.to_native( @title )
81
+ @body = @conf.to_native( @body )
82
+ @old_date = @cgi.params['old'][0]
83
+ @hide = @cgi.params['hide'][0] == 'true' ? true : false
84
+
85
+ @io.transaction( @date ) do |diaries|
86
+ @diaries = diaries
87
+ diary = @diaries[@date.strftime( '%Y%m%d' )]
88
+ @conf.style = diary.style if diary
89
+ @diary = @io.diary_factory( @date, @title, @body, @conf.style )
90
+ @diary.show( ! @hide )
91
+ DIRTY_NONE
92
+ end
93
+ end
94
+
95
+ def eval_rhtml( prefix = '' )
96
+ begin
97
+ @show_result = true
98
+ r = do_eval_rhtml( prefix )
99
+ rescue PluginError, SyntaxError, ArgumentError
100
+ @exception = $!.dup
101
+ @show_result = false
102
+ r = super
103
+ end
104
+ r
105
+ end
106
+ end
107
+
108
+ #
109
+ # class TDiaryUpdate
110
+ # super class of diary saving classes
111
+ #
112
+ class TDiaryUpdate < TDiaryAdmin
113
+ def initialize( cgi, rhtml, conf )
114
+ @title = cgi.params['title'][0]
115
+ @body = cgi.params['body'][0]
116
+ if cgi.mobile_agent? && String.method_defined?(:encode)
117
+ @title.force_encoding(conf.mobile_encoding)
118
+ @body.force_encoding(conf.mobile_encoding)
119
+ end
120
+ @title = conf.to_native( @title )
121
+ @body = conf.to_native( @body )
122
+ @hide = cgi.params['hide'][0] == 'true' ? true : false
123
+ super
124
+ end
125
+
126
+ protected
127
+
128
+ def do_eval_rhtml( prefix )
129
+ super
130
+ @plugin.instance_eval { update_proc }
131
+ anchor_str = @plugin.instance_eval( %Q[anchor "#{@diary.date.strftime('%Y%m%d')}"].untaint )
132
+ @io.clear_cache( /(latest|#{@date.strftime( '%Y%m' )})/ )
133
+ raise ForceRedirect::new( "#{@conf.index}#{anchor_str}" )
134
+ end
135
+ end
136
+
137
+ #
138
+ # class TDiaryAppend
139
+ # append diary
140
+ #
141
+ class TDiaryAppend < TDiaryUpdate
142
+ def initialize( cgi, rhtml, conf )
143
+ begin
144
+ super
145
+ rescue TDiaryError
146
+ @date = newdate
147
+ end
148
+
149
+ @author = @conf.multi_user ? @cgi.remote_user : nil
150
+
151
+ @io.transaction( @date ) do |diaries|
152
+ @diaries = diaries
153
+ @diary = self[@date] || @io.diary_factory( @date, @title, '', @conf.style )
154
+ self << @diary.append( @body, @author )
155
+ @diary.set_title( @title ) unless @title.empty?
156
+ @diary.show( ! @hide )
157
+ DIRTY_DIARY
158
+ end
159
+ end
160
+
161
+ protected
162
+
163
+ def newdate
164
+ Time::now + (@conf.hour_offset * 3600).to_i
165
+ end
166
+ end
167
+
168
+ #
169
+ # class TDiaryReplace
170
+ # replace diary
171
+ #
172
+ class TDiaryReplace < TDiaryUpdate
173
+ def initialize( cgi, rhtm, conf )
174
+ super
175
+ old_date = @cgi.params['old'][0]
176
+
177
+ @io.transaction( @date ) do |diaries|
178
+ @diaries = diaries
179
+ @diary = self[@date]
180
+ if @diary then
181
+ if @date.strftime( '%Y%m%d' ) != old_date then
182
+ @diary.append( @body, @append )
183
+ @diary.set_title( @title ) if @title.length > 0
184
+ else
185
+ @diary.replace( @date, @title, @body )
186
+ end
187
+ else
188
+ @diary = @io.diary_factory( @date, @title, @body, @conf.style )
189
+ end
190
+ @diary.show( ! @hide )
191
+ self << @diary
192
+ DIRTY_DIARY
193
+ end
194
+ end
195
+ end
196
+
197
+ #
198
+ # class TDiaryShowComment
199
+ # change visible mode of comments
200
+ #
201
+ class TDiaryShowComment < TDiaryAdmin
202
+ def initialize( cgi, rhtml, conf )
203
+ super
204
+
205
+ @io.transaction( @date ) do |diaries|
206
+ @diaries = diaries
207
+ dirty = DIRTY_NONE
208
+ @diary = self[@date]
209
+ if @diary then
210
+ idx = 0
211
+ @diary.each_comment do |com|
212
+ com.show = @cgi.params[(idx += 1).to_s][0] == 'true' ? true : false;
213
+ end
214
+ self << @diary
215
+ @io.clear_cache( /(latest|#{@date.strftime( '%Y%m' )})/ )
216
+ dirty = DIRTY_COMMENT
217
+ end
218
+ dirty
219
+ end
220
+ end
221
+
222
+ def eval_rhtml( prefix = '' )
223
+ load_plugins
224
+ @plugin.instance_eval { update_proc }
225
+ super
226
+ end
227
+ end
228
+ end
229
+
230
+ # Local Variables:
231
+ # mode: ruby
232
+ # indent-tabs-mode: t
233
+ # tab-width: 3
234
+ # ruby-indent-level: 3
235
+ # End:
236
+ # vim: ts=3
@@ -0,0 +1,57 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # FIXME too dirty hack :-<
4
+ class CGI
5
+ def env_table_rack
6
+ $RACK_ENV
7
+ end
8
+
9
+ alias :env_table_orig :env_table
10
+ alias :env_table :env_table_rack
11
+ end
12
+
13
+ module TDiary
14
+ class Application
15
+ def initialize( target )
16
+ @target = target
17
+ end
18
+
19
+ def call( env )
20
+ req = adopt_rack_request_to_plain_old_tdiary_style( env )
21
+ dispatch_request( req )
22
+ end
23
+
24
+ private
25
+
26
+ def adopt_rack_request_to_plain_old_tdiary_style( env )
27
+ req = TDiary::Request.new( env )
28
+ req.params # fill params to tdiary_request
29
+ $RACK_ENV = req.env
30
+ env["rack.input"].rewind
31
+ fake_stdin_as_params
32
+ req
33
+ end
34
+
35
+ def dispatch_request( request )
36
+ dispatcher = TDiary::Dispatcher.__send__( @target )
37
+ dispatcher.dispatch_cgi( request )
38
+ end
39
+
40
+ def fake_stdin_as_params
41
+ stdin_spy = StringIO.new( "" )
42
+ # FIXME dirty hack
43
+ if $RACK_ENV && $RACK_ENV['rack.input']
44
+ stdin_spy.print( $RACK_ENV['rack.input'].read )
45
+ stdin_spy.rewind
46
+ end
47
+ $stdin = stdin_spy
48
+ end
49
+ end
50
+ end
51
+
52
+ # Local Variables:
53
+ # mode: ruby
54
+ # indent-tabs-mode: t
55
+ # tab-width: 3
56
+ # ruby-indent-level: 3
57
+ # End: