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
@@ -0,0 +1,181 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # dbi_io.rb: DBI IO for tDiary 2.x.
4
+ #
5
+ # NAME dbi_io
6
+ #
7
+ # DESCRIPTION tDiary向けDBI用IOクラス
8
+ # 詳細は、README.jaを参照してください
9
+ #
10
+ # Copyright (C) 2003 ma2tak <ma2tak@ma2tak.dyndns.org>
11
+ # (C) 2004 moonwolf <moonwolf@mooonwolf.com>
12
+ # (C) 2005 Kazuhiko <kazuhiko@fdiary.net>
13
+ # (C) 2012 hsbt <shibata.hiroshi@gmail.com>
14
+ #
15
+ # You can distribute this under GPL.
16
+ require 'tdiary/io/base'
17
+ require 'tempfile'
18
+ require 'dbi'
19
+
20
+ module TDiary
21
+ module CommentIO
22
+ def restore_comment(diaries)
23
+ begin
24
+ diaries.each do |date, diary_object|
25
+ @dbh.select_all("SELECT diary_id, name, mail, last_modified, visible, no, author, comment FROM commentdata WHERE author=? AND diary_id=? ORDER BY no;", @dbi_author, date) do |diary_id, name, mail, last_modified, visible, no, author, comment|
26
+ comment = Comment.new(name, mail, comment, Time.at(last_modified.to_i))
27
+ comment.show = visible
28
+ diary_object.add_comment(comment)
29
+ end
30
+ end
31
+ rescue Errno::ENOENT
32
+ end
33
+ end
34
+
35
+ def store_comment(diaries)
36
+ begin
37
+ diaries.each do |date, diary|
38
+ no = 0
39
+ diary.each_comment(diary.count_comments(true)) do |com|
40
+ no += 1
41
+ param = [com.name, com.mail, com.date.to_i, com.visible?, com.body, @dbi_author, date, no]
42
+ sth = @dbh.execute("UPDATE commentdata SET name=?, mail=?, last_modified=?, visible=?, comment=? WHERE author=? AND diary_id=? AND no=?;", *param)
43
+ if sth.rows == 0
44
+ @dbh.execute("INSERT INTO commentdata (name, mail, last_modified, visible, comment, author, diary_id, no) VALUES (?,?,?,?,?,?,?,?);", *param)
45
+ end
46
+ end
47
+ @dbh.execute("DELETE FROM commentdata where author=? AND diary_id=? AND no>?", @dbi_author, date, no)
48
+ end
49
+ rescue Errno::ENOENT
50
+ end
51
+ end
52
+ end
53
+
54
+ module RefererIO
55
+ def restore_referer(diaries)
56
+ return
57
+ end
58
+
59
+ def store_referer(diaries)
60
+ return
61
+ end
62
+ end
63
+
64
+
65
+ class DbiIO < BaseIO
66
+ include CommentIO
67
+ include RefererIO
68
+
69
+ def initialize(tdiary)
70
+ @tdiary = tdiary
71
+ @dbi_url = tdiary.conf.dbi_driver_url
72
+ @dbi_user = tdiary.conf.dbi_user
73
+ @dbi_passwd = tdiary.conf.dbi_passwd
74
+ @dbi_author = tdiary.conf.dbi_author || 'default'
75
+ @dbh = DBI.connect(@dbi_url, @dbi_user, @dbi_passwd)
76
+ load_styles
77
+ end
78
+
79
+ class << self
80
+ def load_cgi_conf(conf)
81
+ end
82
+
83
+ def save_cgi_conf(conf, result)
84
+ end
85
+ end
86
+
87
+ #
88
+ # block must be return boolean which dirty diaries.
89
+ #
90
+ def transaction(date)
91
+ File.open("#{Dir.tmpdir}/dbi_io.lock", 'w') do |file|
92
+ file.flock(File::LOCK_EX)
93
+ @dbh.transaction do
94
+ date_string = date.strftime("%Y%m%d")
95
+ diaries = {}
96
+ cache = @tdiary.restore_parser_cache(date, 'defaultio')
97
+ if cache
98
+ diaries.update(cache)
99
+ else
100
+ restore(date_string, diaries)
101
+ restore_comment(diaries)
102
+ restore_referer(diaries)
103
+ end
104
+ @old_referers = {}
105
+ diaries.each_pair{|k,v| @old_referers[k] = v.instance_variable_get('@referers').dup}
106
+ dirty = yield(diaries) if iterator?
107
+ store(diaries) if dirty & TDiary::TDiaryBase::DIRTY_DIARY != 0
108
+ store_comment(diaries) if dirty & TDiary::TDiaryBase::DIRTY_COMMENT != 0
109
+ store_referer(diaries) if dirty & TDiary::TDiaryBase::DIRTY_REFERER != 0
110
+ if dirty or not cache
111
+ @tdiary.store_parser_cache(date, 'defaultio', diaries)
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ def calendar
118
+ calendar = Hash.new{|hash, key| hash[key] = []}
119
+ sql = "SELECT year, month FROM diarydata WHERE author=? GROUP BY year, month ORDER BY year, month;"
120
+ @dbh.select_all(sql, @dbi_author) do |year, month|
121
+ calendar[year] << month
122
+ end
123
+ calendar
124
+ end
125
+
126
+ def diary_factory(date, title, body, style = 'tDiary')
127
+ styled_diary_factory(date, title, body, style)
128
+ end
129
+
130
+ # HNF移行ツールのため、作成
131
+ def restore_diary(date)
132
+ diaries = {}
133
+ restore(date, diaries, false)
134
+ diaries
135
+ end
136
+
137
+ private
138
+
139
+ def restore(date, diaries, month=true)
140
+ sql = "SELECT diary_id, title, last_modified, visible, body, style FROM DiaryData WHERE author='#{@dbi_author}' and diary_id='#{date}';"
141
+ if month == true
142
+ if /(\d\d\d\d)(\d\d)(\d\d)/ =~ date
143
+ sql = "SELECT diary_id, title, last_modified, visible, body, style FROM DiaryData WHERE author='#{@dbi_author}' AND year='#{$1}' AND month='#{$2}';"
144
+ end
145
+ end
146
+ @dbh.select_all(sql) do |diary_id, title, last_modified, visible, body, style|
147
+ style = 'tdiary' if style.nil? || style.empty?
148
+ style = style.downcase
149
+ diary = eval("#{style(style)}::new(diary_id, title, body, Time::at(last_modified.to_i))")
150
+ diary.show(visible)
151
+ diaries[diary_id] = diary
152
+ end
153
+ end
154
+
155
+ def store(diaries)
156
+ diaries.each do |date, diary|
157
+ # save diaries
158
+ if /(\d\d\d\d)(\d\d)(\d\d)/ =~ date
159
+ year = $1
160
+ month = $2
161
+ day = $3
162
+ end
163
+ visible = (diary.visible? ? "true" : "false")
164
+
165
+ param = [year, month, day, diary.title, diary.last_modified.to_i, visible, diary.to_src, diary.style, @dbi_author, date]
166
+ sth = @dbh.execute("UPDATE diarydata SET year=?, month=?, day=?, title=?, last_modified=?, visible=?, body=?, style=? WHERE author=? AND diary_id=?", *param)
167
+ if sth.rows == 0
168
+ @dbh.execute("INSERT INTO diarydata (year, month, day, title, last_modified, visible, body, style, author, diary_id) VALUES (?,?,?,?,?,?,?,?,?,?);", *param)
169
+ end
170
+ end
171
+ end
172
+
173
+ # 追加メソッド for test
174
+ def delete(diaries)
175
+ diaries.each do |date, diary|
176
+ sql = "DELETE FROM diarydata WHERE author=#{@dbi_author} AND diary_id=#{date};"
177
+ @dbh.execute(sql)
178
+ end
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,76 @@
1
+ #
2
+ # refererDbiIO.rb: load/save and show today's referer for DBI IO
3
+ # $Revision: 1.1 $
4
+ #
5
+ # Copyright (C) 2003 ma2tak <ma2tak@ma2tak.dyndns.org>
6
+ # (C) 2004 moonwolf <moonwolf@mooonwolf.com>
7
+ # (C) 2005 Kazuhiko <kazuhiko@fdiary.net>
8
+ # (C) 2007 sasasin <sasasin@sasasin.net>
9
+ #
10
+ # You can distribute this under GPL.
11
+ #
12
+ def referer_transaction( diary = nil, save = false )
13
+ return if @conf.io_class.to_s != 'TDiary::DbiIO'
14
+
15
+ File.open("#{@conf.data_path}/dbi_io_ref.lock", 'w') {|file|
16
+ file.flock(File::LOCK_EX)
17
+ dbh = DBI.connect(@conf.dbi_driver_url, @conf.dbi_user, @conf.dbi_passwd)
18
+ dbh.transaction{
19
+ if diary.respond_to?( :date ) then
20
+ table = 'refererdata'
21
+ ymd = diary.date.strftime('%Y%m%d')
22
+ begin
23
+ sql = "SELECT diary_id, count, ref FROM " + table + " WHERE author=? AND diary_id=?;"
24
+ dbh.select_all(sql, @conf.dbi_author || 'default', ymd) {|diary_id, count, ref|
25
+ yield(ref.chomp, count.to_i)
26
+ }
27
+ rescue Errno::ENOENT
28
+ end
29
+ else
30
+ table = 'referervolatile'
31
+ ymd = nil
32
+ begin
33
+ sql = "SELECT diary_id, count, ref FROM " + table + " WHERE author=?;"
34
+ dbh.select_all(sql, @conf.dbi_author || 'default') {|diary_id, count, ref|
35
+ yield(ref.chomp, count.to_i)
36
+ ymd = diary_id
37
+ }
38
+ rescue Errno::ENOENT
39
+ end
40
+ end
41
+
42
+ if @mode =~ /^(append|replace)$/ and !diary.respond_to?( :date ) then
43
+ if !ymd or (@date.strftime( '%Y%m%d' ) > ymd) then
44
+ ymd = nil
45
+ diary.clear_referers
46
+ begin
47
+ dbh.execute("TRUNCATE TABLE " + table + ";")
48
+ rescue Errno::ENOENT
49
+ end
50
+ save = false
51
+ end
52
+ end
53
+
54
+ if save then
55
+ unless ymd then
56
+ ymd = (@date ? @date : Time::now).strftime( '%Y%m%d' )
57
+ end
58
+ no = 0
59
+ diary.each_referer(diary.count_referers) {|count,ref|
60
+ no += 1
61
+ param = [count, @conf.dbi_author, ymd, ref]
62
+ begin
63
+ sth = dbh.execute("UPDATE " + table + " SET count=? WHERE author=? AND diary_id=? AND ref=?;", *param)
64
+ if sth.rows==0
65
+ no = dbh.select_one("SELECT MAX(no) FROM " + table + " WHERE author=? AND diary_id=?", @conf.dbi_author, ymd).first.to_i + 1
66
+ param << no
67
+ dbh.execute("INSERT INTO " + table + " (count, author, diary_id, ref, no ) VALUES (?,?,?,?,?);", *param)
68
+ end
69
+ rescue DBI::ProgrammingError
70
+ $stderr.puts "invalid referer:#{ref}"
71
+ end
72
+ }
73
+ end
74
+ }
75
+ }
76
+ end
@@ -0,0 +1,42 @@
1
+ CREATE TABLE diarydata (
2
+ author TEXT NOT NULL,
3
+ diary_id VARCHAR(8) NOT NULL,
4
+ year VARCHAR(4) NOT NULL,
5
+ month VARCHAR(2) NOT NULL,
6
+ day VARCHAR(2) NOT NULL,
7
+ title TEXT NULL,
8
+ last_modified INTEGER NOT NULL,
9
+ visible BOOLEAN NOT NULL,
10
+ body TEXT NOT NULL,
11
+ style TEXT NULL,
12
+ CONSTRAINT diarydata_pkey PRIMARY KEY (author, diary_id)
13
+ );
14
+
15
+ CREATE TABLE commentdata (
16
+ author TEXT NOT NULL,
17
+ diary_id VARCHAR(8) NOT NULL,
18
+ no INTEGER NOT NULL,
19
+ name TEXT NULL,
20
+ mail TEXT NULL,
21
+ last_modified INTEGER NOT NULL,
22
+ visible BOOLEAN NOT NULL,
23
+ comment TEXT NULL,
24
+ CONSTRAINT commentdata_pkey PRIMARY KEY (author, diary_id, no)
25
+ );
26
+
27
+ CREATE TABLE refererdata (
28
+ author TEXT NOT NULL,
29
+ diary_id VARCHAR(8) NOT NULL,
30
+ no INTEGER NOT NULL,
31
+ count INTEGER NOT NULL,
32
+ ref TEXT NOT NULL,
33
+ CONSTRAINT refererdata_pkey PRIMARY KEY (author, diary_id, no)
34
+ );
35
+ CREATE TABLE referervolatile (
36
+ author TEXT NOT NULL,
37
+ diary_id VARCHAR(8) NOT NULL,
38
+ no INTEGER NOT NULL,
39
+ count INTEGER NOT NULL,
40
+ ref TEXT NOT NULL,
41
+ CONSTRAINT referervolatile_pkey PRIMARY KEY (author, diary_id, no)
42
+ );
data/js/appstore.js ADDED
@@ -0,0 +1,109 @@
1
+ /*
2
+ * appstore.js : embeded iTunes information
3
+ *
4
+ * Copyright (C) 2011 by tamoot <tamoot+tdiary@gmail.com>
5
+ * You can distribute it under GPL.
6
+ */
7
+
8
+ $( function() {
9
+
10
+ function appstore_desc(text) {
11
+ return jQuery('<span><span/>').addClass("amazon-price").text(text).append("<br>");
12
+ };
13
+
14
+ function appstore_detail(app_url, app_id, appstore_a) {
15
+ var params = {
16
+ output : 'json',
17
+ id : app_id
18
+ };
19
+
20
+ var price = "$";
21
+ if($('html').attr('lang') == 'ja-JP') {
22
+ $.extend(params, {
23
+ lang : 'ja_jp',
24
+ country : 'JP'
25
+ });
26
+ price = "\\"
27
+ };
28
+
29
+
30
+ $.ajax({
31
+ type : 'GET',
32
+ url : 'http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsLookup?',
33
+ data : params,
34
+ dataType : 'jsonp',
35
+ //
36
+ // callback on error..
37
+ //
38
+ error : function() {
39
+ var itunes_a = jQuery('<a>').attr({
40
+ target : "_blank",
41
+ href : app_url
42
+ }).addClass("amazon-detail");
43
+
44
+ $(appstore_a).prepend(itunes_a);
45
+ },
46
+ //
47
+ // append dom
48
+ //
49
+ success : function(data) {
50
+ app = data["results"][0];
51
+
52
+ if(app == null) {
53
+ appstore_a.text('Search Error: ' + app_url);
54
+ return
55
+ };
56
+ $(appstore_a).addClass("amazon-detail");
57
+
58
+ var appstore_spand = jQuery('<span></span>').addClass("amazon-detail");
59
+ $(appstore_a).append(appstore_spand);
60
+
61
+ appstore_spand.prepend(jQuery('<img />').attr({
62
+ src : app["artworkUrl100"],
63
+ width : 128,
64
+ height : 128
65
+ }).addClass("amazon-detail").addClass("left"));
66
+
67
+ var appstore_spandd = jQuery('<span></span>');
68
+ appstore_spandd.addClass("amazon-detail-desc");
69
+ appstore_spand.append(appstore_spandd);
70
+
71
+ appstore_spandd.append(jQuery('<span><span/>').addClass("amazon-title").text(app["trackCensoredName"] + " "));
72
+ appstore_spandd.append(appstore_desc(app["version"]));
73
+ appstore_spandd.append(appstore_desc(app["releaseDate"]));
74
+ appstore_spandd.append(appstore_desc(app["sellerName"]));
75
+ appstore_spandd.append(appstore_desc(price + app["price"]));
76
+ appstore_spandd.append(appstore_desc(app["supportedDevices"].join(', ')));
77
+ appstore_spand.append('<br style="clear: left;">');
78
+ }
79
+ });
80
+ };
81
+
82
+ function appstore(target) {
83
+ $('.appstore', target).each( function() {
84
+ var appstore_url = $(this).attr('href');
85
+ var appstore_id = $(this).attr('data-appstoreid')
86
+ appstore_detail(appstore_url, appstore_id, this);
87
+ });
88
+ };
89
+
90
+ // for AutoPagerize
91
+ $(window).bind('AutoPagerize_DOMNodeInserted', function(event) {
92
+ appstore(event.target);
93
+ });
94
+
95
+ // for AuthPatchWork
96
+ // NOTE: jQuery.bind() cannot handle an event that include a dot charactor.
97
+ // see http://todayspython.blogspot.com/2011/06/autopager-autopagerize.html
98
+ if(window.addEventListener) {
99
+ window.addEventListener('AutoPatchWork.DOMNodeInserted', function(event) {
100
+ appstore(event.target);
101
+ }, false);
102
+ } else if(window.attachEvent) {
103
+ window.attachEvent('onAutoPatchWork.DOMNodeInserted', function(event) {
104
+ appstore(event.target);
105
+ });
106
+ };
107
+
108
+ appstore(document);
109
+ });
data/js/datepicker.js ADDED
@@ -0,0 +1,69 @@
1
+ /*
2
+ * datepicker.js : datepicker using jQuery-UI
3
+ * http://jqueryui.com/demos/datepicker/
4
+ *
5
+ * Copyright (C) 2012 by tamoot <tamoot+tdiary@gmail.com>
6
+ * You can redistribute it and/or modify it under GPL.
7
+ */
8
+
9
+
10
+ $( function() {
11
+
12
+ function setDateText(date) {
13
+ var dates = date.split("/");
14
+ $("#year" ).val(dates[0]);
15
+ $("#month").val(dates[1]);
16
+ $("#day" ).val(dates[2]);
17
+ }
18
+
19
+ function dateTextFromField() {
20
+ var y = parseInt( $("#year" ).val() );
21
+ var m = parseInt( $("#month").val() );
22
+ var d = parseInt( $("#day" ).val() );
23
+ if( y > 0 && 13 > m && m > 0 && 32 > d && d > 0 ){
24
+ $("#datepicker-input").val(y + "/" + m + "/" + d);
25
+ }
26
+ }
27
+
28
+ var datepicker_dom = $("<span>");
29
+
30
+ var datepicker_trigger = $("<span>")
31
+ .addClass("ui-icon")
32
+ .addClass("ui-icon-calendar")
33
+ .addClass("datepicker-trigger");
34
+
35
+ var datepicker_input = $("<input>", {
36
+ id: "datepicker-input",
37
+ name: "datepicker",
38
+ style: "display: none;",
39
+ type: "text"
40
+ }
41
+ );
42
+
43
+ datepicker_dom.append(datepicker_input);
44
+ datepicker_dom.append(datepicker_trigger);
45
+ datepicker_dom.insertAfter("span.day");
46
+
47
+ $("#datepicker-input").datepicker({
48
+ onSelect: function(dateText, inst){
49
+ setDateText(dateText);
50
+ },
51
+ beforeShow: function(input ,inst){
52
+ dateTextFromField();
53
+ },
54
+ dateFormat: "yy/m/d"
55
+ });
56
+
57
+ $(".datepicker-trigger").click(function() {
58
+ $("#datepicker-input").datepicker("show");
59
+ });
60
+
61
+
62
+ var icon = $(".ui-icon-calendar");
63
+ icon.css({"display":"inline","position":"absolute","margin-top":"5px"});
64
+ icon.after($("<span></span>").css({"margin-left":"16px"}));
65
+ icon.hover(function(){
66
+ $(this).css({"cursor":"pointer"});
67
+ });
68
+ });
69
+
data/js/editor.js ADDED
@@ -0,0 +1,82 @@
1
+ /**
2
+ * editor.js - support writing using wiki/gfm notation.
3
+ *
4
+ * Copyright (C) 2012 by MATSUOKA Kohei <kmachu@gmail.com>
5
+ * You can distribute it under GPL.
6
+ */
7
+
8
+ /*
9
+ utility functions
10
+ */
11
+ $.fn.extend({
12
+ insertAtCaret2: function(beforeText, afterText){
13
+ var elem = this.get(0);
14
+ elem.focus();
15
+
16
+ if(jQuery.browser.msie){
17
+ this.insertAtCaret(beforeText + afterText);
18
+ }else{
19
+ var orig = elem.value;
20
+ var posStart = elem.selectionStart;
21
+ var posEnd = posStart + beforeText.length;
22
+ elem.value = orig.substr(0, posStart) + beforeText + afterText + orig.substr(posStart);
23
+ elem.setSelectionRange(posEnd, posEnd);
24
+ }
25
+ }
26
+ });
27
+
28
+ $(function() {
29
+ var form = $("textarea");
30
+ var targetArea = $("div.update > div.form").first();
31
+ var notations = {
32
+ wiki: {
33
+ h3: function(){ form.insertAtCaret("! ") },
34
+ h4: function(){ form.insertAtCaret("!! ") },
35
+ a: function(){ form.insertAtCaret2("", "[[|]]") },
36
+ em: function(){ form.insertAtCaret2("''", "''") },
37
+ strong: function(){ form.insertAtCaret2("'''", "'''") },
38
+ del: function(){ form.insertAtCaret2("==", "=='") },
39
+ pre: function(){ form.insertAtCaret2("\n<<<\n", "\n>>>\n") },
40
+ bq: function(){ form.insertAtCaret("\"\" ") },
41
+ ul: function(){ form.insertAtCaret("* ") },
42
+ ol: function(){ form.insertAtCaret("# ") },
43
+ table: function(){ form.insertAtCaret(
44
+ "\n||body1||body2\n||body3||body4\n") },
45
+ plugin: function(){ form.insertAtCaret2(
46
+ "", $.makePluginTag("plugin_name")) }
47
+ },
48
+
49
+ gfm: {
50
+ h3: function(){ form.insertAtCaret("# ") },
51
+ h4: function(){ form.insertAtCaret("## ") },
52
+ a: function(){ form.insertAtCaret2("", "[]()") },
53
+ em: function(){ form.insertAtCaret2("*", "*") },
54
+ strong: function(){ form.insertAtCaret2("**", "**") },
55
+ pre: function(){ form.insertAtCaret2("\n```\n", "\n```\n") },
56
+ code: function(){ form.insertAtCaret2("`", "`") },
57
+ bq: function(){ form.insertAtCaret("> ") },
58
+ ul: function(){ form.insertAtCaret("* ") },
59
+ ol: function(){ form.insertAtCaret("1. ") },
60
+ table: function(){ form.insertAtCaret(
61
+ "\nhead1|head2\n----|----\nbody1|body2\nbody3|body4\n") },
62
+ plugin: function(){ form.insertAtCaret2(
63
+ "", $.makePluginTag("plugin_name")) }
64
+ }
65
+ };
66
+
67
+ var toolbox = $("<ul></ul>");
68
+ $.each(notations[$tDiary.style], function(key, callback) {
69
+ var button = $("<button>")
70
+ .attr("type", "button")
71
+ .attr("name", key)
72
+ .css("margin", "3px")
73
+ .css("padding", "5px")
74
+ .append(key)
75
+ .click(callback);
76
+ $("<li></li>")
77
+ .css("display", "inline")
78
+ .append(button)
79
+ .appendTo(toolbox);
80
+ });
81
+ form.before(toolbox);
82
+ });