tdiary-contrib 3.2.2.20130518

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 (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
+