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,326 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Copyright (C) 2005 Kazuhiko <kazuhiko@fdiary.net>
4
+ # You can redistribute it and/or modify it under GPL2.
5
+ #
6
+
7
+ mode = ""
8
+ if $0 == __FILE__
9
+ require 'cgi'
10
+ ARGV << '' # dummy argument against cgi.rb offline mode.
11
+ @cgi = CGI::new
12
+ mode = "CMD"
13
+ else
14
+ mode = "PLUGIN"
15
+ end
16
+
17
+ if mode == "CMD"
18
+ tdiary_path = "."
19
+ tdiary_conf = "."
20
+ $stdout.sync = true
21
+
22
+ def usage
23
+ puts "rast-register.rb $Revision: 1.10.2.2 $"
24
+ puts " register to rast index files from tDiary's database."
25
+ puts " usage: ruby rast-regiser.rb [-p <tDiary directory>] [-c <tdiary.conf directory>]"
26
+ exit
27
+ end
28
+
29
+ require 'getoptlong'
30
+ parser = GetoptLong::new
31
+ parser.set_options(['--path', '-p', GetoptLong::REQUIRED_ARGUMENT], ['--conf', '-c', GetoptLong::REQUIRED_ARGUMENT])
32
+ begin
33
+ parser.each do |opt, arg|
34
+ case opt
35
+ when '--path'
36
+ tdiary_path = arg
37
+ when '--conf'
38
+ tdiary_conf = arg
39
+ end
40
+ end
41
+ rescue
42
+ usage
43
+ exit( 1 )
44
+ end
45
+
46
+ tdiary_conf = tdiary_path unless tdiary_conf
47
+ Dir::chdir( tdiary_conf )
48
+
49
+ begin
50
+ $:.unshift tdiary_path
51
+ require "#{tdiary_path}/tdiary"
52
+ rescue LoadError
53
+ $stderr.puts "rast-register.rb: cannot load tdiary.rb. <#{tdiary_path}/tdiary>\n"
54
+ $stderr.puts " usage: ruby rast-regiser.rb [-p <tDiary directory>] [-c <tdiary.conf directory>]"
55
+ exit( 1 )
56
+ end
57
+ end
58
+
59
+ require 'rast'
60
+
61
+ module ::TDiary
62
+ #
63
+ # Database
64
+ #
65
+ class RastDB
66
+ DB_OPTIONS = {
67
+ "preserve_text" => true,
68
+ "properties" => [
69
+ {
70
+ "name" => "title",
71
+ "type" => Rast::PROPERTY_TYPE_STRING,
72
+ "search" => false,
73
+ "text_search" => true,
74
+ "full_text_search" => true,
75
+ "unique" => false,
76
+ },
77
+ {
78
+ "name" => "user",
79
+ "type" => Rast::PROPERTY_TYPE_STRING,
80
+ "search" => true,
81
+ "text_search" => false,
82
+ "full_text_search" => false,
83
+ "unique" => false,
84
+ },
85
+ {
86
+ "name" => "date",
87
+ "type" => Rast::PROPERTY_TYPE_STRING,
88
+ "search" => true,
89
+ "text_search" => true,
90
+ "full_text_search" => false,
91
+ "unique" => false,
92
+ },
93
+ {
94
+ "name" => "last_modified",
95
+ "type" => Rast::PROPERTY_TYPE_DATE,
96
+ "search" => true,
97
+ "text_search" => false,
98
+ "full_text_search" => false,
99
+ "unique" => false,
100
+ }
101
+ ]
102
+ }
103
+
104
+ attr_accessor :db
105
+ attr_reader :conf, :encoding
106
+
107
+ def initialize(conf, encoding)
108
+ @conf = conf
109
+ @encoding = encoding
110
+ @db_options = {'encoding' => @encoding}.update(DB_OPTIONS)
111
+ @db_options['properties'].delete_if{|i| i['name'] == 'user'} unless @conf['rast.with_user_name']
112
+ end
113
+
114
+ def transaction
115
+ if !File.exist?(db_path)
116
+ Rast::DB.create(db_path, @db_options)
117
+ end
118
+ Rast::DB.open(db_path, Rast::DB::RDWR, "sync_threshold_chars" => 500000) { |@db|
119
+ yield self
120
+ }
121
+ end
122
+
123
+ def cache_path
124
+ @conf.cache_path || "#{@conf.data_path}cache"
125
+ end
126
+
127
+ def db_path
128
+ @conf['rast.db_path'] || "#{cache_path}/rast".untaint
129
+ end
130
+ end
131
+
132
+ #
133
+ # Register
134
+ #
135
+ class RastRegister < TDiaryBase
136
+ def initialize(rast_db, diary)
137
+ @db = rast_db.db
138
+ super(CGI::new, 'day.rhtml', rast_db.conf)
139
+ @diary = diary
140
+ @encoding = rast_db.encoding
141
+ @date = diary.date
142
+ @diaries = {@date.strftime('%Y%m%d') => @diary} if @diaries.empty?
143
+ @plugin = ::TDiary::Plugin::new(
144
+ 'conf' => @conf,
145
+ 'cgi' => @cgi,
146
+ 'cache_path' => @io.cache_path,
147
+ 'diaries' => @diaries
148
+ )
149
+ def @plugin.apply_plugin_alt( str, remove_tag = false )
150
+ apply_plugin( str, remove_tag )
151
+ end
152
+ end
153
+
154
+ def execute(force = false)
155
+ date = @date.strftime('%Y%m%d')
156
+ last_modified = @diary.last_modified.strftime("%FT%T")
157
+ options = {"properties" => ['last_modified']}
158
+ if @conf['rast.with_user_name']
159
+ result = @db.search("date : #{date} & user = #{@conf.user_name}", options)
160
+ else
161
+ result = @db.search("date : #{date}", options)
162
+ end
163
+ for item in result.items
164
+ if force || item.properties[0] < last_modified
165
+ @db.delete(item.doc_id)
166
+ else
167
+ return
168
+ end
169
+ end
170
+ return unless @diary.visible?
171
+
172
+ # body
173
+ index = 0
174
+ anchor = ''
175
+ @diary.each_section do |section|
176
+ index += 1
177
+ @conf['apply_plugin'] = true
178
+ anchor = "#{date}p%02d" % index
179
+ title = CGI.unescapeHTML( @plugin.apply_plugin_alt( section.subtitle_to_html, true ).strip )
180
+ if title.empty?
181
+ title = @plugin.apply_plugin_alt( section.body_to_html, true ).strip
182
+ title = @conf.shorten( CGI.unescapeHTML( title ), 20 )
183
+ end
184
+ body = CGI.unescapeHTML( @plugin.apply_plugin_alt( section.body_to_html, true ).strip )
185
+ properties = {
186
+ "title" => title,
187
+ "date" => anchor,
188
+ "last_modified" => last_modified,
189
+ }
190
+ properties["user"] = @conf.user_name if @conf['rast.with_user_name']
191
+ @db.register(body, properties)
192
+ end
193
+
194
+ # comment
195
+ @diary.each_visible_comment( 100 ) do |comment, index|
196
+ if /^(TrackBack|Pingback)$/i =~ comment.name
197
+ anchor = "#{date}t%02d" % index
198
+ title = "TrackBack (#{comment.name})"
199
+ else
200
+
201
+
202
+ anchor = "#{date}c%02d" % index
203
+ title = "#{@plugin.comment_description_short} (#{comment.name})"
204
+ end
205
+ body = comment.body
206
+ properties = {
207
+ "title" => title,
208
+ "date" => anchor,
209
+ "last_modified" => comment.date.strftime("%FT%T"),
210
+ }
211
+ properties["user"] = @conf.user_name if @conf['rast.with_user_name']
212
+ @db.register(body, properties)
213
+ end
214
+ end
215
+
216
+ protected
217
+
218
+ def mode; 'day'; end
219
+ def cookie_name; ''; end
220
+ def cookie_mail; ''; end
221
+
222
+ def convert(str)
223
+ str
224
+ end
225
+ end
226
+
227
+ #
228
+ # Main
229
+ #
230
+ class RastRegisterMain < TDiaryBase
231
+ def initialize(conf)
232
+ super(CGI::new, 'day.rhtml', conf)
233
+ end
234
+
235
+ def execute(encoding, out = $stdout)
236
+ require 'fileutils'
237
+ calendar
238
+ db = RastDB.new(conf, encoding)
239
+ FileUtils.rm_rf(db.db_path)
240
+ db.transaction do |rast_db|
241
+ @years.keys.sort.each do |year|
242
+ out << "(#{year.to_s}/) "
243
+ @years[year.to_s].sort.each do |month|
244
+ @io.transaction(Time::local(year.to_i, month.to_i)) do |diaries|
245
+ diaries.sort.each do |day, diary|
246
+ RastRegister.new(rast_db, diary).execute
247
+ out << diary.date.strftime('%m%d ')
248
+ end
249
+ false
250
+ end
251
+ end
252
+ end
253
+ end
254
+ end
255
+ end
256
+ end
257
+
258
+ if mode == "CMD"
259
+ begin
260
+ require 'cgi'
261
+ if TDiary::Config.instance_method(:initialize).arity != 0
262
+ # for tDiary 2.1 or later
263
+ cgi = CGI.new
264
+ conf = TDiary::Config::new(cgi)
265
+ else
266
+ # for tDiary 2.0 or earlier
267
+ conf = TDiary::Config::new
268
+ end
269
+ conf.header = ''
270
+ conf.footer = ''
271
+ conf.show_comment = true
272
+ conf.hide_comment_form = true
273
+ conf.show_nyear = false
274
+ def conf.bot?; true; end
275
+ encoding = 'utf8'
276
+ TDiary::RastRegisterMain.new(conf).execute(encoding)
277
+ rescue
278
+ print $!, "\n"
279
+ $@.each do |v|
280
+ print v, "\n"
281
+ end
282
+ exit( 1 )
283
+ end
284
+
285
+ puts
286
+ else
287
+ add_update_proc do
288
+ conf = @conf.clone
289
+ conf.header = ''
290
+ conf.footer = ''
291
+ conf.show_comment = true
292
+ conf.hide_comment_form = true
293
+ conf.show_nyear = false
294
+ def conf.bot?; true; end
295
+
296
+ diary = @diaries[@date.strftime('%Y%m%d')]
297
+ encoding = 'utf8'
298
+ TDiary::RastDB.new(conf, encoding).transaction do |rast_db|
299
+ TDiary::RastRegister.new(rast_db, diary).execute(true)
300
+ end
301
+ end
302
+
303
+ if !@conf['rast_register.hideconf'] && (@mode == 'conf' || @mode == 'saveconf')
304
+ args = ['rast_register', @rast_register_conf_label]
305
+ args << 'update' if TDIARY_VERSION > '2.1.3'
306
+ add_conf_proc(*args) do
307
+ str = <<-HTML
308
+ <h3 class="subtitle">#{@rast_register_conf_header}</h3>
309
+ <p>
310
+ <label for="rast_register_rebuild"><input id="rast_register_rebuild" type="checkbox" name="rast_register_rebuild" value="1">
311
+ #{@rast_register_conf_description}</label>
312
+ </p>
313
+ HTML
314
+ if @mode == 'saveconf'
315
+ if @cgi.valid?( 'rast_register_rebuild' )
316
+ encoding = 'utf8'
317
+ str << '<p>The following diaries were registered.</p>'
318
+ out = ''
319
+ TDiary::RastRegisterMain.new(@conf).execute(encoding, out)
320
+ str << "<p>#{out}</p>"
321
+ end
322
+ end
323
+ str
324
+ end
325
+ end
326
+ end
@@ -0,0 +1,249 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ # rast-search.rb $Revision: 1.6.2.2 $
4
+ #
5
+ # Copyright (C) 2005 Kazuhiko <kazuhiko@fdiary.net>
6
+ # You can redistribute it and/or modify it under GPL2.
7
+ #
8
+ $KCODE= 'u'
9
+ BEGIN { $stdout.binmode }
10
+
11
+ if FileTest::symlink?( __FILE__ ) then
12
+ org_path = File::dirname( File::readlink( __FILE__ ) )
13
+ else
14
+ org_path = File::dirname( __FILE__ )
15
+ end
16
+ $:.unshift( org_path.untaint )
17
+ require 'tdiary'
18
+ require 'rast'
19
+
20
+ #
21
+ # class TDiaryRast
22
+ #
23
+ module TDiary
24
+ class TDiaryRast < ::TDiary::TDiaryBase
25
+ MAX_PAGES = 20
26
+ SORT_OPTIONS = [
27
+ ["score", "スコア順"],
28
+ ["date", "日付順"],
29
+ ]
30
+ SORT_PROPERTIES = ["date"]
31
+ ORDER_OPTIONS = [
32
+ ["asc", "昇順"],
33
+ ["desc", "降順"],
34
+ ]
35
+ NUM_OPTIONS = [10, 20, 30, 50, 100]
36
+
37
+ def initialize( cgi, rhtml, conf )
38
+ super
39
+ @db_path = conf.options['rast.db_path'] || "#{cache_path}/rast"
40
+ @encoding = 'utf8'
41
+ # conf.options['sp.selected'] = ''
42
+ parse_args
43
+ format_form
44
+ if @query.empty?
45
+ @msg = '検索条件を入力して、「検索」ボタンを押してください'
46
+ else
47
+ search
48
+ end
49
+ end
50
+
51
+ def load_plugins
52
+ super
53
+ # add a opensearch rss link
54
+ @plugin.instance_variable_get('@header_procs').unshift Proc.new {
55
+ cgi_url = @conf.base_url.sub(%r|/[^/]*$|, '/') + (@cgi.script_name ? _(File.basename(@cgi.script_name)) : '')
56
+ %Q|\t<link rel="alternate" type="application/rss+xml" title="Search Result RSS" href="#{cgi_url}#{format_anchor(@start, @num)};type=rss">\n|
57
+ }
58
+ # override some plugins
59
+ def @plugin.sn(number = nil); ''; end
60
+ end
61
+
62
+ def eval_rxml
63
+ require 'time'
64
+ load_plugins
65
+ ERB::new( File::open( "#{PATH}/skel/rast.rxml" ){|f| f.read }.untaint ).result( binding )
66
+ end
67
+
68
+ private
69
+
70
+ def parse_args
71
+ @query = @cgi["query"].strip
72
+ @start = @cgi["start"].to_i
73
+ @num = @cgi["num"].to_i
74
+ if @num < 1
75
+ @num = 10
76
+ elsif @num > 100
77
+ @num = 100
78
+ end
79
+ @sort = @cgi["sort"].empty? ? "score" : @cgi["sort"]
80
+ @order = @cgi["order"].empty? ? "desc" : @cgi["order"]
81
+ end
82
+
83
+ def search
84
+ db = Rast::DB.open(@db_path, Rast::DB::RDONLY)
85
+ begin
86
+ options = create_search_options
87
+ t = Time.now
88
+ @result = db.search(convert(@query), options)
89
+ @secs = Time.now - t
90
+ rescue
91
+ @msg = "エラー: #{_($!.to_s)}</p>"
92
+ ensure
93
+ db.close
94
+ end
95
+ end
96
+
97
+ def format_result_item(item)
98
+ if @conf['rast.with_user_name']
99
+ @title, @user, @date, @last_modified = *item.properties
100
+ else
101
+ @title, @date, @last_modified = *item.properties
102
+ end
103
+ @summary = _(item.summary) || ''
104
+ for term in @result.terms
105
+ @summary.gsub!(Regexp.new(Regexp.quote(CGI.escapeHTML(term.term)), true, @encoding), "<strong>\\&</strong>")
106
+ end
107
+ end
108
+
109
+ def format_links(result)
110
+ page_count = (result.hit_count - 1) / @num + 1
111
+ current_page = @start / @num + 1
112
+ first_page = current_page - (MAX_PAGES / 2 - 1)
113
+ if first_page < 1
114
+ first_page = 1
115
+ end
116
+ last_page = first_page + MAX_PAGES - 1
117
+ if last_page > page_count
118
+ last_page = page_count
119
+ end
120
+ buf = "<p class=\"infobar\">\n"
121
+ if current_page > 1
122
+ buf.concat(format_link("前へ", @start - @num, @num))
123
+ end
124
+ if first_page > 1
125
+ buf.concat("... ")
126
+ end
127
+ for i in first_page..last_page
128
+ if i == current_page
129
+ buf.concat("#{i} ")
130
+ else
131
+ buf.concat(format_link(i.to_s, (i - 1) * @num, @num))
132
+ end
133
+ end
134
+ if last_page < page_count
135
+ buf.concat("... ")
136
+ end
137
+ if current_page < page_count
138
+ buf.concat(format_link("次へ", @start + @num, @num))
139
+ end
140
+ buf.concat("</p>\n")
141
+ return buf
142
+ end
143
+
144
+ def format_anchor(start, num)
145
+ return format('?query=%s;start=%d;num=%d;sort=%s;order=%s', CGI::escape(@query), start, num, _(@sort), _(@order))
146
+ end
147
+
148
+ def format_link(label, start, num)
149
+ return format('<a href="%s%s">%s</a> ', _(@cgi.script_name ? @cgi.script_name : ""), format_anchor(start, num), _(label))
150
+ end
151
+
152
+ def create_search_options
153
+ options = {
154
+ "properties" => [
155
+ "title", "date", 'last_modified'
156
+ ],
157
+ "need_summary" => true,
158
+ "summary_nchars" => 150,
159
+ "start_no" => @start,
160
+ "num_items" => @num
161
+ }
162
+ options['properties'] << 'user' if @conf['rast.with_user_name']
163
+ if SORT_PROPERTIES.include?(@sort)
164
+ options["sort_method"] = Rast::SORT_METHOD_PROPERTY
165
+ options["sort_property"] = @sort
166
+ end
167
+ if @order == "asc"
168
+ options["sort_order"] = Rast::SORT_ORDER_ASCENDING
169
+ else
170
+ options["sort_order"] = Rast::SORT_ORDER_DESCENDING
171
+ end
172
+ return options
173
+ end
174
+
175
+ def format_options(options, value)
176
+ return options.collect { |val, label|
177
+ if val == value
178
+ "<option value=\"#{_(val)}\" selected>#{_(label)}</option>"
179
+ else
180
+ "<option value=\"#{_(val)}\">#{_(label)}</option>"
181
+ end
182
+ }.join("\n")
183
+ end
184
+
185
+ def format_form
186
+ @num_options = NUM_OPTIONS.collect { |n|
187
+ if n == @num
188
+ "<option value=\"#{n}\" selected>#{n}件ずつ</option>"
189
+ else
190
+ "<option value=\"#{n}\">#{n}件ずつ</option>"
191
+ end
192
+ }.join("\n")
193
+ @sort_options = format_options(SORT_OPTIONS, @sort)
194
+ @order_options = format_options(ORDER_OPTIONS, @order)
195
+ end
196
+
197
+ def _(str)
198
+ CGI::escapeHTML(str)
199
+ end
200
+
201
+ def convert(str)
202
+ @conf.to_native(str)
203
+ end
204
+ end
205
+ end
206
+
207
+ begin
208
+ @cgi = CGI::new
209
+ if ::TDiary::Config.instance_method(:initialize).arity != 0
210
+ # for tDiary 2.1 or later
211
+ conf = ::TDiary::Config::new(@cgi)
212
+ else
213
+ # for tDiary 2.0 or earlier
214
+ conf = ::TDiary::Config::new
215
+ end
216
+ tdiary = TDiary::TDiaryRast::new( @cgi, 'rast.rhtml', conf )
217
+
218
+ head = {
219
+ 'type' => 'text/html',
220
+ 'Vary' => 'User-Agent'
221
+ }
222
+ if @cgi.mobile_agent? then
223
+ body = conf.to_mobile( tdiary.eval_rhtml( 'i.' ) )
224
+ head['charset'] = conf.mobile_encoding
225
+ head['Content-Length'] = body.size.to_s
226
+ else
227
+ if @cgi['type'] == 'rss'
228
+ head['type'] = "application/xml; charset=#{conf.encoding}"
229
+ body = tdiary.eval_rxml
230
+ else
231
+ body = tdiary.eval_rhtml
232
+ end
233
+ head['charset'] = conf.encoding
234
+ head['Content-Length'] = body.size.to_s
235
+ head['Pragma'] = 'no-cache'
236
+ head['Cache-Control'] = 'no-cache'
237
+ end
238
+ print @cgi.header( head )
239
+ print body
240
+ rescue Exception
241
+ if @cgi then
242
+ print @cgi.header( 'type' => 'text/plain' )
243
+ else
244
+ print "Content-Type: text/plain\n\n"
245
+ end
246
+ puts "#$! (#{$!.class})"
247
+ puts ""
248
+ puts $@.join( "\n" )
249
+ end
@@ -0,0 +1,66 @@
1
+ <%# rast.rhtml $Revision: 1.7.2.1 $ %>
2
+ <div class="adminmenu"><%%=navi_user%></div>
3
+
4
+ <h1><%= CGI::escapeHTML( @conf.html_title ) %> [全文検索]</h1>
5
+
6
+ <form action="<%= @cgi.script_name ? _(@cgi.script_name) : '' %>">
7
+ <p>
8
+ <input type="text" name="query" value="<%= _(@conf.to_native(@query)) %>" size="60">
9
+ <input type="submit" value="検索">
10
+ <a href="http://projects.netlab.jp/rast/query.html.ja">検索方法</a>
11
+ </p>
12
+ <p>
13
+ 並べ替え:
14
+ <select name="sort">
15
+ <%= @sort_options %>
16
+ </select>
17
+ <select name="order">
18
+ <%= @order_options %>
19
+ </select>
20
+
21
+ 表示件数:
22
+ <select name="num">
23
+ <%= @num_options %>
24
+ </select>
25
+ </p>
26
+ </form>
27
+
28
+ <% if @msg %>
29
+ <p><%= @msg %></p>
30
+ <% else %>
31
+ <p>
32
+ <%= _(@conf.to_native(@query)) %> の検索結果
33
+ <%= @result.hit_count %> 件中 <%= @start + 1 %> - <%= @start + @result.items.length %> 件目
34
+ (<%= @secs %> 秒)
35
+ </p>
36
+ <% if @result.hit_count > @num %>
37
+ <%= format_links(@result) %>
38
+ <% end %>
39
+ <% for item in @result.items %>
40
+ <% format_result_item(item) %>
41
+ <div class="day">
42
+ <h2><span class="date"></span> <span class="title"><a href="<%= @conf.index %><%= @plugin.anchor(@date) %>"><%= _(@conf.to_native(@title)) %></a></span></h2>
43
+ <div class="body">
44
+ <div class="section">
45
+ <p>
46
+ <%= @conf.to_native(@summary) %>
47
+ </p>
48
+ </div>
49
+ </div>
50
+ <div class="comment">
51
+ <div class="commentshort">
52
+ <p><%= @conf.comment_anchor %>
53
+ <span class="commentator"></span>&nbsp;(スコア:<%= item.score %>)</p>
54
+ </div>
55
+ </div>
56
+ <div class="referer">
57
+ </div>
58
+ </div>
59
+ <% end %>
60
+ <% if @result.hit_count > @num %>
61
+ <%= format_links(@result) %>
62
+ <% end %>
63
+ <% end %>
64
+
65
+ <div class="footer">
66
+ Powered by <a href="http://projects.netlab.jp/rast/">Rast</a> <%= ::Rast::VERSION %></div>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="<%= @conf.encoding %>"?>
2
+ <rss xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" version="2.0">
3
+ <channel>
4
+ <title><%= _( @conf.html_title ) %> [全文検索]: <%= _(@query) %></title>
5
+ <link><%= @conf.base_url.sub(%r|/[^/]*$|, '/') %><%= _(@cgi.script_name ? File.basename(@cgi.script_name) : "") %><%= format_anchor(@start, @num) %></link>
6
+ <description>Rast 検索: <%= _(@query) %></description>
7
+ <language>ja-JP</language>
8
+ <openSearch:totalResults><%= @result.hit_count %></openSearch:totalResults>
9
+ <openSearch:startIndex><%= @start + 1 %></openSearch:startIndex>
10
+ <openSearch:itemsPerPage><%= @num %></openSearch:itemsPerPage>
11
+ <% for item in @result.items %>
12
+ <% format_result_item(item) %>
13
+ <item>
14
+ <title><%= _(@conf.to_native(@title)) %></title>
15
+ <link><%= @conf.base_url %><%= @plugin.anchor(@date) %></link>
16
+ <pubDate><%= _(CGI.rfc1123_date(Time.parse(@last_modified))) %></pubDate>
17
+ <description><%= @conf.to_native(@summary) %></description>
18
+ </item>
19
+ <% end %>
20
+ </channel>
21
+ </rss>
@@ -0,0 +1,11 @@
1
+ はてなダイアリーの「日記モード・見出し別ページ」のように、「1見出しが1ページになる日記形式、日付ごとにコメント・トラックバックを表示」になるようにします。
2
+
3
+ * tdiary以下のファイル3つ:tdiary以下に入れます(wikiとtdiary記法に対応しています)
4
+ * misc/plugin/section_link.rb を設定画面から有効にします
5
+ * mod_rewriteを使って拡張子を書き換えているひとは、misc/plugin/section_link_anchor.rbも有効にします
6
+ ** mod_rewriteを書き換えます
7
+
8
+ <IfModule mod_rewrite.c>
9
+ RewriteEngine on
10
+ RewriteRule ^([0-9\-]+)p?([0-9]*)\.html$ ?date=$1&section=$2 [L]
11
+ </IfModule>