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,255 @@
1
+ #
2
+ # hb_footer.rb
3
+ #
4
+ # はてなブックマーク (http://b.hatena.ne.jp/) のコメントを該当日付に貼り付けるtDiaryプラグイン
5
+ # 改造版rss_recent Version 0.0.5i2と共に使用する
6
+ #
7
+ # Licence: GPL
8
+ # Author: ishinao <ishinao@ishinao.net>
9
+ #
10
+
11
+ add_body_leave_proc(Proc.new do |date|
12
+ if @mode == 'day' or @mode == 'latest'
13
+ diary = @diaries[date.strftime('%Y%m%d')]
14
+ pnum = 1
15
+ hbsrc = ''
16
+ diary.each_section do |para|
17
+ td_url = "http://tdiary.ishinao.net/#{date.strftime('%Y%m%d')}.html%23p#{'%02d' % pnum}"
18
+ hb_url = "http://b.hatena.ne.jp/entry/#{td_url}"
19
+ rss_url = "http://b.hatena.ne.jp/entry/rss/#{td_url}"
20
+
21
+ template_head = %Q[<div class="section">\n<h3><a href="#{CGI.escapeHTML(hb_url)}">はてなブックマークの反応</a></h3>\n<ul class="hb_footer">\n]
22
+ template_list = '<li><span class="date">#{time.strftime("%Y年%m月%d日")}</span> <span class="hatenaid"><a href="#{CGI.escapeHTML(url)}">#{CGI.escapeHTML(title)}</a></span> <span class="comment">#{CGI.escapeHTML(description.to_s)}</span></li>'
23
+ template_foot = "</ul>\n</div>\n"
24
+
25
+ cache_time = 3600;
26
+ if date.strftime('%Y-%m-%d') != Time.now.strftime('%Y-%m-%d')
27
+ cache_time = 3600 * 12;
28
+ end
29
+ hbsrc << hb_footer(rss_url, 50, cache_time, template_head, template_list, template_foot)
30
+ pnum+=1
31
+ end
32
+ hbsrc
33
+ else
34
+ ''
35
+ end
36
+ end)
37
+
38
+ # rss-recent.rb: RSS recent plugin
39
+ #
40
+ # rss_recnet: show recnet list from RSS
41
+ # parameters (default):
42
+ # url: URL of RSS
43
+ # max: max of list itmes(5)
44
+ # cache_time: cache time(second) of RSS(60*60)
45
+ # template_head: rendering header part
46
+ # template_list: rendering RSS item part(with loop)
47
+ # template_foot: rendering footer part
48
+ #
49
+ # Copyright (c) 2003-2004 Kouhei Sutou <kou@cozmixng.org>
50
+ # Distributed under the GPL
51
+ #
52
+ # Modified using template string and content:encoded
53
+ # Version 0.0.5i2 by ishinao <ishinao@ishinao.net>
54
+ #
55
+
56
+ require "rss/rss"
57
+
58
+ RSS_RECENT_FIELD_SEPARATOR = "\0"
59
+ RSS_RECENT_ENTRY_SEPARATOR = "\1"
60
+ RSS_RECENT_VERSION = "0.0.5i2"
61
+ RSS_RECENT_HTTP_HEADER = {
62
+ "User-Agent" => "tDiary RSS recent plugin version #{RSS_RECENT_VERSION}. " <<
63
+ "Using RSS parser version is #{::RSS::VERSION}.",
64
+ }
65
+
66
+ def hb_footer(url, max = 5, cache_time = 3600, \
67
+ template_head = "<ul>\n", \
68
+ template_list = '<li><span class="#{hb_footer_modified_class(time)}"><a href="#{CGI.escapeHTML(url)}" title="#{CGI.escapeHTML(title)}">#{CGI::escapeHTML(title)}</a></span></li>\n', \
69
+ template_foot = "</ul>\n")
70
+ url.untaint
71
+
72
+ cache_file = "#{@cache_path}/rss-recent.#{CGI.escape(url)}"
73
+
74
+ hb_footer_cache_rss(url, cache_file, cache_time.to_i)
75
+
76
+ return '' unless test(?r, cache_file)
77
+
78
+ rv = template_head
79
+
80
+ i = 0
81
+ hb_footer_read_from_cache(cache_file).each do |title, url, time, content, description|
82
+ break if i >= max
83
+ next if (url.nil? or title.nil?)
84
+ rv << eval('%Q[' + template_list + ']')
85
+ i += 1
86
+ end
87
+
88
+ rv << template_foot
89
+
90
+ if i > 0
91
+ rv
92
+ else
93
+ ''
94
+ end
95
+ end
96
+
97
+ class InvalidResourceError < StandardError; end
98
+
99
+ def hb_footer_cache_rss(url, cache_file, cache_time)
100
+
101
+ cached_time = nil
102
+ cached_time = File.mtime(cache_file) if File.exist?(cache_file)
103
+
104
+ if cached_time.nil? or Time.now > cached_time + cache_time
105
+ require 'time'
106
+ require 'open-uri'
107
+ require 'net/http'
108
+ require 'uri/generic'
109
+ require 'rss/parser'
110
+ require 'rss/1.0'
111
+ require 'rss/2.0'
112
+ require 'rss/dublincore'
113
+ require 'rss/content'
114
+
115
+ begin
116
+ uri = URI.parse(url)
117
+
118
+ raise URI::InvalidURIError if uri.scheme != "http"
119
+
120
+ rss_source = hb_footer_fetch_rss(uri, cached_time)
121
+
122
+ raise InvalidResourceError if rss_source.nil?
123
+
124
+ # parse RSS
125
+ rss = ::RSS::Parser.parse(rss_source, false)
126
+ raise ::RSS::Error if rss.nil?
127
+
128
+ # pre processing
129
+ begin
130
+ rss.output_encoding = @conf.charset || charset
131
+ rescue ::RSS::UnknownConversionMethodError
132
+ end
133
+
134
+ rss_infos = rss.items.collect do |item|
135
+ hb_footer_pubDate_to_dc_date(item)
136
+ [item.title, item.link, item.dc_date, item.content_encoded, item.description]
137
+ end
138
+ hb_footer_write_to_cache(cache_file, rss_infos)
139
+
140
+ rescue URI::InvalidURIError
141
+ hb_footer_write_to_cache(cache_file, [['Invalid URI', url]])
142
+ rescue InvalidResourceError, ::RSS::Error
143
+ # hb_footer_write_to_cache(cache_file, [['Invalid Resource', url]])
144
+ # when cannot get valid RSS, use old cache
145
+ end
146
+ end
147
+
148
+ end
149
+
150
+ def hb_footer_fetch_rss(uri, cache_time)
151
+ rss = nil
152
+ begin
153
+ uri.open(hb_footer_http_header(cache_time)) do |f|
154
+ case f.status.first
155
+ when "200"
156
+ rss = f.read
157
+ # STDERR.puts "Got RSS of #{uri}"
158
+ when "304"
159
+ # not modified
160
+ # STDERR.puts "#{uri} does not modified"
161
+ else
162
+ raise InvalidResourceError
163
+ end
164
+ end
165
+ rescue TimeoutError, SocketError, StandardError,
166
+ SecurityError # occured in redirect
167
+ raise InvalidResourceError
168
+ end
169
+ rss
170
+ end
171
+
172
+ def hb_footer_http_header(cache_time)
173
+ header = RSS_RECENT_HTTP_HEADER.dup
174
+ if cache_time.respond_to?(:rfc2822)
175
+ header["If-Modified-Since"] = cache_time.rfc2822
176
+ end
177
+ header
178
+ end
179
+
180
+ def hb_footer_write_to_cache(cache_file, rss_infos)
181
+ File.open(cache_file, 'w') do |f|
182
+ f.flock(File::LOCK_EX)
183
+ rss_infos.each do |info|
184
+ f << info.join(RSS_RECENT_FIELD_SEPARATOR)
185
+ f << RSS_RECENT_ENTRY_SEPARATOR
186
+ end
187
+ f.flock(File::LOCK_UN)
188
+ end
189
+ end
190
+
191
+ def hb_footer_read_from_cache(cache_file)
192
+ require 'time'
193
+ infos = []
194
+ File.open(cache_file) do |f|
195
+ while info = f.gets(RSS_RECENT_ENTRY_SEPARATOR)
196
+ info = info.chomp(RSS_RECENT_ENTRY_SEPARATOR)
197
+ infos << info.split(RSS_RECENT_FIELD_SEPARATOR)
198
+ end
199
+ end
200
+ infos.collect do |title, url, time, content, description|
201
+ [
202
+ hb_footer_convert(title),
203
+ hb_footer_convert(url),
204
+ hb_footer_convert(time) {|time| Time.parse(time)},
205
+ hb_footer_convert(content),
206
+ hb_footer_convert(description),
207
+ ]
208
+ end
209
+ end
210
+
211
+ def hb_footer_convert(str)
212
+ if str.nil? or str.empty?
213
+ nil
214
+ else
215
+ if block_given?
216
+ yield str
217
+ else
218
+ str
219
+ end
220
+ end
221
+ end
222
+
223
+ # from RWiki
224
+ def hb_footer_modified(t)
225
+ return '-' unless t
226
+ dif = (Time.now - t).to_i
227
+ dif = dif / 60
228
+ return "#{dif}m" if dif <= 60
229
+ dif = dif / 60
230
+ return "#{dif}h" if dif <= 24
231
+ dif = dif / 24
232
+ return "#{dif}d"
233
+ end
234
+
235
+ # from RWiki
236
+ def hb_footer_modified_class(t)
237
+ return 'dangling' unless t
238
+ dif = (Time.now - t).to_i
239
+ dif = dif / 60
240
+ return "modified-hour" if dif <= 60
241
+ dif = dif / 60
242
+ return "modified-today" if dif <= 24
243
+ dif = dif / 24
244
+ return "modified-month" if dif <= 30
245
+ return "modified-year" if dif <= 365
246
+ return "modified-old"
247
+ end
248
+
249
+ def hb_footer_pubDate_to_dc_date(target)
250
+ if target.respond_to?(:pubDate)
251
+ class << target
252
+ alias_method(:dc_date, :pubDate)
253
+ end
254
+ end
255
+ end
@@ -0,0 +1,244 @@
1
+ #
2
+ # hb_footer.rb
3
+ #
4
+ # はてなブックマーク (http://b.hatena.ne.jp/) のコメントを該当セクションに貼り付けるtDiaryプラグイン
5
+ # 改造版rss_recent Version 0.0.5i2と共に使用する
6
+ #
7
+ # Licence: GPL
8
+ # Author: ishinao <ishinao@ishinao.net>
9
+ #
10
+
11
+ add_section_leave_proc do |date, index|
12
+ td_url = "http://tdiary.ishinao.net/#{date.strftime('%Y%m%d')}.html%23p#{'%02d' % index}"
13
+ hb_url = "http://b.hatena.ne.jp/entry/#{td_url}"
14
+ rss_url = "http://b.hatena.ne.jp/entry/rss/#{td_url}"
15
+
16
+ template_head = %Q[<div class="section">\n<h4>このセクションに対する<a href="#{CGI.escapeHTML(hb_url)}">はてブ</a></h4>\n<ul class="hb_footer">\n]
17
+ template_list = '<li><span class="date">#{time.strftime("%Y年%m月%d日")}</span> <span class="hatenaid"><a href="#{CGI.escapeHTML(url)}">#{CGI.escapeHTML(title)}</a></span> <span class="comment">#{CGI.escapeHTML(description.to_s)}</span></li>'
18
+ template_foot = "</ul>\n</div>\n"
19
+
20
+ cache_time = 3600;
21
+ if date.strftime('%Y-%m-%d') != Time.now.strftime('%Y-%m-%d')
22
+ cache_time = 3600 * 12;
23
+ end
24
+ hb_footer4sec(rss_url, 50, cache_time, template_head, template_list, template_foot)
25
+ end
26
+
27
+ # rss-recent.rb: RSS recent plugin
28
+ #
29
+ # rss_recnet: show recnet list from RSS
30
+ # parameters (default):
31
+ # url: URL of RSS
32
+ # max: max of list itmes(5)
33
+ # cache_time: cache time(second) of RSS(60*60)
34
+ # template_head: rendering header part
35
+ # template_list: rendering RSS item part(with loop)
36
+ # template_foot: rendering footer part
37
+ #
38
+ # Copyright (c) 2003-2004 Kouhei Sutou <kou@cozmixng.org>
39
+ # Distributed under the GPL
40
+ #
41
+ # Modified using template string and content:encoded
42
+ # Version 0.0.5i2 by ishinao <ishinao@ishinao.net>
43
+ #
44
+
45
+ require "rss/rss"
46
+
47
+ RSS_RECENT_FIELD_SEPARATOR = "\0"
48
+ RSS_RECENT_ENTRY_SEPARATOR = "\1"
49
+ RSS_RECENT_VERSION = "0.0.5i2"
50
+ RSS_RECENT_HTTP_HEADER = {
51
+ "User-Agent" => "tDiary RSS recent plugin version #{RSS_RECENT_VERSION}. " <<
52
+ "Using RSS parser version is #{::RSS::VERSION}.",
53
+ }
54
+
55
+ def hb_footer4sec(url, max = 5, cache_time = 3600, \
56
+ template_head = "<ul>\n", \
57
+ template_list = '<li><span class="#{hb_footer4sec_modified_class(time)}"><a href="#{CGI.escapeHTML(url)}" title="#{CGI.escapeHTML(title)}">#{CGI::escapeHTML(title)}</a></span></li>\n', \
58
+ template_foot = "</ul>\n")
59
+ url.untaint
60
+
61
+ cache_file = "#{@cache_path}/rss-recent.#{CGI.escape(url)}"
62
+
63
+ hb_footer4sec_cache_rss(url, cache_file, cache_time.to_i)
64
+
65
+ return '' unless test(?r, cache_file)
66
+
67
+ rv = template_head
68
+
69
+ i = 0
70
+ hb_footer4sec_read_from_cache(cache_file).each do |title, url, time, content, description|
71
+ break if i >= max
72
+ next if (url.nil? or title.nil?)
73
+ rv << eval('%Q[' + template_list + ']')
74
+ i += 1
75
+ end
76
+
77
+ rv << template_foot
78
+
79
+ if i > 0
80
+ rv
81
+ else
82
+ ''
83
+ end
84
+ end
85
+
86
+ class InvalidResourceError < StandardError; end
87
+
88
+ def hb_footer4sec_cache_rss(url, cache_file, cache_time)
89
+
90
+ cached_time = nil
91
+ cached_time = File.mtime(cache_file) if File.exist?(cache_file)
92
+
93
+ if cached_time.nil? or Time.now > cached_time + cache_time
94
+ require 'time'
95
+ require 'open-uri'
96
+ require 'net/http'
97
+ require 'uri/generic'
98
+ require 'rss/parser'
99
+ require 'rss/1.0'
100
+ require 'rss/2.0'
101
+ require 'rss/dublincore'
102
+ require 'rss/content'
103
+
104
+ begin
105
+ uri = URI.parse(url)
106
+
107
+ raise URI::InvalidURIError if uri.scheme != "http"
108
+
109
+ rss_source = hb_footer4sec_fetch_rss(uri, cached_time)
110
+
111
+ raise InvalidResourceError if rss_source.nil?
112
+
113
+ # parse RSS
114
+ rss = ::RSS::Parser.parse(rss_source, false)
115
+ raise ::RSS::Error if rss.nil?
116
+
117
+ # pre processing
118
+ begin
119
+ rss.output_encoding = @conf.charset || charset
120
+ rescue ::RSS::UnknownConversionMethodError
121
+ end
122
+
123
+ rss_infos = rss.items.collect do |item|
124
+ hb_footer4sec_pubDate_to_dc_date(item)
125
+ [item.title, item.link, item.dc_date, item.content_encoded, item.description]
126
+ end
127
+ hb_footer4sec_write_to_cache(cache_file, rss_infos)
128
+
129
+ rescue URI::InvalidURIError
130
+ hb_footer4sec_write_to_cache(cache_file, [['Invalid URI', url]])
131
+ rescue InvalidResourceError, ::RSS::Error
132
+ # hb_footer4sec_write_to_cache(cache_file, [['Invalid Resource', url]])
133
+ # when cannot get valid RSS, use old cache
134
+ end
135
+ end
136
+
137
+ end
138
+
139
+ def hb_footer4sec_fetch_rss(uri, cache_time)
140
+ rss = nil
141
+ begin
142
+ uri.open(hb_footer4sec_http_header(cache_time)) do |f|
143
+ case f.status.first
144
+ when "200"
145
+ rss = f.read
146
+ # STDERR.puts "Got RSS of #{uri}"
147
+ when "304"
148
+ # not modified
149
+ # STDERR.puts "#{uri} does not modified"
150
+ else
151
+ raise InvalidResourceError
152
+ end
153
+ end
154
+ rescue TimeoutError, SocketError, StandardError,
155
+ SecurityError # occured in redirect
156
+ raise InvalidResourceError
157
+ end
158
+ rss
159
+ end
160
+
161
+ def hb_footer4sec_http_header(cache_time)
162
+ header = RSS_RECENT_HTTP_HEADER.dup
163
+ if cache_time.respond_to?(:rfc2822)
164
+ header["If-Modified-Since"] = cache_time.rfc2822
165
+ end
166
+ header
167
+ end
168
+
169
+ def hb_footer4sec_write_to_cache(cache_file, rss_infos)
170
+ File.open(cache_file, 'w') do |f|
171
+ f.flock(File::LOCK_EX)
172
+ rss_infos.each do |info|
173
+ f << info.join(RSS_RECENT_FIELD_SEPARATOR)
174
+ f << RSS_RECENT_ENTRY_SEPARATOR
175
+ end
176
+ f.flock(File::LOCK_UN)
177
+ end
178
+ end
179
+
180
+ def hb_footer4sec_read_from_cache(cache_file)
181
+ require 'time'
182
+ infos = []
183
+ File.open(cache_file) do |f|
184
+ while info = f.gets(RSS_RECENT_ENTRY_SEPARATOR)
185
+ info = info.chomp(RSS_RECENT_ENTRY_SEPARATOR)
186
+ infos << info.split(RSS_RECENT_FIELD_SEPARATOR)
187
+ end
188
+ end
189
+ infos.collect do |title, url, time, content, description|
190
+ [
191
+ hb_footer4sec_convert(title),
192
+ hb_footer4sec_convert(url),
193
+ hb_footer4sec_convert(time) {|time| Time.parse(time)},
194
+ hb_footer4sec_convert(content),
195
+ hb_footer4sec_convert(description),
196
+ ]
197
+ end
198
+ end
199
+
200
+ def hb_footer4sec_convert(str)
201
+ if str.nil? or str.empty?
202
+ nil
203
+ else
204
+ if block_given?
205
+ yield str
206
+ else
207
+ str
208
+ end
209
+ end
210
+ end
211
+
212
+ # from RWiki
213
+ def hb_footer4sec_modified(t)
214
+ return '-' unless t
215
+ dif = (Time.now - t).to_i
216
+ dif = dif / 60
217
+ return "#{dif}m" if dif <= 60
218
+ dif = dif / 60
219
+ return "#{dif}h" if dif <= 24
220
+ dif = dif / 24
221
+ return "#{dif}d"
222
+ end
223
+
224
+ # from RWiki
225
+ def hb_footer4sec_modified_class(t)
226
+ return 'dangling' unless t
227
+ dif = (Time.now - t).to_i
228
+ dif = dif / 60
229
+ return "modified-hour" if dif <= 60
230
+ dif = dif / 60
231
+ return "modified-today" if dif <= 24
232
+ dif = dif / 24
233
+ return "modified-month" if dif <= 30
234
+ return "modified-year" if dif <= 365
235
+ return "modified-old"
236
+ end
237
+
238
+ def hb_footer4sec_pubDate_to_dc_date(target)
239
+ if target.respond_to?(:pubDate)
240
+ class << target
241
+ alias_method(:dc_date, :pubDate)
242
+ end
243
+ end
244
+ end
@@ -0,0 +1,30 @@
1
+ # hb_footer4sec_js.rb $Revision 1.0 $
2
+ #
3
+ # Copyright (c) 2008 SHIBATA Hiroshi <h-sbt@nifty.com>
4
+ # You can redistribute it and/or modify it under GPL2.
5
+ #
6
+
7
+ def permalink( date, index, escape = true )
8
+ ymd = date.strftime( "%Y%m%d" )
9
+ uri = @conf.index.dup
10
+ uri.sub!( %r|\A(?!https?://)|i, @conf.base_url )
11
+ uri.gsub!( %r|/\.(?=/)|, "" ) # /././ -> /
12
+ link = uri + anchor( "#{ymd}p%02d" % index )
13
+ link.sub!( "#", "%23" ) if escape
14
+ link
15
+ end
16
+
17
+ add_section_leave_proc do |date, index|
18
+ if @mode == 'day' and not bot? and not @conf.mobile_agent? then
19
+ <<-SCRIPT
20
+ <script type= "text/javascript"><!--
21
+ var hatena_bookmark_anywhere_limit = 10;
22
+ var hatena_bookmark_anywhere_style = true;
23
+ var hatena_bookmark_anywhere_collapse = true;
24
+ var hatena_bookmark_anywhere_url = "#{permalink(date, index)}";
25
+ //--></script>
26
+ <script src="#{@conf.base_url}hatena-bookmark-anywhere.js" type="text/javascript" charset="utf-8"></script>
27
+ <div id="hatena_bookmark_anywhere"></div>
28
+ SCRIPT
29
+ end
30
+ end
@@ -0,0 +1,4 @@
1
+ def hide_comment_form
2
+ @conf.hide_comment_form = true
3
+ return ''
4
+ end
@@ -0,0 +1,21 @@
1
+ # hide_sidebar_iphone.rb
2
+ #
3
+ # Copyright (C) 2008 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
4
+ # You can redistribute it and/or modify it under GPL2.
5
+ #
6
+
7
+ add_header_proc do
8
+ if @conf.iphone? then
9
+ <<-CSS
10
+ <style type="text/css"><!--
11
+ div.sidebar {
12
+ display: none;
13
+ }
14
+ div.main {
15
+ width: 100%;
16
+ float: none;
17
+ }
18
+ --></style>
19
+ CSS
20
+ end
21
+ end
data/plugin/iddy.rb ADDED
@@ -0,0 +1,81 @@
1
+ #
2
+ # iddy.rb: iddy.jp plugin for tDiary
3
+ #
4
+ # Copyright (C) 2007 by TADA Tadashi <sho@spc.gr.jp>
5
+ # Distributed under GPL.
6
+ #
7
+
8
+ ######################################################################
9
+ # If you will modify or release another version of this code,
10
+ # please get your own application key from iddy.jp and replace below.
11
+ ######################################################################
12
+ @iddy_key = 'f93d2f38442fae3a1f08e82f84d335112cca0855'
13
+
14
+ require 'open-uri'
15
+ require 'timeout'
16
+ require 'rexml/document'
17
+
18
+ def iddy( id )
19
+ begin
20
+ cache = "#{@cache_path}/iddy.xml"
21
+ xml = open( cache ) {|f| f.read }
22
+ if Time::now > File::mtime( cache ) + 60*60 then
23
+ File::delete( cache ) # clear cache 1 hour later
24
+ end
25
+ rescue Errno::ENOENT
26
+ begin
27
+ xml = iddy_call_api( id, @iddy_key )
28
+ open( cache, 'wb' ) {|f| f.write( xml ) }
29
+ rescue Timeout::Error
30
+ return '<div class="iddy error">No data.</div>'
31
+ end
32
+ end
33
+
34
+ doc = REXML::Document::new( xml )
35
+ if doc.elements[1].attribute( 'status' ).to_s == 'fail' then
36
+ return '<div class="iddy error">iddy.jp returns fail.</div>'
37
+ end
38
+
39
+ user = doc.elements.to_a( '*/*/user' )[0].elements
40
+ profileurl = user.to_a( 'profileurl' )[0]
41
+ unless profileurl then
42
+ return '<div class="iddy error">No profile URL on iddy.jp.</div>'
43
+ end
44
+
45
+ imageurl = user.to_a( 'imageurl' )[0]
46
+ name = user.to_a( 'name' )[0]
47
+ nameroma = user.to_a( 'nameroma' )[0]
48
+ mail = user.to_a( 'mail' )[0]
49
+ submail = user.to_a( 'submail' )[0]
50
+
51
+ html = '<div class="iddy">'
52
+ html << %Q|<a href="#{profileurl.text}">|
53
+ html << %Q|<span class="iddy-image"><img src="#{imageurl.text}" alt="image" width="96" height="96"></span>| if imageurl
54
+ if name then
55
+ html << %Q|<span class="iddy-name">#{name.text}</span>|
56
+ elsif nameroma
57
+ html << %Q|<span class="iddy-name">#{nameroma.text}</span>|
58
+ else
59
+ html << %Q|<span class="iddy-name">#{id}</span>|
60
+ end
61
+ if submail then
62
+ html << %Q|<span class="iddy-mail">#{submail}</span>|
63
+ elsif mail
64
+ html << %Q|<span class="iddy-mail">#{mail}</span>|
65
+ end
66
+ html << '</a>'
67
+ html << %Q|<span class="iddy-powered">Powerd by <a href="http://iddy.jp/">iddy.jp</a></span>|
68
+ html << '</div>'
69
+ @conf.to_native( html )
70
+ end
71
+
72
+ def iddy_call_api( id, key )
73
+ request = "http://iddy.jp/api/user/?apikey=#{key}"
74
+ request << "&accountname=#{id}"
75
+
76
+ proxy = @conf['proxy']
77
+ proxy = 'http://' + proxy if proxy
78
+ timeout( 3 ) do
79
+ open( request, :proxy => proxy ) {|f| f.read }
80
+ end
81
+ end