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
@@ -0,0 +1,81 @@
1
+ # -*- coding: utf-8; -*-
2
+ #
3
+ # linkcheck.rb: tDiary filter for checking link to my site in TrackBack source site.
4
+ #
5
+ # specification:
6
+ # * if source site has no URI of my site of top page, it's spam!
7
+ # * reading only top of 100KB of source site.
8
+ # * no response over 10 sec, it's mybe spam.
9
+ #
10
+ # Copyright (C) 2007 by TADA Tadashi <sho@spc.gr.jp>
11
+ # Distributed under GPL2.
12
+ #
13
+
14
+ require 'open-uri'
15
+ require 'timeout'
16
+
17
+ module TDiary::Filter
18
+ class LinkcheckFilter < Filter
19
+ def initialize( *args )
20
+ super( *args )
21
+ @filter_mode = @conf['spamfilter.filter_mode']
22
+ @filter_mode = true if @filter_mode == nil
23
+ end
24
+
25
+ def comment_filter( diary, comment )
26
+ if @conf['spamfilter.linkcheck'] == 0 then
27
+ debug( "No linkcheck to TrackBacks.", DEBUG_FULL )
28
+ return true
29
+ end
30
+
31
+ # check only TrackBack
32
+ return true unless comment.name == 'TrackBack'
33
+
34
+ dest_uri = @conf.index.dup
35
+ dest_uri[0, 0] = base_url if %r|^https?://|i !~ @conf.index
36
+ dest_uri.gsub!( %r|/\./|, '/' )
37
+
38
+ # TrackBack URI is the 1st line of comment.body.
39
+ src_uri, = comment.body.split( /\n/ )
40
+ unless %r|^https?://|i =~ src_uri then
41
+ debug( "TrackBack has bad source URI." )
42
+ comment.show = false
43
+ return @filter_mode
44
+ end
45
+ if src_uri.index( dest_uri ) == 0 then
46
+ debug( "TrackBack was sent to myself.", DEBUG_FULL )
47
+ return true
48
+ end
49
+
50
+ begin
51
+ Timeout::timeout( 10 ) do
52
+ open( src_uri ) do |f|
53
+ if f.read( 100 * 1024 ).include?( dest_uri ) then
54
+ debug( "TrackBack has links to me.", DEBUG_FULL )
55
+ return true
56
+ else
57
+ debug( "TrackBack dose not have links to me." )
58
+ comment.show = false
59
+ return @filter_mode
60
+ end
61
+ end
62
+ end
63
+ rescue Timeout::Error
64
+ debug( "TrackBack source was no response." )
65
+ comment.show = false
66
+ return @filter_mode
67
+ rescue
68
+ debug( "Cannot access to TrackBack source (#{$!})." )
69
+ comment.show = false
70
+ return @filter_mode
71
+ end
72
+ end
73
+ end
74
+ end
75
+
76
+ # Local Variables:
77
+ # mode: ruby
78
+ # indent-tabs-mode: t
79
+ # tab-width: 3
80
+ # ruby-indent-level: 3
81
+ # End:
@@ -0,0 +1,82 @@
1
+ # -*- coding: utf-8; -*-
2
+ #
3
+ # antispamservice.rb: tDiary comment spam filter using API setup plugin. $Revision: 1.3 $
4
+ #
5
+ # Copyright (C) TADA Tadashi <sho@spc.gr.jp> 2007.
6
+ # Modified by SHIBATA Hiroshi <shibata.hiroshi@gmail.com> 2008.
7
+ # Distributed under GPL2.
8
+ #
9
+
10
+ require 'net/http'
11
+ require 'uri'
12
+
13
+ @antispam_service_list = {
14
+ # Service => ServiceHost
15
+ 'Akismet' => 'rest.akismet.com',
16
+ 'TypePad' => 'api.antispam.typepad.com'
17
+ }
18
+
19
+ add_conf_proc( 'antispamservice', @antispam_label_conf, 'security' ) do
20
+ antispam_conf_proc
21
+ end
22
+
23
+ def antispam_conf_proc
24
+ verify = true
25
+ if @mode == 'saveconf' then
26
+ @conf['antispam.service'] = @cgi.params['antispam.service'][0]
27
+ @conf['antispam.key'] = @cgi.params['antispam.key'][0]
28
+ if (@conf['antispam.key'] || '').length > 0 then
29
+ verify = antispam_verify_key?(@conf['antispam.service'], @conf['antispam.key'] )
30
+ end
31
+ end
32
+
33
+ result = <<-HTML
34
+ <p>#{@antispam_desc}</p>
35
+
36
+ <h3>#{@antispam_label_service}</h3>
37
+ HTML
38
+
39
+ options = ''
40
+ @antispam_service_list.each_key do |key|
41
+ options << %Q|<option value="#{h key}"#{" selected" if @conf['antispam.service'] == key}>#{h key}</option>\n|
42
+ end
43
+
44
+ result << <<-HTML
45
+ <p><select name="antispam.service">
46
+ #{options}
47
+ </select></p>
48
+
49
+ <h3>#{@antispam_label_key}</h3>
50
+ HTML
51
+
52
+ unless verify then
53
+ result << %Q[<p class="message">#{@antispam_warn_key}</p>]
54
+ end
55
+ result << <<-HTML
56
+ <p>#{@antispam_desc_key}: <input name="antispam.key" value="#{h( @conf['antispam.key'] || '')}" size="15"></p>
57
+ HTML
58
+ end
59
+
60
+ def antispam_verify_key?( host, key )
61
+ uri = URI::parse( "http://#{@antispam_service_list[host]}/1.1/verify-key")
62
+ blog = @conf.index.dup
63
+ blog[0, 0] = base_url unless %r|^https?://|i =~ blog
64
+ blog.gsub!( %r|/\./|, '/' )
65
+ data = "key=#{key}&blog=#{blog}"
66
+ header = {
67
+ 'User-Agent' => "tDiary/#{TDIARY_VERSION} | Antispam filter",
68
+ 'Content-Type' => 'application/x-www-form-urlencoded'
69
+ }
70
+ proxy_h, proxy_p = (@conf['proxy'] || '').split( /:/ )
71
+ res = ::Net::HTTP::Proxy( proxy_h, proxy_p ).start( uri.host, uri.port ) do |http|
72
+ http.post( uri.path, data, header )
73
+ end
74
+ return (res.body == 'valid')
75
+ end
76
+
77
+ # Local Variables:
78
+ # mode: ruby
79
+ # indent-tabs-mode: t
80
+ # tab-width: 3
81
+ # ruby-indent-level: 3
82
+ # End:
@@ -0,0 +1,21 @@
1
+ # -*- coding: utf-8; -*-
2
+ #
3
+ # en/antispamservice.rb: English resource of Antispam filter setup plugin. $Revision: 1.2 $
4
+ #
5
+
6
+ @antispam_label_conf = 'Antispam service filter'
7
+ @antispam_desc = 'Antispam service filter is a filter using WebService API. If you want to use this filter, you have to get API Key from your selected service.'
8
+
9
+ @antispam_label_service = 'Select Antispam Service'
10
+
11
+ @antispam_label_key = 'API Key'
12
+ @antispam_desc_key = 'API Key'
13
+ @antispam_warn_key = 'Invalid API Key.'
14
+
15
+
16
+ # Local Variables:
17
+ # mode: ruby
18
+ # indent-tabs-mode: t
19
+ # tab-width: 3
20
+ # ruby-indent-level: 3
21
+ # End:
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8; -*-
2
+ #
3
+ # ja/antispamservice.rb: Japanese resource of Antispam filter setup plugin. $Revision: 1.2 $
4
+ #
5
+
6
+ @antispam_label_conf = 'Antispamサービス フィルタ'
7
+ @antispam_desc = 'Antispamサービス フィルタは、APIとして提供されるspam判定サービスを使って、ツッコミやTrackBackのspamを排除するフィルタです。このサービスを利用するには、使用するサービスのAPI Keyを取得して、以下に設定する必要があります。'
8
+
9
+ @antispam_label_service = '使用するspam判定サービスの選択'
10
+
11
+ @antispam_label_key = 'API Key'
12
+ @antispam_desc_key = 'API Key'
13
+ @antispam_warn_key = 'API Keyが正しくありません。サービスの提供元によって拒絶されました。'
14
+
15
+ # Local Variables:
16
+ # mode: ruby
17
+ # indent-tabs-mode: t
18
+ # tab-width: 3
19
+ # ruby-indent-level: 3
20
+ # End:
data/misc/lib/README ADDED
@@ -0,0 +1,4 @@
1
+ This directory is for libraries:
2
+
3
+ * for compatibility with ruby 1.8 and 1.9.
4
+ * for patching about charctor encoding.
@@ -0,0 +1 @@
1
+ # move to tdiary/compatible.rb
@@ -0,0 +1,90 @@
1
+ =begin
2
+
3
+ Patched version of FCGI::each_cgi from fcgi-0.8.8.
4
+ * if encoding error happens with UTF-8, try Shift_JIS.
5
+
6
+ Original copyright notices:
7
+ fastcgi.rb Copyright (C) 2001 Eli Green
8
+ fcgi.rb Copyright (C) 2002-2003 MoonWolf <moonwolf@moonwolf.com>
9
+ fcgi.rb Copyright (C) 2004 Minero Aoki
10
+
11
+ Patch written by:
12
+ Copyright (C) 2011 Kazuhiko <kazuhiko@fdiary.net>
13
+
14
+ =end
15
+
16
+ class FCGI
17
+ def self::each_cgi(*args)
18
+ require 'cgi'
19
+
20
+ eval(<<-EOS,TOPLEVEL_BINDING)
21
+ class CGI
22
+ public :env_table
23
+ def self::remove_params
24
+ if (const_defined?(:CGI_PARAMS))
25
+ remove_const(:CGI_PARAMS)
26
+ remove_const(:CGI_COOKIES)
27
+ end
28
+ end
29
+ end # ::CGI class
30
+
31
+ class FCGI
32
+ class CGI < ::CGI
33
+ def initialize(request, *args)
34
+ ::CGI.remove_params
35
+ @request = request
36
+ # PATCH BEGIN : if encoding error happens with UTF-8, try
37
+ # Shift_JIS.
38
+ encoding_error = {}
39
+ super(*(args+[:accept_charset => "UTF-8"])) do |name, value|
40
+ encoding_error[name] = value
41
+ end
42
+ params = @params
43
+ unless encoding_error.empty?
44
+ super(*(args+[:accept_charset => "Shift_JIS"]))
45
+ @params = params
46
+ end
47
+ # PATCH END : if encoding error happens with UTF-8, try
48
+ # Shift_JIS.
49
+ @args = *args
50
+ end
51
+ def args
52
+ @args
53
+ end
54
+ def env_table
55
+ @request.env
56
+ end
57
+ def stdinput
58
+ @request.in
59
+ end
60
+ def stdoutput
61
+ @request.out
62
+ end
63
+ end # FCGI::CGI class
64
+ end # FCGI class
65
+ EOS
66
+
67
+ if FCGI::is_cgi?
68
+ yield ::CGI.new(*args)
69
+ else
70
+ exit_requested = false
71
+ FCGI::each {|request|
72
+ $stdout, $stderr = request.out, request.err
73
+
74
+ yield CGI.new(request, *args)
75
+
76
+ request.finish
77
+ }
78
+ end
79
+ end
80
+ end
81
+
82
+ # The following indentation rule is not same as tDiary's by intention.
83
+ # It is same as the original (fcgi-0.8.8/lib/fcgi.rb) so that we can
84
+ # easily see the difference by diff command.
85
+
86
+ # Local Variables:
87
+ # mode: ruby
88
+ # indent-tabs-mode: nil
89
+ # ruby-indent-level: 2
90
+ # End:
data/misc/migrate.rb ADDED
@@ -0,0 +1,157 @@
1
+ # -*- coding: utf-8; -*-
2
+ #!/usr/bin/env ruby
3
+ #
4
+ # migrate.rb $Revision: 1.2 $
5
+ #
6
+ # Copyright (C) 2001-2003, TADA Tadashi <sho@spc.gr.jp>
7
+ # Copyright (C) 2007, Kazuhiko <kazuhiko@fdiary.net>
8
+ # You can redistribute it and/or modify it under GPL2.
9
+ #
10
+ BEGIN { $stdout.binmode }
11
+ $KCODE = 'n'
12
+
13
+ require "fileutils"
14
+ require "pstore"
15
+
16
+ begin
17
+ if FileTest::symlink?( __FILE__ ) then
18
+ org_path = File::dirname( File::readlink( __FILE__ ) )
19
+ else
20
+ org_path = File::dirname( __FILE__ )
21
+ end
22
+ $:.unshift( org_path.untaint )
23
+ require 'tdiary'
24
+
25
+ class TDiary::MigrateConfig < TDiary::Config
26
+ include ERB::Util
27
+
28
+ def load_cgi_conf
29
+ raise TDiaryError, 'No @data_path variable.' unless @data_path
30
+
31
+ @data_path += '/' if /\/$/ !~ @data_path
32
+ raise TDiaryError, 'Do not set @data_path as same as tDiary system directory.' if @data_path == "#{TDiary::PATH}/"
33
+
34
+ # convert tdiary.conf in @data_path
35
+ conf_path = "#{@data_path}tdiary.conf"
36
+ conf = convert( File::open( conf_path ){|f| f.read } )
37
+ conf.gsub!(/(\\[0-9]{3})+/) do |str|
38
+ convert(eval(%Q["#{$&}"])).dump[1...-1]
39
+ end
40
+ File::open( conf_path, 'w' ) do |o|
41
+ o.print conf
42
+ end
43
+
44
+ # convert diary data and comment data
45
+ Dir["#{@data_path}[0-9][0-9][0-9][0-9]/??????.td[2c]"].each do |file|
46
+ convert_file(file)
47
+ end
48
+
49
+ # convert pstore cache files
50
+ dir = cache_path || "#{@data_path}cache"
51
+ %w(makerss.cache recent_comments recent_trackbacks tlink/tlink.dat).each do |e|
52
+ convert_pstore("#{dir}/#{e}") if File.exist?("#{dir}/#{e}")
53
+ end
54
+ Dir["#{dir}/disp_referrer2.d/*"].each do |file|
55
+ convert_pstore(file)
56
+ end
57
+ Dir["#{@data_path}category/*"].each do |file|
58
+ convert_pstore(file)
59
+ end
60
+
61
+ # rename category cache files
62
+ Dir["#{@data_path}category/*"].each do |file|
63
+ dirname, basename = File.split(file)
64
+ new_basename = u(convert(CGI::unescape(basename)))
65
+ FileUtils.mv(file, File.join(dirname, new_basename)) unless basename == new_basename
66
+ end
67
+
68
+ # remove ruby/erb cache files
69
+ Dir["#{dir}/*.rb"].each{|f| FileUtils.rm_f(f)}
70
+ Dir["#{dir}/*.parser"].each{|f| FileUtils.rm_f(f)}
71
+ end
72
+
73
+ def convert_pstore(file)
74
+ db = PStore.new(file)
75
+ begin
76
+ roots = db.transaction{ db.roots }
77
+ rescue ArgumentError
78
+ if /\Aundefined class\/module (.+?)(::)?\z/ =~ $!.message
79
+ klass = $1
80
+ if /EmptdiaryString\z/ =~ klass
81
+ eval("class ::#{klass} < String; end")
82
+ else
83
+ eval("class ::#{klass}; end")
84
+ end
85
+ retry
86
+ end
87
+ end
88
+ db.transaction do
89
+ roots.each do |root|
90
+ convert_element(db[root])
91
+ end
92
+ end
93
+ end
94
+
95
+ def convert_element(data)
96
+ case data
97
+ when Hash, Array
98
+ data.each_with_index do |e, i|
99
+ if String === e
100
+ data[i] = convert(e)
101
+ else
102
+ convert_element(e)
103
+ end
104
+ end
105
+ else
106
+ data.instance_variables.each do |e|
107
+ var = data.instance_variable_get(e)
108
+ if String === var
109
+ data.instance_variable_set(e, convert(var))
110
+ else
111
+ convert_element(var)
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ def convert_file(file)
118
+ body = convert( File::open( file ){|f| f.read} )
119
+ File::open( file, 'w' ) do |o|
120
+ o.print body
121
+ end
122
+ end
123
+
124
+ def convert(str)
125
+ str.class.new(to_native(str, 'EUC-JP'))
126
+ end
127
+ end
128
+
129
+ @cgi = CGI::new
130
+ conf = TDiary::MigrateConfig::new(@cgi)
131
+
132
+ print @cgi.header( 'status' => '200 OK', 'type' => 'text/html' )
133
+ puts "<h1>Migration completed.</h1>"
134
+ puts "<p>Do not forget to remove migrate.rb.</p>"
135
+
136
+ rescue Exception
137
+ if @cgi then
138
+ print @cgi.header( 'status' => '500 Internal Server Error', 'type' => 'text/html' )
139
+ else
140
+ print "Status: 500 Internal Server Error\n"
141
+ print "Content-Type: text/html\n\n"
142
+ end
143
+ puts "<h1>500 Internal Server Error</h1>"
144
+ puts "<pre>"
145
+ puts CGI::escapeHTML( "#{$!} (#{$!.class})" )
146
+ puts ""
147
+ puts CGI::escapeHTML( $@.join( "\n" ) )
148
+ puts "</pre>"
149
+ puts "<div>#{' ' * 500}</div>"
150
+ end
151
+
152
+ # Local Variables:
153
+ # mode: ruby
154
+ # indent-tabs-mode: t
155
+ # tab-width: 3
156
+ # ruby-indent-level: 3
157
+ # End: