tdiary-contrib 3.2.2.20130518

Sign up to get free protection for your applications and to get access to all the features.
Files changed (393) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +13 -0
  5. data/Gemfile.lock +35 -0
  6. data/README.en.md +12 -0
  7. data/README.md +13 -0
  8. data/Rakefile +41 -0
  9. data/doc/en/filter/spambayes.txt +3 -0
  10. data/doc/en/plugin.txt +1 -0
  11. data/doc/en/style/hatena.txt +10 -0
  12. data/doc/en/style/markdown.txt +16 -0
  13. data/doc/en/util.txt +1 -0
  14. data/doc/ja/filter/antirefspam.history.txt +59 -0
  15. data/doc/ja/filter/antirefspam.txt +86 -0
  16. data/doc/ja/filter/comment_key.ja.html +182 -0
  17. data/doc/ja/filter/spambayes.txt +3 -0
  18. data/doc/ja/plugin/add_bookmark.txt +50 -0
  19. data/doc/ja/plugin/category_to_tag.txt +21 -0
  20. data/doc/ja/plugin/cocoment.txt +31 -0
  21. data/doc/ja/plugin/google_adsense.txt +25 -0
  22. data/doc/ja/plugin/google_analytics.txt +7 -0
  23. data/doc/ja/plugin/image_detail.txt +69 -0
  24. data/doc/ja/plugin/image_gps.txt +36 -0
  25. data/doc/ja/plugin/image_gps2.txt +41 -0
  26. data/doc/ja/plugin/livedoor_weather.txt +105 -0
  27. data/doc/ja/plugin/opensearch_ad.txt +16 -0
  28. data/doc/ja/plugin/section_footer.txt +84 -0
  29. data/doc/ja/plugin/select_theme.txt +1 -0
  30. data/doc/ja/plugin.txt +13 -0
  31. data/doc/ja/style/hatena.txt +10 -0
  32. data/doc/ja/style/markdown.txt +13 -0
  33. data/doc/ja/util.txt +12 -0
  34. data/filter/antirefspam.rb +263 -0
  35. data/filter/commentkey.rb +29 -0
  36. data/filter/commentsize.rb +18 -0
  37. data/filter/hidecomment.rb +13 -0
  38. data/filter/iplookup.rb +55 -0
  39. data/filter/plugin/antirefspam.rb +59 -0
  40. data/filter/plugin/commentkey.rb +58 -0
  41. data/filter/plugin/commentsize.rb +12 -0
  42. data/filter/plugin/en/iplookup.rb +9 -0
  43. data/filter/plugin/en/spambayes.rb +123 -0
  44. data/filter/plugin/iplookup.rb +39 -0
  45. data/filter/plugin/ja/antirefspam.rb +91 -0
  46. data/filter/plugin/ja/commentkey.rb +17 -0
  47. data/filter/plugin/ja/commentsize.rb +6 -0
  48. data/filter/plugin/ja/iplookup.rb +9 -0
  49. data/filter/plugin/ja/spambayes.rb +124 -0
  50. data/filter/plugin/spambayes.rb +501 -0
  51. data/filter/plugin/zh/iplookup.rb +9 -0
  52. data/filter/rblcheck.rb +36 -0
  53. data/filter/spambayes.rb +535 -0
  54. data/filter/spamlookup.rb +37 -0
  55. data/io/dbi_io/ChangeLog +19 -0
  56. data/io/dbi_io/README.ja +39 -0
  57. data/io/dbi_io/dbi_io.rb +181 -0
  58. data/io/dbi_io/plugin/refererDbiIO.rb +76 -0
  59. data/io/dbi_io/tdiary_table.sql +42 -0
  60. data/js/appstore.js +109 -0
  61. data/js/datepicker.js +69 -0
  62. data/js/editor.js +82 -0
  63. data/js/flickr.js +157 -0
  64. data/js/image_ex.js +79 -0
  65. data/js/jquery.socialbutton.js +842 -0
  66. data/js/nicovideo.js +17 -0
  67. data/js/picasa.js +322 -0
  68. data/js/plugin_checker.js +71 -0
  69. data/js/prettify/lang-apollo.js +2 -0
  70. data/js/prettify/lang-clj.js +18 -0
  71. data/js/prettify/lang-css.js +2 -0
  72. data/js/prettify/lang-go.js +1 -0
  73. data/js/prettify/lang-hs.js +2 -0
  74. data/js/prettify/lang-lisp.js +3 -0
  75. data/js/prettify/lang-lua.js +2 -0
  76. data/js/prettify/lang-ml.js +2 -0
  77. data/js/prettify/lang-n.js +4 -0
  78. data/js/prettify/lang-proto.js +1 -0
  79. data/js/prettify/lang-scala.js +2 -0
  80. data/js/prettify/lang-sql.js +2 -0
  81. data/js/prettify/lang-tex.js +1 -0
  82. data/js/prettify/lang-vb.js +2 -0
  83. data/js/prettify/lang-vhdl.js +3 -0
  84. data/js/prettify/lang-wiki.js +2 -0
  85. data/js/prettify/lang-xq.js +3 -0
  86. data/js/prettify/lang-yaml.js +2 -0
  87. data/js/prettify/prettify.css +1 -0
  88. data/js/prettify/prettify.js +28 -0
  89. data/js/referer.js +17 -0
  90. data/js/show_and_hide.js +39 -0
  91. data/js/socialbutton.js +126 -0
  92. data/js/twitter_anywhere.js +28 -0
  93. data/js/yahoo_kousei.js +21 -0
  94. data/lib/bayes/convert.rb +34 -0
  95. data/lib/bayes.rb +232 -0
  96. data/lib/exifparser/BUGS +1 -0
  97. data/lib/exifparser/ChangeLog +169 -0
  98. data/lib/exifparser/README +15 -0
  99. data/lib/exifparser/install.rb +1015 -0
  100. data/lib/exifparser/lib/exifparser/makernote/canon.rb +502 -0
  101. data/lib/exifparser/lib/exifparser/makernote/fujifilm.rb +415 -0
  102. data/lib/exifparser/lib/exifparser/makernote/minolta.rb +84 -0
  103. data/lib/exifparser/lib/exifparser/makernote/mk_nikonflensname.rb +39 -0
  104. data/lib/exifparser/lib/exifparser/makernote/nikon.rb +267 -0
  105. data/lib/exifparser/lib/exifparser/makernote/nikon2.rb +581 -0
  106. data/lib/exifparser/lib/exifparser/makernote/nikonflensname.rb +438 -0
  107. data/lib/exifparser/lib/exifparser/makernote/olympus.rb +225 -0
  108. data/lib/exifparser/lib/exifparser/makernote/prove.rb +84 -0
  109. data/lib/exifparser/lib/exifparser/makernote/sigma.rb +237 -0
  110. data/lib/exifparser/lib/exifparser/pre-setup.rb +1 -0
  111. data/lib/exifparser/lib/exifparser/scan.rb +278 -0
  112. data/lib/exifparser/lib/exifparser/tag.rb +2298 -0
  113. data/lib/exifparser/lib/exifparser/thumbnail.rb +76 -0
  114. data/lib/exifparser/lib/exifparser/utils.rb +88 -0
  115. data/lib/exifparser/lib/exifparser.rb +265 -0
  116. data/lib/exifparser/sample/exifview.rb +279 -0
  117. data/lib/tdiary-contrib.rb +19 -0
  118. data/lib/wgs2tky.rb +93 -0
  119. data/misc/section_footer2/buzzurl.yaml +6 -0
  120. data/misc/section_footer2/fc2.yaml +6 -0
  121. data/misc/section_footer2/ldc.yaml +6 -0
  122. data/misc/section_footer2/retweet.yaml +7 -0
  123. data/misc/section_footer2/twitter.yaml +7 -0
  124. data/misc/section_footer2/yahoo.yaml +6 -0
  125. data/misc/tdiarygraph/tdiarygraph120x90e.swf +0 -0
  126. data/misc/tdiarygraph/tdiarygraph125x125e.swf +0 -0
  127. data/misc/tdiarygraph/tdiarygraph240x180e.swf +0 -0
  128. data/misc/tdiarygraph/tdiarygraph468x60e.swf +0 -0
  129. data/misc/tdiarygraph/tdiarygraph728x90e.swf +0 -0
  130. data/misc/tdiarytimes/tdiarytimes125x125r.swf +0 -0
  131. data/misc/tdiarytimes/tdiarytimes125x125r7.swf +0 -0
  132. data/misc/tdiarytimes/tdiarytimes125x125s.swf +0 -0
  133. data/misc/tdiarytimes/tdiarytimes125x30.swf +0 -0
  134. data/misc/tdiarytimes/tdiarytimes234x30.swf +0 -0
  135. data/misc/tdiarytimes/tdiarytimes468x30.swf +0 -0
  136. data/plugin/add_bookmark.rb +89 -0
  137. data/plugin/apple_webclip.rb +26 -0
  138. data/plugin/appstore.rb +47 -0
  139. data/plugin/bigpresen.rb +86 -0
  140. data/plugin/bitly.rb +39 -0
  141. data/plugin/bootstrap-navi.rb +54 -0
  142. data/plugin/canonical.rb +9 -0
  143. data/plugin/category_similar.rb +73 -0
  144. data/plugin/category_to_tag.rb +60 -0
  145. data/plugin/category_to_tagcloud.rb +172 -0
  146. data/plugin/cocomment.rb +37 -0
  147. data/plugin/code-prettify.rb +23 -0
  148. data/plugin/coderwall.rb +34 -0
  149. data/plugin/datepicker.rb +28 -0
  150. data/plugin/day2section.rb +20 -0
  151. data/plugin/del_footer.rb +111 -0
  152. data/plugin/description_from_body.rb +23 -0
  153. data/plugin/development.rb +16 -0
  154. data/plugin/editor.rb +11 -0
  155. data/plugin/en/add_bookmark.rb +20 -0
  156. data/plugin/en/del_footer.rb +10 -0
  157. data/plugin/en/git-register.rb +3 -0
  158. data/plugin/en/livedoor_weather.rb +25 -0
  159. data/plugin/en/microsummary.rb +18 -0
  160. data/plugin/en/nicovideo.rb +38 -0
  161. data/plugin/en/openid.rb +8 -0
  162. data/plugin/en/section_footer.rb +6 -0
  163. data/plugin/en/section_footer2.rb +3 -0
  164. data/plugin/en/socialbutton.rb +5 -0
  165. data/plugin/everytrail.rb +39 -0
  166. data/plugin/facebook_comments.rb +59 -0
  167. data/plugin/flickr.rb +209 -0
  168. data/plugin/gist.rb +16 -0
  169. data/plugin/git-register.rb +240 -0
  170. data/plugin/github_badge.rb +27 -0
  171. data/plugin/github_link.rb +9 -0
  172. data/plugin/goo_gl.rb +42 -0
  173. data/plugin/google_adsense.rb +132 -0
  174. data/plugin/google_analytics.rb +39 -0
  175. data/plugin/google_map.rb +168 -0
  176. data/plugin/google_sitemaps.rb +60 -0
  177. data/plugin/google_webmaster.rb +22 -0
  178. data/plugin/hatena_bookmark_nocomment.rb +9 -0
  179. data/plugin/hatena_star.rb +66 -0
  180. data/plugin/hb_footer.rb +255 -0
  181. data/plugin/hb_footer4sec.rb +244 -0
  182. data/plugin/hb_footer4sec_js.rb +30 -0
  183. data/plugin/hide_comment_form.rb +4 -0
  184. data/plugin/hide_sidebar_iphone.rb +21 -0
  185. data/plugin/iddy.rb +81 -0
  186. data/plugin/image_detail.rb +143 -0
  187. data/plugin/image_ex.rb +462 -0
  188. data/plugin/image_gps.rb +128 -0
  189. data/plugin/inline_wiki.rb +6 -0
  190. data/plugin/instagr.rb +64 -0
  191. data/plugin/ja/add_bookmark.rb +20 -0
  192. data/plugin/ja/del_footer.rb +10 -0
  193. data/plugin/ja/flickr.rb +62 -0
  194. data/plugin/ja/git-register.rb +3 -0
  195. data/plugin/ja/google_sitemaps.rb +35 -0
  196. data/plugin/ja/livedoor_weather.rb +25 -0
  197. data/plugin/ja/microsummary.rb +18 -0
  198. data/plugin/ja/nicovideo.rb +41 -0
  199. data/plugin/ja/openid.rb +7 -0
  200. data/plugin/ja/section_footer.rb +6 -0
  201. data/plugin/ja/section_footer2.rb +4 -0
  202. data/plugin/ja/socialbutton.rb +6 -0
  203. data/plugin/jdate.rb +20 -0
  204. data/plugin/jholiday.rb +16 -0
  205. data/plugin/jmonth.rb +20 -0
  206. data/plugin/jquery_ui_theme.rb +55 -0
  207. data/plugin/jroku.rb +28 -0
  208. data/plugin/jyear.rb +37 -0
  209. data/plugin/latlonglab_route.rb +25 -0
  210. data/plugin/lazy_referer.rb +38 -0
  211. data/plugin/livedoor_weather.rb +180 -0
  212. data/plugin/make_link.rb +44 -0
  213. data/plugin/makerss_category.rb +43 -0
  214. data/plugin/makerss_comment.rb +35 -0
  215. data/plugin/microsummary.rb +62 -0
  216. data/plugin/mm_footer.rb +215 -0
  217. data/plugin/monthly_autopagerize.rb +67 -0
  218. data/plugin/my_hotentry.rb +132 -0
  219. data/plugin/navi_day.rb +118 -0
  220. data/plugin/navi_this_month.rb +15 -0
  221. data/plugin/nicovideo.rb +115 -0
  222. data/plugin/notify_miniblog.rb +134 -0
  223. data/plugin/ogp.rb +55 -0
  224. data/plugin/ohmsha_estore.rb +71 -0
  225. data/plugin/openid.rb +90 -0
  226. data/plugin/opensearch_ad.rb +33 -0
  227. data/plugin/picasa.rb +56 -0
  228. data/plugin/plugin_checker.rb +41 -0
  229. data/plugin/popit.rb +22 -0
  230. data/plugin/prettify.rb +19 -0
  231. data/plugin/prezi.rb +10 -0
  232. data/plugin/profile.rb +222 -0
  233. data/plugin/puboo.rb +93 -0
  234. data/plugin/pygments_css.rb +76 -0
  235. data/plugin/rating.rb +419 -0
  236. data/plugin/recent_estraier.rb +50 -0
  237. data/plugin/recent_tweet.rb +71 -0
  238. data/plugin/retweet.rb +86 -0
  239. data/plugin/rubykaigi.rb +99 -0
  240. data/plugin/search-bing.rb +87 -0
  241. data/plugin/search-default.rb +264 -0
  242. data/plugin/search-google-custom.rb +60 -0
  243. data/plugin/search-yahoo-websearch.rb +121 -0
  244. data/plugin/search-yahoo.rb +109 -0
  245. data/plugin/section_footer.rb +195 -0
  246. data/plugin/section_footer2.rb +278 -0
  247. data/plugin/section_permalink.rb +73 -0
  248. data/plugin/section_permalink_anchor.rb +39 -0
  249. data/plugin/select_style.rb +42 -0
  250. data/plugin/select_theme.rb +90 -0
  251. data/plugin/show_and_hide.rb +77 -0
  252. data/plugin/slideshare.rb +10 -0
  253. data/plugin/socialbutton.rb +60 -0
  254. data/plugin/tatsu_zine.rb +93 -0
  255. data/plugin/tdiarygraph_flashstyle.rb +296 -0
  256. data/plugin/tdiarytimes.rb +166 -0
  257. data/plugin/tdiarytimes2.rb +406 -0
  258. data/plugin/tdiarytimes_flashstyle.rb +263 -0
  259. data/plugin/tdiarytimes_textstyle.rb +290 -0
  260. data/plugin/title_anchor.rb +16 -0
  261. data/plugin/tweet_quote.rb +106 -0
  262. data/plugin/twitpic.rb +10 -0
  263. data/plugin/twitter.rb +46 -0
  264. data/plugin/twitter_anywhere.rb +209 -0
  265. data/plugin/twitter_badge.rb +42 -0
  266. data/plugin/twitter_js.rb +59 -0
  267. data/plugin/ustream.rb +19 -0
  268. data/plugin/vimeo.rb +14 -0
  269. data/plugin/volatile.rb +89 -0
  270. data/plugin/vote.rb +100 -0
  271. data/plugin/wikiloc.rb +27 -0
  272. data/plugin/windex.rb +512 -0
  273. data/plugin/yahoo_kousei.rb +79 -0
  274. data/plugin/yahoo_map.rb +97 -0
  275. data/plugin/youtube.rb +33 -0
  276. data/plugin/yshop.rb +189 -0
  277. data/plugin/zenback.rb +46 -0
  278. data/spec/apple_webclip_spec.rb +46 -0
  279. data/spec/fixtures/friendfeed.xml +2 -0
  280. data/spec/fixtures/github.json +1 -0
  281. data/spec/fixtures/twitter.xml +73 -0
  282. data/spec/gist_spec.rb +16 -0
  283. data/spec/github_link_spec.rb +39 -0
  284. data/spec/google_analytics_spec.rb +60 -0
  285. data/spec/jdate_spec.rb +23 -0
  286. data/spec/jmonth_spec.rb +28 -0
  287. data/spec/jyear_spec.rb +21 -0
  288. data/spec/my_hotentry_spec.rb +78 -0
  289. data/spec/openid_spec.rb +246 -0
  290. data/spec/opensearch_ad_spec.rb +50 -0
  291. data/spec/profile_spec.rb +88 -0
  292. data/spec/rcov.opts +2 -0
  293. data/spec/spec_helper.rb +223 -0
  294. data/spec/title_anchor_spec.rb +39 -0
  295. data/spec/twitter_js_spec.rb +116 -0
  296. data/spec/youtube_spec.rb +20 -0
  297. data/style/hatena_style.rb +1011 -0
  298. data/style/markdown_style.rb +239 -0
  299. data/style/wikiext_style.rb +21 -0
  300. data/tdiary-contrib.gemspec +25 -0
  301. data/util/clean-spam/README.ja +1 -0
  302. data/util/clean-spam/tdiary-comment-clean +46 -0
  303. data/util/clean-spam/tdiary-comment-clean2 +81 -0
  304. data/util/clean-spam/tdiary-referer-clean +46 -0
  305. data/util/convert_pstore.rb +82 -0
  306. data/util/estraier-search/ChangeLog +36 -0
  307. data/util/estraier-search/README.ja +114 -0
  308. data/util/estraier-search/en/estraier-register.rb +3 -0
  309. data/util/estraier-search/estraier-register.rb +298 -0
  310. data/util/estraier-search/estraier-search.rb +273 -0
  311. data/util/estraier-search/estraier.rhtml +73 -0
  312. data/util/estraier-search/estraier.rxml +23 -0
  313. data/util/estraier-search/i.estraier.rhtml +31 -0
  314. data/util/estraier-search/ja/estraier-register.rb +3 -0
  315. data/util/image-gallery/README.ja +27 -0
  316. data/util/image-gallery/image-gallery.rb +523 -0
  317. data/util/image-gallery/image-gallery.rb.euc-jp +523 -0
  318. data/util/image-gallery/js/SmoothGallery/Changelog +52 -0
  319. data/util/image-gallery/js/SmoothGallery/css/ReMooz.css +186 -0
  320. data/util/image-gallery/js/SmoothGallery/css/img/carrow1.gif +0 -0
  321. data/util/image-gallery/js/SmoothGallery/css/img/carrow2.gif +0 -0
  322. data/util/image-gallery/js/SmoothGallery/css/img/closebox.gif +0 -0
  323. data/util/image-gallery/js/SmoothGallery/css/img/closebox.png +0 -0
  324. data/util/image-gallery/js/SmoothGallery/css/img/fleche1.gif +0 -0
  325. data/util/image-gallery/js/SmoothGallery/css/img/fleche1.png +0 -0
  326. data/util/image-gallery/js/SmoothGallery/css/img/fleche2.gif +0 -0
  327. data/util/image-gallery/js/SmoothGallery/css/img/fleche2.png +0 -0
  328. data/util/image-gallery/js/SmoothGallery/css/img/loading-bar-black.gif +0 -0
  329. data/util/image-gallery/js/SmoothGallery/css/img/open.gif +0 -0
  330. data/util/image-gallery/js/SmoothGallery/css/img/open.png +0 -0
  331. data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_e.png +0 -0
  332. data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_n.png +0 -0
  333. data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_ne.png +0 -0
  334. data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_nw.png +0 -0
  335. data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_s.png +0 -0
  336. data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_se.png +0 -0
  337. data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_sw.png +0 -0
  338. data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_w.png +0 -0
  339. data/util/image-gallery/js/SmoothGallery/css/img/spinner.gif +0 -0
  340. data/util/image-gallery/js/SmoothGallery/css/jd.gallery.css +371 -0
  341. data/util/image-gallery/js/SmoothGallery/css/layout.css +91 -0
  342. data/util/image-gallery/js/SmoothGallery/license.txt +621 -0
  343. data/util/image-gallery/js/SmoothGallery/resizer.php +113 -0
  344. data/util/image-gallery/js/SmoothGallery/scripts/Changelog +52 -0
  345. data/util/image-gallery/js/SmoothGallery/scripts/History.Routing.js +126 -0
  346. data/util/image-gallery/js/SmoothGallery/scripts/History.js +109 -0
  347. data/util/image-gallery/js/SmoothGallery/scripts/ReMooz.js +364 -0
  348. data/util/image-gallery/js/SmoothGallery/scripts/jd.gallery.js +843 -0
  349. data/util/image-gallery/js/SmoothGallery/scripts/jd.gallery.set.js +183 -0
  350. data/util/image-gallery/js/SmoothGallery/scripts/jd.gallery.transitions.js +90 -0
  351. data/util/image-gallery/js/SmoothGallery/scripts/jdgalleryresize.js +828 -0
  352. data/util/image-gallery/js/SmoothGallery/scripts/license.txt +621 -0
  353. data/util/image-gallery/js/SmoothGallery/scripts/mootools-1.2-more.js +103 -0
  354. data/util/image-gallery/js/SmoothGallery/scripts/mootools-1.2.1-core-yc.js +349 -0
  355. data/util/image-gallery/js/SmoothGallery/scripts/resizer.php +113 -0
  356. data/util/image-gallery/misc/plugin/recent_image.rb +406 -0
  357. data/util/image-gallery/skel/gallery.rhtml +154 -0
  358. data/util/image-gallery/skel/gallery.rhtml.euc-jp +154 -0
  359. data/util/image-gallery/tdiary.conf.igsample +8 -0
  360. data/util/image-gallery/theme/image-gallery.css +85 -0
  361. data/util/image2flickr.rb +282 -0
  362. data/util/posttdiary/README.ja +12 -0
  363. data/util/posttdiary/posttdiary-ex.rb +1155 -0
  364. data/util/posttdiary/posttdiary.rb +245 -0
  365. data/util/rast-search/ChangeLog +55 -0
  366. data/util/rast-search/README.ja +99 -0
  367. data/util/rast-search/en/rast-register.rb +3 -0
  368. data/util/rast-search/i.rast.rhtml +33 -0
  369. data/util/rast-search/ja/rast-register.rb +3 -0
  370. data/util/rast-search/rast-register.rb +326 -0
  371. data/util/rast-search/rast-search.rb +249 -0
  372. data/util/rast-search/rast.rhtml +66 -0
  373. data/util/rast-search/rast.rxml +21 -0
  374. data/util/section_link/README +11 -0
  375. data/util/section_link/misc/plugin/section_link.rb +68 -0
  376. data/util/section_link/misc/plugin/section_link_anchor.rb +38 -0
  377. data/util/section_link/tdiary/tdiary_day_ext.rb +21 -0
  378. data/util/section_link/tdiary/tdiaryext_style.rb +36 -0
  379. data/util/section_link/tdiary/wikiext_style.rb +36 -0
  380. data/util/tdiary-for-ruby1.9/compatible.rb +97 -0
  381. data/util/tdiary-for-ruby1.9/tdiary-2.2.0.patch +98 -0
  382. data/util/tdiary-for-ruby1.9/tdiary-2.3.1.patch +212 -0
  383. data/util/tdiary-grep/README +4 -0
  384. data/util/tdiary-grep/grep.rb +445 -0
  385. data/util/tdiary-mode/http.el +130 -0
  386. data/util/tdiary-mode/tdiary-mode.el +613 -0
  387. data/util/tdiary-vim/ChangeLog +25 -0
  388. data/util/tdiary-vim/README +60 -0
  389. data/util/tdiary-vim/tdiary.vim +350 -0
  390. data/util/tdiarysearch/README.en +53 -0
  391. data/util/tdiarysearch/README.ja +99 -0
  392. data/util/tdiarysearch/search.rb +504 -0
  393. metadata +497 -0
data/lib/wgs2tky.rb ADDED
@@ -0,0 +1,93 @@
1
+ #
2
+ # wgs2tky.rb
3
+ # -- GPS data converter
4
+ #
5
+ # kp<kp@mmho.no-ip.org>
6
+ # Destributed under the GPL
7
+
8
+ class Wgs2Tky
9
+
10
+ Pi = Math::PI
11
+ Rd = Pi/180
12
+
13
+ # WGS84
14
+ A = 6378137.0 # 赤道半径
15
+ F = 1/298.257223563 # 扁平率
16
+ E2 = F*2 - F*F # 第一離心率
17
+
18
+ # Tokyo
19
+ A_ = 6378137.0 - 739.845 # 6377397.155
20
+ F_ = 1/298.257223563 - 0.000010037483
21
+ # 1 / 299.152813
22
+ E2_ = F_*2 - F_*F_
23
+
24
+ Dx = +128
25
+ Dy = -481
26
+ Dz = -664
27
+
28
+ def Wgs2Tky.conv!(lat,lon,h = 0)
29
+ b = lat[0].to_f + lat[1].to_f/60 + lat[2].to_f/3600
30
+ l = lon[0].to_f + lon[1].to_f/60 + lon[2].to_f/3600
31
+
32
+ (x,y,z) = Wgs2Tky._llh2xyz(b,l,h,A,E2)
33
+
34
+ x+=Dx
35
+ y+=Dy
36
+ z+=Dz
37
+
38
+ (b,l,h) = Wgs2Tky._xyz2llh(x,y,z,A_,E2_)
39
+
40
+ lat[0..2]=Wgs2Tky._deg2gdms(b)
41
+ lon[0..2]=Wgs2Tky._deg2gdms(l)
42
+ end
43
+
44
+ private
45
+
46
+ include Math
47
+ extend Math
48
+
49
+ def Wgs2Tky._llh2xyz(b,l,h,a,e2)
50
+
51
+ b *= Rd
52
+ l *= Rd
53
+
54
+ sb = sin(b)
55
+ cb = cos(b)
56
+
57
+ rn = a / Math.sqrt(1-e2*sb*sb)
58
+
59
+ x = (rn+h)*cb*cos(l)
60
+ y = (rn+h)*cb*sin(l)
61
+ z = (rn*(1-e2)+h) * sb
62
+
63
+ return x,y,z
64
+ end
65
+
66
+ def Wgs2Tky._xyz2llh(x,y,z,a,e2)
67
+
68
+ bda = sqrt(1-e2)
69
+
70
+ po = sqrt(x*x+y*y)
71
+ t = atan2(z,po*bda)
72
+ st = sin(t)
73
+ ct = cos(t)
74
+ b = atan2(z+e2*a/bda*st*st*st,po-e2*a*ct*ct*ct)
75
+ l = atan2(y,x)
76
+
77
+ sb = sin(b)
78
+ rn = a / sqrt(1-e2*sb*sb)
79
+ h = po / cos(b) - rn
80
+
81
+ return b/Rd,l/Rd,h
82
+ end
83
+
84
+ def Wgs2Tky._deg2gdms(deg)
85
+ sf = deg*3600
86
+ s = sf.to_i%60
87
+ m = (sf/60).to_i%60
88
+ d = (sf/3600).to_i
89
+ s += sf - sf.to_i
90
+ return d,m,s
91
+ end
92
+ end
93
+
@@ -0,0 +1,6 @@
1
+ url: http://buzzurl.jp/entry/
2
+ src: http://buzzurl.jp/static/image/api/icon/add_icon_mini_10.gif
3
+ title:
4
+ ja: このエントリを含む Buzzurl
5
+ =: this entry on Buzzurl
6
+ counter: http://buzzurl.jp/api/counter/
@@ -0,0 +1,6 @@
1
+ url: http://bookmark.fc2.com/search/detail?url=
2
+ src: http://bookmark.fc2.com/img/add-16.gif
3
+ title:
4
+ ja: このエントリを含む FC2ブックマーク
5
+ =: this entry on FC2 Bookmark
6
+ counter: http://bookmark.fc2.com/image/users/
@@ -0,0 +1,6 @@
1
+ url: http://clip.livedoor.com/page/
2
+ src: http://parts.blog.livedoor.jp/img/cmn/clip_16_16_w.gif
3
+ title:
4
+ ja: このエントリを含む livedoor クリップ
5
+ =: this entry on livedoor clip
6
+ counter: http://image.clip.livedoor.com/counter/
@@ -0,0 +1,7 @@
1
+ url: 'http://twitter.com/home?status=RT @your-twitter-account: %s '
2
+ src: http://kayakaya.net/parts/tdiary/retweet.gif
3
+ title:
4
+ ja: このエントリをRetweetする
5
+ =: Retweet for this entry
6
+ counter:
7
+ usesubtitle: !ruby/regexp /%s/
@@ -0,0 +1,7 @@
1
+ url: 'http://twitter.com/home?status=Reading: %s '
2
+ src: http://twitter-badges.s3.amazonaws.com/t_mini-a.png
3
+ title:
4
+ ja: このエントリをTweetする
5
+ =: Tweet this entry
6
+ counter:
7
+ usesubtitle: !ruby/regexp /%s/
@@ -0,0 +1,6 @@
1
+ url: http://bookmarks.yahoo.co.jp/url?url=
2
+ src: http://i.yimg.jp/images/sicons/ybm16.gif
3
+ title:
4
+ ja: このエントリを含む Yahoo!ブックマーク
5
+ =: this entry on Yahoo! JAPAN Bookmarks
6
+ counter: http://num.bookmarks.yahoo.co.jp/image/small/
@@ -0,0 +1,89 @@
1
+ # add_bookmark.rb $Revision 1.3 $
2
+ #
3
+ # Copyright (c) 2005 SHIBATA Hiroshi <h-sbt@nifty.com>
4
+ # You can redistribute it and/or modify it under GPL2.
5
+
6
+ require 'uri'
7
+
8
+ def bookmark_init
9
+ @conf['add.bookmark.delicious'] ||= ''
10
+ @conf['add.bookmark.hatena'] ||= ''
11
+ @conf['add.bookmark.livedoor'] ||= ''
12
+ @conf['add.bookmark.buzzurl'] ||= ''
13
+ end
14
+
15
+ add_subtitle_proc do |date, index, subtitle|
16
+ bookmark_init
17
+
18
+ if @conf.mobile_agent? then
19
+ caption = %Q|#{subtitle}|
20
+ else
21
+ caption = %Q|#{subtitle} |
22
+
23
+ section_url = @conf.base_url + anchor(date.strftime('%Y%m%d')) + '#p' + ('%02d' % index)
24
+
25
+ if @conf['add.bookmark.delicious'] == 't' then
26
+ escaped_url = URI.escape(section_url, /[^-.!~*'()\w]/n)
27
+ caption += %Q|<a href="http://delicious.com/save?url=#{escaped_url}" onclick="window.open('http://delicious.com/save?v=5;noui;jump=close;url=#{escaped_url};title='+encodeURIComponent(document.title), 'delicious', 'toolbar=no,width=550,height=550'); return false">|
28
+ caption += %Q|<img src="http://static.delicious.com/img/delicious.small.gif" width="10" height="10" style="border: 0 none;vertical-align: middle;" alt="#{@caption_delicious}">|
29
+ caption += %Q|</a> |
30
+ end
31
+
32
+ if @conf['add.bookmark.hatena'] == 't' then
33
+ caption += %Q|<a href="http://b.hatena.ne.jp/append?#{h(section_url)}">|
34
+ caption += %Q|<img src="http://b.hatena.ne.jp/images/append.gif" width="16" height="12" style="border: 0 none;vertical-align: middle;" alt="#{@caption_hatena}" title="#{@caption_hatena}">|
35
+ caption += %Q|</a> |
36
+ end
37
+
38
+ if @conf['add.bookmark.livedoor'] == 't' then
39
+ caption += %Q|<a href="http://clip.livedoor.com/redirect?link=#{h(section_url)}" class="ldclip-redirect">|
40
+ caption += %Q|<img src="http://parts.blog.livedoor.jp/img/cmn/clip_16_16_w.gif" width="16" height="16" style="border: 0 none;vertical-align: middle;" alt="#{@caption_livedoor}" title="#{@caption_livedoor}">|
41
+ caption += %Q|</a> |
42
+ end
43
+
44
+ if @conf['add.bookmark.buzzurl'] == 't' then
45
+ caption += %Q|<a href="http://buzzurl.jp/entry/#{h(section_url)}">|
46
+ caption += %Q|<img src="http://buzzurl.jp/static/image/api/icon/add_icon_mini_10.gif" width="16" height="12" style="border: 0 none;vertical-align: middle;" title="#{@caption_buzzurl}" alt="#{@caption_buzzurl}" class="icon">|
47
+ caption += %Q|</a> |
48
+ end
49
+ end
50
+
51
+ <<-HTML
52
+ #{caption}
53
+ HTML
54
+ end
55
+
56
+ add_conf_proc( 'add_bookmark', @add_bookmark_label ) do
57
+ add_bookmark_conf_proc
58
+ end
59
+
60
+ def add_bookmark_conf_proc
61
+ bookmark_init
62
+ saveconf_add_bookmark
63
+
64
+ bookmark_categories = [
65
+ 'add.bookmark.delicious',
66
+ 'add.bookmark.hatena',
67
+ 'add.bookmark.livedoor',
68
+ 'add.bookmark.buzzurl'
69
+ ]
70
+
71
+ r = ''
72
+ r << %Q|<h3 class="subtitle">#{@add_bookmark_label}</h3><p>#{@add_bookmark_desc}</p><ul>|
73
+
74
+ bookmark_categories.each_with_index do |idx,view|
75
+ checked = 't' == @conf[idx] ? ' checked' : ''
76
+ label = @bookmark_label[view]
77
+ r << %Q|<li><label for="#{idx}"><input id=#{idx} name=#{idx} type="checkbox" value="t"#{checked}>#{label}</label></li>|
78
+ end
79
+ r << %Q|</ul>|
80
+ end
81
+
82
+ if @mode == 'saveconf'
83
+ def saveconf_add_bookmark
84
+ @conf['add.bookmark.delicious'] = @cgi.params['add.bookmark.delicious'][0]
85
+ @conf['add.bookmark.hatena'] = @cgi.params['add.bookmark.hatena'][0]
86
+ @conf['add.bookmark.livedoor'] = @cgi.params['add.bookmark.livedoor'][0]
87
+ @conf['add.bookmark.buzzurl'] = @cgi.params['add.bookmark.buzzurl'][0]
88
+ end
89
+ end
@@ -0,0 +1,26 @@
1
+ #
2
+ # apple_webclip.rb - Add icon information for Apple WebClip.
3
+ #
4
+ # Copyright (C) 2008, TADA Tadashi <sho@spc.gr.jp>
5
+ # You can redistribute it and/or modify it under GPL.
6
+ #
7
+
8
+ add_header_proc do
9
+ if @conf['apple_webclip.url'] and @conf['apple_webclip.url'].size > 0
10
+ %Q| <link rel="apple-touch-icon" href="#{h @conf['apple_webclip.url']}">\n|
11
+ else
12
+ ''
13
+ end
14
+ end
15
+
16
+ add_conf_proc( 'apple_webclip', 'Apple WebClip' ) do
17
+ if @mode == 'saveconf' then
18
+ @conf['apple_webclip.url'] = @cgi.params['apple_webclip.url'][0]
19
+ end
20
+
21
+ <<-HTML
22
+ <h3 class="subtitle">Icon URL</h3>
23
+ <p><input name="apple_webclip.url" value="#{h @conf['apple_webclip.url']}" size="70"></p>
24
+ <p>Create and cpecify PNG file 60x60 pixels.</p>
25
+ HTML
26
+ end
@@ -0,0 +1,47 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # appstore.rb - embeded AppStore data for tDiary,
4
+ # use App Store Affliate Resources Search API.
5
+ # http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html
6
+ #
7
+ # Copyright (C) 2011, tamoot <tamoot+tdiary@gmail.com>
8
+ # You can redistribute it and/or modify it under GPL2.
9
+ #
10
+
11
+ require 'uri'
12
+
13
+ if /\A(?:latest|day|month|nyear|preview)\z/ =~ @mode
14
+ enable_js('appstore.js')
15
+ end
16
+
17
+ def appstore_detail(url)
18
+ appstore_dom = ''
19
+
20
+ begin
21
+ appstore_dom = appstore_common(url, {:detail => true})
22
+
23
+ rescue
24
+ appstore_dom = "<b>Error. message=#{$!.message}.</b>"
25
+
26
+ end
27
+
28
+ end
29
+
30
+ def appstore_common(url, params)
31
+ return %Q|<a href="url">#{url}</a>| if feed?
32
+
33
+ appstore_uri = URI::parse(url)
34
+ id = appstore_uri.path.split('/').last.gsub('id', '')
35
+ raise StandardError.new("AppStore ID: not found from #{url}..") if id.nil? || id == ''
36
+
37
+ return %Q|<a class="appstore" data-appstoreid="#{id}" href="#{url}"></a>|
38
+ end
39
+
40
+ # Local Variables:
41
+ # mode: ruby
42
+ # indent-tabs-mode: t
43
+ # tab-width: 3
44
+ # ruby-indent-level: 3
45
+ # End:
46
+ # vim: ts=3
47
+
@@ -0,0 +1,86 @@
1
+ # bigpresen.rb $Revision: 1.03 $
2
+ #
3
+ # bigpresen : ����å��ǿʹԤ���ֹⶶ�᥽�åɡ�������ʸ���ץ쥼��ơ�����������
4
+ #
5
+ # �ѥ�᥿ :
6
+ # str : ��ʸ��"|"�ϥ��饤�ɤζ��ڤꡢ"/"�ϥ��饤����β��ԤȤʤ롣
7
+ # "|"��"|"��ɽ��������ˤϡ�����"\"��Ĥ��ƥ��������ס�
8
+ # width : ���饤�ɤ������ԥ�����ǻ��ꡣ(�ǥե���� : 480)
9
+ # height : ���饤�ɤι⤵���ԥ�����ǻ��ꡣ(�ǥե���� : 320)
10
+ #
11
+ # ������ʸ�ˡ�<%= bigpresen 'str','width','height' %> �η����ǵ��Ҥ��ޤ���
12
+ # ʸ���Υ������ϡ�ɽ���ƥ����Ȥȥ��饤�ɤΥ������˹礦�褦��ưŪ��Ĵ������ޤ���
13
+ # JavaScript��DHTML���Ѥ���ư�����Τǡ������Ķ��ˤ�äƤ�ɽ������ʤ����Ȥ⤢��ޤ���
14
+ #
15
+ # Copyright (c) 2006 Maripo Goda
16
+ # mailto:madin@madin.jp
17
+ # Document URL http://www.madin.jp/works/plugin.html
18
+ # You can redistribute it and/or modify it under GPL2.
19
+
20
+ @bigPresenID = 0;
21
+
22
+ def bigpresen (str='', width='480',height='320')
23
+ scriptID = 'bp' + @bigPresenID.to_s
24
+ @bigPresenID += 1;
25
+
26
+ presen_ary = str.gsub("\\/",'&frasl;').gsub("\\|","&\#65073").split(/\|/);
27
+ presen_ary.collect!{|s|
28
+ s = '"' + s.gsub('/','<br>') + '"'
29
+ }
30
+ presen_str = presen_ary.join(',')
31
+
32
+ return <<HTML
33
+ <script type="text/javascript">
34
+ <!--
35
+ t#{scriptID} = 0;
36
+ w#{scriptID}=#{width};
37
+ h#{scriptID}="#{height}";
38
+ msg#{scriptID} = new Array(#{presen_str});
39
+ function #{scriptID} () {
40
+ if (t#{scriptID} < msg#{scriptID}.length) {
41
+ msgArr = msg#{scriptID}[t#{scriptID}].split('<br>');
42
+ maxPx = h#{scriptID} * 0.8;
43
+ for (t = 0; t < msgArr.length; t ++) {
44
+ maxPx = Math.min(maxPx, w#{scriptID} * 2 * 0.9 / countLength(msgArr[t]));
45
+ }
46
+ maxPx = Math.min(maxPx, Math.floor(h#{scriptID} * 0.8 / msgArr.length));
47
+ with (document.getElementById("#{scriptID}")) {
48
+ innerHTML = msg#{scriptID}[t#{scriptID}];
49
+ style.fontSize = maxPx+"px";
50
+ style.top = ((h#{scriptID}-(maxPx * msgArr.length)) / 2) + "px";
51
+ }
52
+ t#{scriptID} ++;
53
+ }
54
+ else {
55
+ t#{scriptID} = 0;
56
+ with (document.getElementById("#{scriptID}")) {
57
+ innerHTML = "��REPLAY��";
58
+ style.fontSize = '100%';
59
+ style.top = '50%';
60
+ }
61
+ }
62
+ }
63
+
64
+ function countLength (str)
65
+ {
66
+ len = 0;
67
+ for (i = 0; i < str.length; i++) {
68
+ len ++;
69
+ if (escape(str.charAt(i)).length > 3) {
70
+ len ++
71
+ }
72
+ }
73
+ return Math.max(len, 1);
74
+ }
75
+ -->
76
+ </script>
77
+
78
+ <noscript><p>JavaScript Required.</p></noscript>
79
+ <div class="bigpresen" style="text-align:center; position:relative; width:#{width}px; height:#{height}px; background:#fff;border:ridge 4px #ccc;" onclick="#{scriptID}()">
80
+
81
+ <span id="#{scriptID}" style="width:100%; position:absolute; top:50%; left:0; line-height:100%; color:black; font-family:'�ͣ� �Х����å�', sans-serif;">��START��</span>
82
+
83
+ </div>
84
+
85
+ HTML
86
+ end
data/plugin/bitly.rb ADDED
@@ -0,0 +1,39 @@
1
+ #
2
+ # bitly.rb - shorten URL by bit.ly.
3
+ #
4
+ # usage: shorten_url_you_got = bitly( 'long_url' ) || long_url
5
+ # (because bitly returns nil sometime.)
6
+ #
7
+ # required some options below:
8
+ # @options['biyly.login'] : your login ID of bit.ly.
9
+ # @options['biyly.key'] : your API key of biy.ly.
10
+ #
11
+ # Copyright (C) 2010, TADA Tadashi <t@tdtds.jp>
12
+ # You can redistribute it and/or modify it under GPL.
13
+ #
14
+
15
+ require 'json'
16
+ require 'net/http'
17
+
18
+ def bitly( long_url )
19
+ return nil if !long_url or long_url.empty?
20
+
21
+ @bitly_cache ||= {} # cached only on memory
22
+ return @bitly_cache[long_url] if @bitly_cache[long_url]
23
+
24
+ login = @conf['bitly.login']
25
+ key = @conf['bitly.key']
26
+
27
+ # proxy
28
+ px_host, px_port = (@conf['proxy'] || '').split( /:/ )
29
+ px_port = 80 if px_host and !px_port
30
+
31
+ query = "/v3/shorten?longUrl=#{CGI::escape long_url}&login=#{login}&apiKey=#{key}&format=json"
32
+ begin
33
+ Net::HTTP.version_1_2
34
+ res = Net::HTTP::Proxy(px_host, px_port).get('api.bit.ly', "#{query}")
35
+ @bitly_cache[long_url] = JSON::parse(res, &:read)['data']['url']
36
+ rescue TypeError => te# biy.ly returns an error.
37
+ nil
38
+ end
39
+ end
@@ -0,0 +1,54 @@
1
+ # Show navi for twitter-bootstrap theme
2
+ #
3
+ # Copyright (c) KAOD Masanori <kdmsnr at gmail.com>
4
+ # You can redistribute it and/or modify it under GPL.
5
+
6
+ def bootstrap_navi(options = {})
7
+ default_options = {
8
+ :navbar_class => nil,
9
+ :site_name? => true,
10
+ :search_form? => true
11
+ }
12
+ options = default_options.merge(options)
13
+
14
+ body = ""
15
+ if options[:site_name?]
16
+ body += <<-EOS
17
+ <a class="brand" href="#{@conf.index}">#{h @conf.html_title}</a>
18
+ EOS
19
+ end
20
+
21
+ body += <<-EOS
22
+ <ul class="nav">
23
+ #{navi_user.gsub(/span/, "li")}
24
+ #{navi_admin.gsub(/span/, "li")}
25
+ </ul>
26
+ EOS
27
+
28
+ if options[:search_form?]
29
+ body += <<-EOS
30
+ <form class="navbar-search pull-left"
31
+ method="get" action="http://www.google.co.jp/search"
32
+ onsubmit="$('#sitesearch').val($(location).attr('host')+$(location).attr('pathname'))">
33
+ <input type="hidden" name="ie" value="UTF8">
34
+ <input type="hidden" name="oe" value="UTF8">
35
+ <input type="hidden" name="sitesearch" id="sitesearch">
36
+ <input type="text" class="search-query" placeholder="Search" name="q">
37
+ </form>
38
+ EOS
39
+ end
40
+
41
+ <<-EOS
42
+ <div class="navbar #{options[:navbar_class]}">
43
+ <div class="navbar-inner">
44
+ <div class="container">
45
+ #{body}
46
+ </div>
47
+ </div>
48
+ </div>
49
+ EOS
50
+ end
51
+
52
+ add_header_proc do
53
+ %Q|<meta name="viewport" content="width=device-width, initial-scale=1.0">|
54
+ end
@@ -0,0 +1,9 @@
1
+ # canonical.rb
2
+
3
+ if /latest/ =~ @mode then
4
+ add_header_proc do
5
+ <<-HTML
6
+ <link rel="canonical" href="#{@conf.base_url}">
7
+ HTML
8
+ end
9
+ end
@@ -0,0 +1,73 @@
1
+ # -*- coding: utf-8 -*-
2
+ # category_similar.rb:
3
+ # * shows similar posts under the diary
4
+ # * depends on plugin/category.rb
5
+ # You can redistribute it and/or modify it under the same license as tDiary.
6
+
7
+ def category_similar(categories, max_item)
8
+ info = Category::Info.new(@cgi, @years, @conf)
9
+ months = [['01', '02', '03'], ['04', '05', '06'], ['07', '08', '09'], ['10', '11', '12']][@date.strftime("%m").to_i / (3 + 1)] # quarter
10
+ years = { @date.strftime("%Y") => months }
11
+ hash = @category_cache.categorize(info.category, years)
12
+ items = []
13
+ hash.values_at(*categories).inject({}){|r, i|
14
+ r.merge i if !r.nil? and !i.nil?
15
+ }.to_a.each do |ymd_ary|
16
+ ymd = ymd_ary[0]
17
+ ary = ymd_ary[1]
18
+ next if ymd == @date.strftime('%Y%m%d')
19
+ t = Time.local(ymd[0,4], ymd[4,2], ymd[6,2]).strftime(@conf.date_format)
20
+ ary.each do |idx, title, excerpt|
21
+ items << %Q|<a href="#{h @index}#{anchor "#{ymd}#p#{'%02d' % idx}"}" title="#{h excerpt}">#{t}#p#{'%02d' % idx}</a> #{apply_plugin(title)}|
22
+ end
23
+ end
24
+
25
+ unless items.empty?
26
+ '<div class="section">' +
27
+ "<h3 class='category-similar'>#{category_similar_label}</h3>" +
28
+ "<ul>" +
29
+ items.sort.reverse[0, max_item].map{|i| "<li>#{i}</i>" }.join("\n") +
30
+ "</ul>" +
31
+ "</div>"
32
+ end
33
+ end
34
+
35
+ add_conf_proc('category_similar', category_similar_label, 'basic') do
36
+ if @mode == 'saveconf'
37
+ @conf["category_similar.excludes"] =
38
+ @cgi.params["category_similar.excludes"][0]
39
+ @conf["category_similar.section_amounts"] =
40
+ @cgi.params["category_similar.section_amounts"][0].to_i
41
+ end
42
+
43
+ <<-HTML
44
+ <h3 class="subtitle">#{category_similar_label}</h3>
45
+ <h4>#{category_similar_excludes}</h4>
46
+ <textarea name="category_similar.excludes" rows="5" cols="50">#{h @conf['category_similar.excludes']}</textarea>
47
+
48
+ <h4>#{category_similar_amounts}</h4>
49
+ <input type="text" name="category_similar.section_amounts" value="#{h @conf['category_similar.section_amounts']}" style="text-align:right;"/>
50
+ HTML
51
+ end
52
+
53
+ add_body_leave_proc do |date, idx|
54
+ diary = @diaries[date.strftime('%Y%m%d')]
55
+ if @mode =~ /day/ and diary.categorizable?
56
+ categories = []
57
+ diary.each_section do |s|
58
+ categories += s.categories unless s.categories.empty?
59
+ end
60
+ categories.delete_if do |i|
61
+ @conf['category_similar.excludes'].split(/\r?\n/).include? i
62
+ end
63
+ category_similar(categories, @conf['category_similar.section_amounts'])
64
+ end
65
+ end
66
+
67
+ # Local Variables:
68
+ # mode: ruby
69
+ # indent-tabs-mode: t
70
+ # tab-width: 3
71
+ # ruby-indent-level: 3
72
+ # End:
73
+ # vim: ts=3
@@ -0,0 +1,60 @@
1
+ #
2
+ # category_to_tag.rb - show categories list in end of each section
3
+ #
4
+ # Copyright (C) 2005, TADA Tadashi <sho@spc.gr.jp>
5
+ # You can redistribute it and/or modify it under GPL2.
6
+ #
7
+
8
+ if respond_to?( :categorized_title_of_day ) then # BlogKit
9
+ def categorized_title_of_day( date, title )
10
+ @category_to_tag_list = {}
11
+ cats, stripped = title.scan( /^((?:\[[^\]]+\])+)\s*(.*)/ )[0]
12
+ if cats then
13
+ cats.scan( /\[([^\]]+)\]+/ ).flatten.each do |tag|
14
+ @category_to_tag_list[tag] = true # true when blog
15
+ end
16
+ else
17
+ stripped = title
18
+ end
19
+ stripped
20
+ end
21
+ add_body_leave_proc do |date|
22
+ feed? ? '' : category_to_tag_list
23
+ end
24
+ elsif respond_to?( :category_anchor ) # diary
25
+ add_section_enter_proc do |date, index|
26
+ @category_to_tag_list = {}
27
+ ''
28
+ end
29
+ alias subtitle_link_original subtitle_link
30
+ def subtitle_link( date, index, subtitle )
31
+ s = ''
32
+ if subtitle then
33
+ s = subtitle.sub( /^(\[([^\[]+?)\])+/ ) do
34
+ $&.scan( /\[(.*?)\]/ ) do |tag|
35
+ @category_to_tag_list[CGI::unescapeHTML(tag[0])] = false # false when diary
36
+ end
37
+ ''
38
+ end
39
+ end
40
+ subtitle_link_original( date, index, s.strip )
41
+ end
42
+ add_section_leave_proc do |date, index|
43
+ feed? ? '' : category_to_tag_list
44
+ end
45
+ end
46
+
47
+ def category_to_tag_list
48
+ if @category_to_tag_list and not @category_to_tag_list.empty? then
49
+ r = '<div class="tags">Tags: '
50
+ @category_to_tag_list.each do |tag, blog|
51
+ if blog
52
+ r << %Q|<a href="#{h @index}?blogcategory=#{h tag}">#{tag}</a> |
53
+ else
54
+ r << category_anchor( "#{tag}" ).sub( /^\[/, '' ).sub( /\]$/, '' ) << ' '
55
+ end
56
+ end
57
+ r << "</div>\n"
58
+ end
59
+ end
60
+