tdiary 3.2.2.20130507

Sign up to get free protection for your applications and to get access to all the features.
Files changed (509) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +16 -0
  4. data/.travis.yml +29 -0
  5. data/Capfile +2 -0
  6. data/ChangeLog +3173 -0
  7. data/Gemfile +58 -0
  8. data/Gemfile.lock +201 -0
  9. data/LICENSE +340 -0
  10. data/Procfile +1 -0
  11. data/README.md +33 -0
  12. data/Rakefile +26 -0
  13. data/bin/tdiary +7 -0
  14. data/config.ru +61 -0
  15. data/data/.htaccess +2 -0
  16. data/doc/HOWTO-authenticate-in-rack.md +89 -0
  17. data/doc/HOWTO-make-io.md +305 -0
  18. data/doc/HOWTO-make-plugin.md +279 -0
  19. data/doc/HOWTO-make-theme.md +67 -0
  20. data/doc/HOWTO-testing-tDiary.md +44 -0
  21. data/doc/HOWTO-use-plugin.md +148 -0
  22. data/doc/HOWTO-write-tDiary.en.md +131 -0
  23. data/doc/HOWTO-write-tDiary.md +136 -0
  24. data/doc/INSTALL-paas.md +202 -0
  25. data/doc/INSTALL.md +160 -0
  26. data/doc/README.en.md +174 -0
  27. data/doc/README.md +56 -0
  28. data/doc/UPGRADE.md +164 -0
  29. data/doc/doc.css +115 -0
  30. data/dot.htaccess +27 -0
  31. data/index.fcgi +45 -0
  32. data/index.rb +57 -0
  33. data/js/00default.js +60 -0
  34. data/js/01conf.js +62 -0
  35. data/js/02edit.coffee +5 -0
  36. data/js/02edit.js +15 -0
  37. data/js/amazon.js +43 -0
  38. data/js/calendar3.js +130 -0
  39. data/js/caretposition.js +170 -0
  40. data/js/category.js +29 -0
  41. data/js/category_autocomplete.js +96 -0
  42. data/js/comment_ajax.js +27 -0
  43. data/js/draft.js +149 -0
  44. data/js/highlight.js +36 -0
  45. data/js/image.js +181 -0
  46. data/misc/convert2.rb +123 -0
  47. data/misc/filter/antispamservice.rb +101 -0
  48. data/misc/filter/limitdays.rb +40 -0
  49. data/misc/filter/linkcheck.rb +81 -0
  50. data/misc/filter/plugin/antispamservice.rb +82 -0
  51. data/misc/filter/plugin/en/antispamservice.rb +21 -0
  52. data/misc/filter/plugin/ja/antispamservice.rb +20 -0
  53. data/misc/lib/README +4 -0
  54. data/misc/lib/compatible.rb +1 -0
  55. data/misc/lib/fcgi_patch.rb +90 -0
  56. data/misc/migrate.rb +157 -0
  57. data/misc/paas/cloudfoundry/Gemfile +26 -0
  58. data/misc/paas/cloudfoundry/Gemfile.lock +85 -0
  59. data/misc/paas/heroku/Gemfile +22 -0
  60. data/misc/paas/heroku/Gemfile.lock +85 -0
  61. data/misc/paas/sqale/Gemfile +19 -0
  62. data/misc/paas/sqale/Gemfile.lock +85 -0
  63. data/misc/paas/sqale/Procfile +1 -0
  64. data/misc/paas/sqale/dot.env +1 -0
  65. data/misc/plugin/ChangeLog.DO_NOT_UPDATE +2333 -0
  66. data/misc/plugin/a.rb +211 -0
  67. data/misc/plugin/amazon.rb +403 -0
  68. data/misc/plugin/amazon/README.en +17 -0
  69. data/misc/plugin/amazon/README.ja +29 -0
  70. data/misc/plugin/amazon/amazonimg.rb +113 -0
  71. data/misc/plugin/amazon/large.png +0 -0
  72. data/misc/plugin/amazon/medium.png +0 -0
  73. data/misc/plugin/amazon/small.png +0 -0
  74. data/misc/plugin/append-css.rb +51 -0
  75. data/misc/plugin/bq.rb +48 -0
  76. data/misc/plugin/calendar2.rb +184 -0
  77. data/misc/plugin/calendar3.rb +256 -0
  78. data/misc/plugin/category.rb +779 -0
  79. data/misc/plugin/category_autocomplete.rb +33 -0
  80. data/misc/plugin/comment_ajax.rb +11 -0
  81. data/misc/plugin/comment_mail-qmail.rb +57 -0
  82. data/misc/plugin/comment_mail-sendmail.rb +56 -0
  83. data/misc/plugin/comment_mail-smtp.rb +59 -0
  84. data/misc/plugin/comment_rank.rb +36 -0
  85. data/misc/plugin/counter.rb +631 -0
  86. data/misc/plugin/daily_theme.rb +55 -0
  87. data/misc/plugin/disp_referrer.rb +1486 -0
  88. data/misc/plugin/doctype-html401tr.rb +16 -0
  89. data/misc/plugin/draft.rb +20 -0
  90. data/misc/plugin/dropdown_calendar.rb +32 -0
  91. data/misc/plugin/edit_today.rb +50 -0
  92. data/misc/plugin/en/a.rb +10 -0
  93. data/misc/plugin/en/amazon.rb +71 -0
  94. data/misc/plugin/en/append-css.rb +17 -0
  95. data/misc/plugin/en/bq.rb +12 -0
  96. data/misc/plugin/en/calendar2.rb +12 -0
  97. data/misc/plugin/en/category.rb +204 -0
  98. data/misc/plugin/en/counter.rb +48 -0
  99. data/misc/plugin/en/daily_theme.rb +14 -0
  100. data/misc/plugin/en/disp_referrer.rb +387 -0
  101. data/misc/plugin/en/dropdown_calendar.rb +14 -0
  102. data/misc/plugin/en/edit_today.rb +22 -0
  103. data/misc/plugin/en/hide-mail-field.rb +19 -0
  104. data/misc/plugin/en/highlight.rb +29 -0
  105. data/misc/plugin/en/image.rb +54 -0
  106. data/misc/plugin/en/kw.rb +22 -0
  107. data/misc/plugin/en/makerss.rb +47 -0
  108. data/misc/plugin/en/pb-show.rb +21 -0
  109. data/misc/plugin/en/ping.rb +16 -0
  110. data/misc/plugin/en/recent_comment.rb +44 -0
  111. data/misc/plugin/en/recent_comment3.rb +56 -0
  112. data/misc/plugin/en/recent_rss.rb +33 -0
  113. data/misc/plugin/en/referer_scheme.rb +48 -0
  114. data/misc/plugin/en/search_control.rb +74 -0
  115. data/misc/plugin/en/search_form.rb +22 -0
  116. data/misc/plugin/en/speed_comment.rb +19 -0
  117. data/misc/plugin/en/tb-show.rb +37 -0
  118. data/misc/plugin/en/todo.rb +43 -0
  119. data/misc/plugin/en/weather.rb +185 -0
  120. data/misc/plugin/en/xmlrpc.rb +14 -0
  121. data/misc/plugin/footnote.rb +92 -0
  122. data/misc/plugin/gradation.rb +39 -0
  123. data/misc/plugin/gradient.rb +36 -0
  124. data/misc/plugin/hide-mail-field.rb +50 -0
  125. data/misc/plugin/highlight.rb +22 -0
  126. data/misc/plugin/html_anchor.rb +34 -0
  127. data/misc/plugin/image.rb +290 -0
  128. data/misc/plugin/ja/amazon.rb +89 -0
  129. data/misc/plugin/ja/bq.rb +13 -0
  130. data/misc/plugin/ja/calendar2.rb +12 -0
  131. data/misc/plugin/ja/category.rb +212 -0
  132. data/misc/plugin/ja/daily_theme.rb +15 -0
  133. data/misc/plugin/ja/disp_referrer.rb +644 -0
  134. data/misc/plugin/ja/edit_today.rb +23 -0
  135. data/misc/plugin/ja/hide-mail-field.rb +20 -0
  136. data/misc/plugin/ja/highlight.rb +30 -0
  137. data/misc/plugin/ja/makerss.rb +44 -0
  138. data/misc/plugin/ja/my-sequel.rb +52 -0
  139. data/misc/plugin/ja/pb-show.rb +23 -0
  140. data/misc/plugin/ja/ping.rb +17 -0
  141. data/misc/plugin/ja/recent_comment.rb +45 -0
  142. data/misc/plugin/ja/recent_comment3.rb +57 -0
  143. data/misc/plugin/ja/recent_rss.rb +34 -0
  144. data/misc/plugin/ja/referer_scheme.rb +86 -0
  145. data/misc/plugin/ja/search_control.rb +75 -0
  146. data/misc/plugin/ja/search_form.rb +32 -0
  147. data/misc/plugin/ja/tb-show.rb +38 -0
  148. data/misc/plugin/ja/todo.rb +46 -0
  149. data/misc/plugin/ja/weather.rb +402 -0
  150. data/misc/plugin/ja/xmlrpc.rb +15 -0
  151. data/misc/plugin/kw.rb +150 -0
  152. data/misc/plugin/list.rb +40 -0
  153. data/misc/plugin/makelirs.rb +89 -0
  154. data/misc/plugin/makerss.rb +744 -0
  155. data/misc/plugin/my-ex.rb +68 -0
  156. data/misc/plugin/my-sequel.rb +539 -0
  157. data/misc/plugin/navi_user.rb +19 -0
  158. data/misc/plugin/number_anchor.rb +47 -0
  159. data/misc/plugin/pb-show.rb +165 -0
  160. data/misc/plugin/ping.rb +99 -0
  161. data/misc/plugin/pre_wrap.rb +19 -0
  162. data/misc/plugin/random_google.rb +165 -0
  163. data/misc/plugin/recent_comment.rb +82 -0
  164. data/misc/plugin/recent_comment3.rb +192 -0
  165. data/misc/plugin/recent_list.rb +91 -0
  166. data/misc/plugin/recent_namazu.rb +50 -0
  167. data/misc/plugin/recent_rss.rb +305 -0
  168. data/misc/plugin/referer-antibot.rb +53 -0
  169. data/misc/plugin/referer-utf8.rb +12 -0
  170. data/misc/plugin/referer_scheme.rb +87 -0
  171. data/misc/plugin/search_control.rb +227 -0
  172. data/misc/plugin/search_form.rb +53 -0
  173. data/misc/plugin/sn.rb +107 -0
  174. data/misc/plugin/speed_comment.rb +68 -0
  175. data/misc/plugin/squeeze.rb +272 -0
  176. data/misc/plugin/src.rb +30 -0
  177. data/misc/plugin/tb-show.rb +212 -0
  178. data/misc/plugin/title_list.rb +41 -0
  179. data/misc/plugin/title_tag.rb +80 -0
  180. data/misc/plugin/tlink.rb +163 -0
  181. data/misc/plugin/todo.rb +182 -0
  182. data/misc/plugin/weather.rb +505 -0
  183. data/misc/plugin/whatsnew.rb +100 -0
  184. data/misc/plugin/xmlrpc.rb +80 -0
  185. data/misc/plugin/xmlrpc/README +20 -0
  186. data/misc/plugin/xmlrpc/xmlrpc.rb +575 -0
  187. data/misc/style/emptdiary/README.rd +83 -0
  188. data/misc/style/emptdiary/README.rd.en +78 -0
  189. data/misc/style/emptdiary/emptdiary_style.rb +199 -0
  190. data/misc/style/etdiary/README.rd +83 -0
  191. data/misc/style/etdiary/etdiary_style.rb +446 -0
  192. data/misc/style/gfm/gfm_style.rb +194 -0
  193. data/misc/style/rd/README.rd +71 -0
  194. data/misc/style/rd/rd_style.rb +366 -0
  195. data/misc/style/wiki/README +116 -0
  196. data/misc/style/wiki/README.en +101 -0
  197. data/misc/style/wiki/wiki_parser.rb +273 -0
  198. data/misc/style/wiki/wiki_style.rb +478 -0
  199. data/misc/theme_convert/Readme.rd +21 -0
  200. data/misc/theme_convert/append.rcss +150 -0
  201. data/misc/theme_convert/theme_convert.rb +453 -0
  202. data/plugin/00default.rb +1015 -0
  203. data/plugin/05referer.rb +298 -0
  204. data/plugin/10spamfilter.rb +183 -0
  205. data/plugin/50sp.rb +146 -0
  206. data/plugin/60sf.rb +152 -0
  207. data/plugin/90migrate.rb +109 -0
  208. data/plugin/en/00default.rb +390 -0
  209. data/plugin/en/05referer.rb +49 -0
  210. data/plugin/en/10spamfilter.rb +81 -0
  211. data/plugin/en/50sp.rb +56 -0
  212. data/plugin/en/60sf.rb +60 -0
  213. data/plugin/ja/00default.rb +401 -0
  214. data/plugin/ja/05referer.rb +47 -0
  215. data/plugin/ja/10spamfilter.rb +79 -0
  216. data/plugin/ja/50sp.rb +66 -0
  217. data/plugin/ja/60sf.rb +73 -0
  218. data/public/.gitkeep +0 -0
  219. data/public/images/.gitkeep +0 -0
  220. data/public/javascripts/.gitkeep +0 -0
  221. data/public/stylesheets/.gitkeep +0 -0
  222. data/skel/category.rhtml +9 -0
  223. data/skel/conf.rhtml +23 -0
  224. data/skel/day.rhtml +33 -0
  225. data/skel/diary.rhtml +83 -0
  226. data/skel/footer.rhtml +8 -0
  227. data/skel/header.rhtml +10 -0
  228. data/skel/i.category.rhtml +6 -0
  229. data/skel/i.conf.rhtml +14 -0
  230. data/skel/i.day.rhtml +28 -0
  231. data/skel/i.diary.rhtml +17 -0
  232. data/skel/i.footer.rhtml +2 -0
  233. data/skel/i.header.rhtml +3 -0
  234. data/skel/i.latest.rhtml +24 -0
  235. data/skel/i.month.rhtml +39 -0
  236. data/skel/i.search.rhtml +5 -0
  237. data/skel/i.update.rhtml +40 -0
  238. data/skel/i.update.rhtml.en +40 -0
  239. data/skel/latest.rhtml +27 -0
  240. data/skel/mail.rtxt +18 -0
  241. data/skel/mail.rtxt.en +18 -0
  242. data/skel/month.rhtml +27 -0
  243. data/skel/plugin_error.rhtml +27 -0
  244. data/skel/preview.rhtml +85 -0
  245. data/skel/preview.rhtml.en +72 -0
  246. data/skel/referer.rhtml +24 -0
  247. data/skel/search.rhtml +14 -0
  248. data/skel/tdiary.rconf +76 -0
  249. data/skel/update.rhtml +103 -0
  250. data/skel/update.rhtml.en +83 -0
  251. data/spec/acceptance/append_comment_spec.rb +94 -0
  252. data/spec/acceptance/append_diary_spec.rb +98 -0
  253. data/spec/acceptance/bugfix/encoding_error_spec.rb +27 -0
  254. data/spec/acceptance/save_conf_comment_spec.rb +87 -0
  255. data/spec/acceptance/save_conf_default_spec.rb +169 -0
  256. data/spec/acceptance/save_conf_dnsbl_spec.rb +152 -0
  257. data/spec/acceptance/save_conf_filter_spec.rb +50 -0
  258. data/spec/acceptance/save_conf_plugin_spec.rb +69 -0
  259. data/spec/acceptance/save_conf_referer_spec.rb +60 -0
  260. data/spec/acceptance/save_conf_security_spec.rb +280 -0
  261. data/spec/acceptance/support/helpers.rb +49 -0
  262. data/spec/acceptance/support/paths.rb +7 -0
  263. data/spec/acceptance/update_diary_spec.rb +113 -0
  264. data/spec/acceptance/view_category_spec.rb +38 -0
  265. data/spec/acceptance/view_comment_spec.rb +67 -0
  266. data/spec/acceptance/view_diary_spec.rb +126 -0
  267. data/spec/acceptance/view_referer_spec.rb +31 -0
  268. data/spec/acceptance_helper.rb +101 -0
  269. data/spec/core/compatible_spec.rb +54 -0
  270. data/spec/core/core_ext_spec.rb +59 -0
  271. data/spec/core/plugin_spec.rb +389 -0
  272. data/spec/core/rack/assets/precompile_spec.rb +76 -0
  273. data/spec/core/rack/html_anchor_spec.rb +57 -0
  274. data/spec/core/rack/valid_request_path_spec.rb +67 -0
  275. data/spec/core/style/emptdiary_style_spec.rb +165 -0
  276. data/spec/core/style/etdiary_style_spec.rb +512 -0
  277. data/spec/core/style/gfm_style_spec.rb +334 -0
  278. data/spec/core/style/rd_style_spec.rb +202 -0
  279. data/spec/core/style/tdiary_style_spec.rb +240 -0
  280. data/spec/core/style/wiki_style_spec.rb +441 -0
  281. data/spec/fixtures/ascii8bit-pstore.db +0 -0
  282. data/spec/fixtures/invalid-sequence-volatile.tdr +9 -0
  283. data/spec/fixtures/just_installed.conf +1 -0
  284. data/spec/fixtures/plugin/ja/sample.rb +4 -0
  285. data/spec/fixtures/plugin/sample.rb +6 -0
  286. data/spec/fixtures/sample.rb +12 -0
  287. data/spec/fixtures/tdiary.conf.gem +212 -0
  288. data/spec/fixtures/tdiary.conf.rack +212 -0
  289. data/spec/fixtures/tdiary.conf.rdb +227 -0
  290. data/spec/fixtures/tdiary.conf.secure +204 -0
  291. data/spec/fixtures/tdiary.conf.webrick +212 -0
  292. data/spec/javascripts/00default_spec.js +35 -0
  293. data/spec/javascripts/fixtures/00default.html +1 -0
  294. data/spec/javascripts/support/jasmine.yml +76 -0
  295. data/spec/plugin/bq_spec.rb +24 -0
  296. data/spec/plugin/plugin_helper.rb +203 -0
  297. data/spec/spec_helper.rb +32 -0
  298. data/tdiary.conf.beginner +244 -0
  299. data/tdiary.conf.sample +345 -0
  300. data/tdiary.conf.sample-en +333 -0
  301. data/tdiary.gemspec +26 -0
  302. data/tdiary.rb +151 -0
  303. data/tdiary/admin.rb +236 -0
  304. data/tdiary/application.rb +57 -0
  305. data/tdiary/author_only_base.rb +171 -0
  306. data/tdiary/base.rb +220 -0
  307. data/tdiary/cli.rb +116 -0
  308. data/tdiary/comment.rb +40 -0
  309. data/tdiary/comment_manager.rb +94 -0
  310. data/tdiary/compatible.rb +72 -0
  311. data/tdiary/config.rb +270 -0
  312. data/tdiary/core_ext.rb +122 -0
  313. data/tdiary/deploy.rb +50 -0
  314. data/tdiary/dispatcher.rb +77 -0
  315. data/tdiary/dispatcher/index_main.rb +122 -0
  316. data/tdiary/dispatcher/update_main.rb +101 -0
  317. data/tdiary/environment.rb +15 -0
  318. data/tdiary/filter.rb +48 -0
  319. data/tdiary/filter/default.rb +54 -0
  320. data/tdiary/filter/spam.rb +304 -0
  321. data/tdiary/io/base.rb +70 -0
  322. data/tdiary/io/cache/file.rb +123 -0
  323. data/tdiary/io/cache/memcached.rb +88 -0
  324. data/tdiary/io/cache/redis.rb +100 -0
  325. data/tdiary/io/default.rb +297 -0
  326. data/tdiary/io/pstore.rb +252 -0
  327. data/tdiary/io/rdb.rb +213 -0
  328. data/tdiary/lang/en.rb +79 -0
  329. data/tdiary/lang/ja.rb +72 -0
  330. data/tdiary/plugin.rb +375 -0
  331. data/tdiary/rack/assets/precompile.rb +37 -0
  332. data/tdiary/rack/auth/basic.rb +38 -0
  333. data/tdiary/rack/auth/omniauth.rb +51 -0
  334. data/tdiary/rack/html_anchor.rb +31 -0
  335. data/tdiary/rack/valid_request_path.rb +36 -0
  336. data/tdiary/referer_manager.rb +80 -0
  337. data/tdiary/request.rb +217 -0
  338. data/tdiary/response.rb +29 -0
  339. data/tdiary/server.rb +85 -0
  340. data/tdiary/style.rb +194 -0
  341. data/tdiary/style/tdiary_style.rb +198 -0
  342. data/tdiary/style/wiki_style.rb +213 -0
  343. data/tdiary/tasks.rb +1 -0
  344. data/tdiary/tasks/assets.rake +31 -0
  345. data/tdiary/tasks/auth.rake +28 -0
  346. data/tdiary/tasks/db.rake +110 -0
  347. data/tdiary/tasks/doc.rake +31 -0
  348. data/tdiary/tasks/heroku.rake +37 -0
  349. data/tdiary/tasks/jasmine.rake +16 -0
  350. data/tdiary/tasks/rdoc.rake +24 -0
  351. data/tdiary/tasks/release.rake +122 -0
  352. data/tdiary/tasks/rspec.rake +51 -0
  353. data/tdiary/tasks/server.rake +33 -0
  354. data/tdiary/tasks/test.rake +17 -0
  355. data/tdiary/version.rb +3 -0
  356. data/tdiary/view.rb +468 -0
  357. data/tdiary/view_helper.rb +15 -0
  358. data/test/disp_referrer_test.rb +93 -0
  359. data/test/my-sequel_test.rb +238 -0
  360. data/test/test_helper.rb +7 -0
  361. data/test/test_plugin_helper.rb +64 -0
  362. data/test/test_plugin_helper_test.rb +28 -0
  363. data/test/weather_test.rb +33 -0
  364. data/theme/base.css +268 -0
  365. data/theme/conf.block.png +0 -0
  366. data/theme/conf.css +254 -0
  367. data/theme/default/README +11 -0
  368. data/theme/default/body.png +0 -0
  369. data/theme/default/default.css +743 -0
  370. data/theme/help.png +0 -0
  371. data/theme/loading.gif +0 -0
  372. data/theme/tdiary1/README +7 -0
  373. data/theme/tdiary1/tdiary1.css +394 -0
  374. data/theme/tdiary2/README +19 -0
  375. data/theme/tdiary2/tdiary2.css +624 -0
  376. data/update.fcgi +45 -0
  377. data/update.rb +57 -0
  378. data/vendor/hikidoc-0.0.6/COPYING +28 -0
  379. data/vendor/hikidoc-0.0.6/NEWS +30 -0
  380. data/vendor/hikidoc-0.0.6/NEWS.ja +30 -0
  381. data/vendor/hikidoc-0.0.6/README +86 -0
  382. data/vendor/hikidoc-0.0.6/README.ja +83 -0
  383. data/vendor/hikidoc-0.0.6/Rakefile +68 -0
  384. data/vendor/hikidoc-0.0.6/TextFormattingRules +320 -0
  385. data/vendor/hikidoc-0.0.6/TextFormattingRules.ja +318 -0
  386. data/vendor/hikidoc-0.0.6/bin/hikidoc +66 -0
  387. data/vendor/hikidoc-0.0.6/lib/hikidoc.rb +914 -0
  388. data/vendor/hikidoc-0.0.6/setup.rb +1360 -0
  389. data/vendor/hikidoc-0.0.6/test/run-test.rb +13 -0
  390. data/vendor/hikidoc-0.0.6/test/test_hikidoc.rb +506 -0
  391. data/vendor/imagesize-0.1.1/Manifest.txt +19 -0
  392. data/vendor/imagesize-0.1.1/README.txt +49 -0
  393. data/vendor/imagesize-0.1.1/lib/image_size.rb +305 -0
  394. data/vendor/imagesize-0.1.1/lib/image_size/version.rb +9 -0
  395. data/vendor/imagesize-0.1.1/setup.rb +1585 -0
  396. data/vendor/imagesize-0.1.1/test/2-4-7.png +0 -0
  397. data/vendor/imagesize-0.1.1/test/4_1_2.gif +0 -0
  398. data/vendor/imagesize-0.1.1/test/bmp.bmp +0 -0
  399. data/vendor/imagesize-0.1.1/test/cursor.xbm +6 -0
  400. data/vendor/imagesize-0.1.1/test/detect.swf +0 -0
  401. data/vendor/imagesize-0.1.1/test/pbm.pbm +0 -0
  402. data/vendor/imagesize-0.1.1/test/pcx.pcx +0 -0
  403. data/vendor/imagesize-0.1.1/test/pgm.pgm +5 -0
  404. data/vendor/imagesize-0.1.1/test/test.xpm +38 -0
  405. data/vendor/imagesize-0.1.1/test/test_helper.rb +2 -0
  406. data/vendor/imagesize-0.1.1/test/test_image_size.rb +71 -0
  407. data/vendor/imagesize-0.1.1/test/tiff.tiff +0 -0
  408. data/vendor/imagesize-0.1.1/test/tokyo_tower.jpg +0 -0
  409. data/vendor/imagesize-0.1.1/test/tower_e.gif.psd +0 -0
  410. data/vendor/jasmine-jquery-1.4.2/jasmine-jquery.js +548 -0
  411. data/vendor/jquery-1.8/jquery.js +9227 -0
  412. data/vendor/rdtool-0.6.38/COPYING.txt +339 -0
  413. data/vendor/rdtool-0.6.38/Gemfile +3 -0
  414. data/vendor/rdtool-0.6.38/HISTORY +318 -0
  415. data/vendor/rdtool-0.6.38/LGPL-2.1 +502 -0
  416. data/vendor/rdtool-0.6.38/LICENSE.txt +58 -0
  417. data/vendor/rdtool-0.6.38/README.html +66 -0
  418. data/vendor/rdtool-0.6.38/README.ja.html +73 -0
  419. data/vendor/rdtool-0.6.38/README.rd +76 -0
  420. data/vendor/rdtool-0.6.38/README.rd.ja +85 -0
  421. data/vendor/rdtool-0.6.38/Rakefile +152 -0
  422. data/vendor/rdtool-0.6.38/TODO +22 -0
  423. data/vendor/rdtool-0.6.38/bin/rd2 +283 -0
  424. data/vendor/rdtool-0.6.38/bin/rdswap.rb +207 -0
  425. data/vendor/rdtool-0.6.38/doc/rd-draft.html +456 -0
  426. data/vendor/rdtool-0.6.38/doc/rd-draft.ja.html +466 -0
  427. data/vendor/rdtool-0.6.38/doc/rd-draft.rd +479 -0
  428. data/vendor/rdtool-0.6.38/doc/rd-draft.rd.ja +487 -0
  429. data/vendor/rdtool-0.6.38/lib/rd/block-element.rb +114 -0
  430. data/vendor/rdtool-0.6.38/lib/rd/complex-list-item.rb +65 -0
  431. data/vendor/rdtool-0.6.38/lib/rd/desclist.rb +55 -0
  432. data/vendor/rdtool-0.6.38/lib/rd/document-struct.rb +46 -0
  433. data/vendor/rdtool-0.6.38/lib/rd/dot.rd2rc +18 -0
  434. data/vendor/rdtool-0.6.38/lib/rd/element.rb +160 -0
  435. data/vendor/rdtool-0.6.38/lib/rd/filter.rb +255 -0
  436. data/vendor/rdtool-0.6.38/lib/rd/head-filter.rb +14 -0
  437. data/vendor/rdtool-0.6.38/lib/rd/inline-element.rb +233 -0
  438. data/vendor/rdtool-0.6.38/lib/rd/labeled-element.rb +14 -0
  439. data/vendor/rdtool-0.6.38/lib/rd/list.rb +57 -0
  440. data/vendor/rdtool-0.6.38/lib/rd/loose-struct.rb +11 -0
  441. data/vendor/rdtool-0.6.38/lib/rd/methodlist.rb +57 -0
  442. data/vendor/rdtool-0.6.38/lib/rd/output-format-visitor.rb +30 -0
  443. data/vendor/rdtool-0.6.38/lib/rd/package.rb +4 -0
  444. data/vendor/rdtool-0.6.38/lib/rd/parser-util.rb +14 -0
  445. data/vendor/rdtool-0.6.38/lib/rd/post-install +1 -0
  446. data/vendor/rdtool-0.6.38/lib/rd/pre-setup.rb +18 -0
  447. data/vendor/rdtool-0.6.38/lib/rd/rbl-file.rb +69 -0
  448. data/vendor/rdtool-0.6.38/lib/rd/rbl-suite.rb +37 -0
  449. data/vendor/rdtool-0.6.38/lib/rd/rd-struct.rb +86 -0
  450. data/vendor/rdtool-0.6.38/lib/rd/rd2html-ext-lib.rb +266 -0
  451. data/vendor/rdtool-0.6.38/lib/rd/rd2html-ext-opt.rb +34 -0
  452. data/vendor/rdtool-0.6.38/lib/rd/rd2html-lib.rb +490 -0
  453. data/vendor/rdtool-0.6.38/lib/rd/rd2html-opt.rb +67 -0
  454. data/vendor/rdtool-0.6.38/lib/rd/rd2man-lib.rb +251 -0
  455. data/vendor/rdtool-0.6.38/lib/rd/rd2rdo-lib.rb +19 -0
  456. data/vendor/rdtool-0.6.38/lib/rd/rd2rmi-lib.rb +32 -0
  457. data/vendor/rdtool-0.6.38/lib/rd/rdblockparser.ry +518 -0
  458. data/vendor/rdtool-0.6.38/lib/rd/rdblockparser.tab.rb +1061 -0
  459. data/vendor/rdtool-0.6.38/lib/rd/rdfmt.rb +15 -0
  460. data/vendor/rdtool-0.6.38/lib/rd/rdinlineparser.ry +503 -0
  461. data/vendor/rdtool-0.6.38/lib/rd/rdinlineparser.tab.rb +1243 -0
  462. data/vendor/rdtool-0.6.38/lib/rd/rdvisitor.rb +214 -0
  463. data/vendor/rdtool-0.6.38/lib/rd/reference-resolver.rb +114 -0
  464. data/vendor/rdtool-0.6.38/lib/rd/search-file.rb +14 -0
  465. data/vendor/rdtool-0.6.38/lib/rd/tree.rb +103 -0
  466. data/vendor/rdtool-0.6.38/lib/rd/version.rb +41 -0
  467. data/vendor/rdtool-0.6.38/lib/rd/visitor.rb +86 -0
  468. data/vendor/rdtool-0.6.38/rdtool.gemspec +125 -0
  469. data/vendor/rdtool-0.6.38/setup.rb +1596 -0
  470. data/vendor/rdtool-0.6.38/test/data/includee1.html +1 -0
  471. data/vendor/rdtool-0.6.38/test/data/includee2.html +1 -0
  472. data/vendor/rdtool-0.6.38/test/data/includee3.nothtml +1 -0
  473. data/vendor/rdtool-0.6.38/test/data/includee4.xhtml +0 -0
  474. data/vendor/rdtool-0.6.38/test/data/label.rbl +2 -0
  475. data/vendor/rdtool-0.6.38/test/data/label2.rbl +2 -0
  476. data/vendor/rdtool-0.6.38/test/data/sub/includee2.html +1 -0
  477. data/vendor/rdtool-0.6.38/test/data/sub/includee4.html +0 -0
  478. data/vendor/rdtool-0.6.38/test/dummy-observer.rb +6 -0
  479. data/vendor/rdtool-0.6.38/test/dummy.rb +33 -0
  480. data/vendor/rdtool-0.6.38/test/temp-dir.rb +19 -0
  481. data/vendor/rdtool-0.6.38/test/test-block-parser.rb +46 -0
  482. data/vendor/rdtool-0.6.38/test/test-desclist-item.rb +219 -0
  483. data/vendor/rdtool-0.6.38/test/test-document-element.rb +46 -0
  484. data/vendor/rdtool-0.6.38/test/test-document-struct.rb +66 -0
  485. data/vendor/rdtool-0.6.38/test/test-element.rb +46 -0
  486. data/vendor/rdtool-0.6.38/test/test-headline.rb +80 -0
  487. data/vendor/rdtool-0.6.38/test/test-inline-parser.rb +46 -0
  488. data/vendor/rdtool-0.6.38/test/test-list-item.rb +54 -0
  489. data/vendor/rdtool-0.6.38/test/test-list.rb +53 -0
  490. data/vendor/rdtool-0.6.38/test/test-methodlist-item.rb +73 -0
  491. data/vendor/rdtool-0.6.38/test/test-nonterminal-element.rb +170 -0
  492. data/vendor/rdtool-0.6.38/test/test-nonterminal-inline.rb +33 -0
  493. data/vendor/rdtool-0.6.38/test/test-output-format-visitor.rb +48 -0
  494. data/vendor/rdtool-0.6.38/test/test-parser-util.rb +41 -0
  495. data/vendor/rdtool-0.6.38/test/test-rbl-file.rb +156 -0
  496. data/vendor/rdtool-0.6.38/test/test-rbl-suite.rb +43 -0
  497. data/vendor/rdtool-0.6.38/test/test-rd2html-lib.rb +496 -0
  498. data/vendor/rdtool-0.6.38/test/test-rdtree.rb +17 -0
  499. data/vendor/rdtool-0.6.38/test/test-rdvisitor.rb +29 -0
  500. data/vendor/rdtool-0.6.38/test/test-reference-resolver.rb +202 -0
  501. data/vendor/rdtool-0.6.38/test/test-reference.rb +132 -0
  502. data/vendor/rdtool-0.6.38/test/test-search-file.rb +22 -0
  503. data/vendor/rdtool-0.6.38/test/test-terminal-inline.rb +41 -0
  504. data/vendor/rdtool-0.6.38/test/test-textblock.rb +44 -0
  505. data/vendor/rdtool-0.6.38/test/test-tree.rb +82 -0
  506. data/vendor/rdtool-0.6.38/test/test-version.rb +57 -0
  507. data/vendor/rdtool-0.6.38/test/test-visitor.rb +230 -0
  508. data/vendor/rdtool-0.6.38/utils/rd-mode.el +464 -0
  509. metadata +666 -0
@@ -0,0 +1,89 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Japanese resource of amazon plugin
4
+ #
5
+ # Copyright (C) 2002 HAL99 <hal99@mtj.biglobe.ne.jp>
6
+ # You can redistribute it and/or modify it under GPL2.
7
+ #
8
+
9
+ #
10
+ # isbn_image_left: 指定したISBNの書影をclass="left"で表示
11
+ # パラメタ:
12
+ # asin: ASINまたはISBN(必須)
13
+ # comment: コメント(省略可)
14
+ #
15
+ # isbn_image_right: 指定したISBNの書影をclass="right"で表示
16
+ # パラメタ:
17
+ # asin: ASINまたはISBN(必須)
18
+ # comment: コメント(省略可)
19
+ #
20
+ # isbn_image: 指定したISBNの書影をclass="amazon"で表示
21
+ # asin: ASINまたはISBN(必須)
22
+ # comment: コメント(省略可)
23
+ #
24
+ # isbn_detail: 指定したISBNの書籍を書影付きで詳細表示
25
+ # asin: ASINまたはISBN(必須)
26
+ #
27
+ # isbn: amazonにアクセスしない簡易バージョン。
28
+ # asin: ASINまたはISBN(必須)
29
+ # comment: コメント(必須)
30
+ #
31
+ # ASINとはアマゾン独自の商品管理IDです。
32
+ # 書籍のISBNをASINに入力すると書籍が表示されます。
33
+ #
34
+ # それぞれ商品画像が見つからなかった場合は
35
+ # <a href="amazonのページ">商品名</a>
36
+ # のように商品名を表示します。
37
+ # コメントが記述されている場合は商品名がコメントの内容に変わります。
38
+ #
39
+ # tdiary.confにおける設定:
40
+ # @options['amazon.aid']: アソシエイトIDを指定することで、自分のア
41
+ # ソシエイトプログラムを利用できます
42
+ # このオプションは設定画面から変更可能です
43
+ # @options['amazon.hideconf']: 設定画面上でアソシエイトIDを入力不可能
44
+ # にしたい場合、trueに設定します
45
+ # @options['amazon.imgsize']: 表示するイメージのサイズを指定します
46
+ # (0:大 1:中 2:小)
47
+ # @options['amazon.hidename']: class="amazon"のときに商品名を表示したく
48
+ # ない場合、trueに設定します
49
+ # @options['amazon.default_image_base']: デフォルトのイメージを格納した
50
+ # URLを指定します。無指定時にはtDiary.org
51
+ # にあるものが使われます。自作したい場合には
52
+ # プラグイン集amazonディレクトリにあるPNG
53
+ # ファイルを参考にして下さい
54
+ # @options['amazon.nodefault']: デフォルトのイメージを表示したくない場合
55
+ # trueに設定します
56
+ #
57
+ #
58
+ # 注意:著作権が関連する為、www.amazon.co.jpのアソシエイトプログラムを
59
+ # 確認の上利用して下さい。
60
+ #
61
+
62
+ @amazon_default_country = 'jp'
63
+ @amazon_item_name = /^Amazon.co.jp: (.*)<.*$/
64
+ @amazon_item_image = %r|(<img src="(http://images-jp\.amazon\.com/images/P/(.*MZZZZZZZ_?.jpg))".*?>)|i
65
+ @amazon_label_conf ='Amazon'
66
+ @amazon_label_aid = 'AmazonアソシエイトIDの指定'
67
+ @amazon_label_aid_desc = '日本のAmazonが扱う商品にのみ適用されます。他の国のアソシエイトIDを利用する場合はtdiary.confで指定して下さい。なお指定しない場合には、Amazon認証Proxyサービスの指定するIDが使われますのでご注意下さい。'
68
+ @amazon_label_imgsize = '表示するイメージのサイズ'
69
+ @amazon_label_large = '大きい'
70
+ @amazon_label_regular = '普通'
71
+ @amazon_label_small = '小さい'
72
+ @amazon_label_title = 'isbn_imageプラグインで商品名を'
73
+ @amazon_label_hide = '表示しない'
74
+ @amazon_label_show = '表示する'
75
+ @amazon_label_bitly = 'bit.lyを使って商品のURLを'
76
+ @amazon_label_bitly_enabled = '短縮する'
77
+ @amazon_label_bitly_disabled = '短縮しない'
78
+ @amazon_label_notfound = 'イメージが見つからないときは'
79
+ @amazon_label_usetitle = '商品名を表示する'
80
+ @amazon_label_usedefault = 'デフォルトのイメージを使う'
81
+ @amazon_label_clearcache = 'キャッシュの削除'
82
+ @amazon_label_clearcache_desc = 'イメージ関連情報のキャッシュを削除する(Amazon上の表示と矛盾がある場合に試して下さい)'
83
+
84
+ # Local Variables:
85
+ # mode: ruby
86
+ # indent-tabs-mode: t
87
+ # tab-width: 3
88
+ # ruby-indent-level: 3
89
+ # End:
@@ -0,0 +1,13 @@
1
+ # -*- coding: utf-8 -*-
2
+ # ja/bq.rb
3
+ #
4
+ def bq_cite_from( cite )
5
+ "#{cite}より引用"
6
+ end
7
+
8
+ # Local Variables:
9
+ # mode: ruby
10
+ # indent-tabs-mode: t
11
+ # tab-width: 3
12
+ # ruby-indent-level: 3
13
+ # End:
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+ # calendar2.rb language recource for Japanese
3
+
4
+ @calendar2_days_format = ["日", "月", "火", "水", "木", "金", "土"]
5
+ @calendar2_navi_format = ["前", "%d年<br>%d月", "次"]
6
+
7
+ # Local Variables:
8
+ # mode: ruby
9
+ # indent-tabs-mode: t
10
+ # tab-width: 3
11
+ # ruby-indent-level: 3
12
+ # End:
@@ -0,0 +1,212 @@
1
+ # -*- coding: utf-8 -*-
2
+ # ja/category.rb
3
+ #
4
+ # Copyright (c) 2004 Junichiro KITA <kita@kitaj.no-ip.com>
5
+ # Distributed under the GPL
6
+ #
7
+
8
+ def category_title
9
+ info = Category::Info.new(@cgi, @years, @conf)
10
+ mode = info.mode
11
+ case mode
12
+ when :year
13
+ period = "#{info.year}年"
14
+ when :half
15
+ period = (info.month.to_i == 1 ? "上半期" : "下半期")
16
+ period = "#{info.year}年 #{period}" if info.year
17
+ when :quarter
18
+ period = "第#{info.month.to_i}四半期"
19
+ period = "#{info.year}年 #{period}" if info.year
20
+ when :month
21
+ period = "#{info.month.to_i}月"
22
+ period = "#{info.year}年 #{period}" if info.year
23
+ end
24
+ period = " (#{period})" if period
25
+
26
+ "[#{info.category.join('|')}#{period}]"
27
+ end
28
+
29
+ def category_init_local
30
+ @conf['category.prev_year'] ||= '<< ($1)'
31
+ @conf['category.next_year'] ||= '($1) >>'
32
+ @conf['category.prev_half'] ||= '<< ($1-$2)'
33
+ @conf['category.next_half'] ||= '($1-$2) >>'
34
+ @conf['category.prev_quarter'] ||= '<< ($1-$2)'
35
+ @conf['category.next_quarter'] ||= '($1-$2) >>'
36
+ @conf['category.prev_month'] ||= '<< ($1-$2)'
37
+ @conf['category.next_month'] ||= '($1-$2) >>'
38
+ @conf['category.this_year'] ||= '年'
39
+ @conf['category.this_half'] ||= '半期'
40
+ @conf['category.this_quarter'] ||= '四半期'
41
+ @conf['category.this_month'] ||= '月'
42
+ @conf['category.all_diary'] ||= '全期間'
43
+ @conf['category.all_category'] ||= '全カテゴリ'
44
+ @conf['category.all'] ||= '全期間/全カテゴリ'
45
+ end
46
+ category_init_local
47
+
48
+ @category_conf_label = 'カテゴリ'
49
+ def category_conf_html
50
+ r = <<HTML
51
+ <h3 class="subtitle">カテゴリインデックスの作成</h3>
52
+ <p>
53
+ カテゴリの機能を利用するにはカテゴリインデックスをあらかじめ作成しておく必要があります。
54
+ カテゴリインデックスを作成するには
55
+ 以下のチェックを入れてからOKボタンを押してください。
56
+ </p>
57
+ <p><label for="category_initialize">
58
+ <input type="checkbox" id="category_initialize" name="category_initialize" value="1">カテゴリインデックスの作成
59
+ </label></p>
60
+ <p>
61
+ 日記の量やサーバの性能にもよりますが、数秒から数十秒でインデックスの作成は終了します。
62
+ </p>
63
+
64
+ <h3 class="subtitle">日記編集サポート</h3>
65
+ <p>
66
+ 日記編集画面の「本文」の下にカテゴリ名を一覧表示することができます。
67
+ カテゴリ名をクリックすると「本文」にそのカテゴリ名が挿入されます(要JavaScript)。
68
+ </p>
69
+ <p>
70
+ <select name="category.edit_support">
71
+ <option value="1"#{" selected" if @conf['category.edit_support'] == 1}>一覧表示</option>
72
+ <option value="2"#{" selected" if @conf['category.edit_support'] == 2}>ドロップダウンリスト</option>
73
+ <option value="0"#{" selected" if @conf['category.edit_support'] == 0}>表示しない</option>
74
+ </select>
75
+ </p>
76
+
77
+ <h3 class="subtitle">表示期間の初期状態</h3>
78
+ <p>
79
+ カテゴリ表示画面を表示した時の、最初の表示期間を指定します。
80
+ </p>
81
+ <p>
82
+ <select name="category.period">
83
+ HTML
84
+ [
85
+ ['月', 'month', false],
86
+ ['四半期', 'quarter', true],
87
+ ['半期', 'half', false],
88
+ ['年', 'year', false],
89
+ ['全日記', 'all', false],
90
+ ].each do |text, value, default|
91
+ selected = @conf["category.period"] ? @conf["category.period"] == value : default
92
+ r << <<HTML
93
+ <option value="#{value}"#{" selected" if selected}>#{text}</option>
94
+ HTML
95
+ end
96
+ r << <<HTML
97
+ </select>
98
+ </p>
99
+
100
+ <h3 class="subtitle">ヘッダ</h3>
101
+ <p>
102
+ 画面上部に表示する文章を指定します。
103
+ 「&lt;%= category_navi %&gt;」で、カテゴリに特化したナビゲーションボタンを表示することができます。
104
+ また「&lt;%= category_list%&gt;」でカテゴリ名一覧を表示することができます。
105
+ その他,各種プラグインやHTMLを記述できます。
106
+ </p>
107
+
108
+ <h4>ヘッダ1</h4>
109
+ <p>ナビゲーションボタンのすぐ下に表示されます。</p>
110
+ <p><textarea name="category.header1" cols="60" rows="5">#{h @conf['category.header1']}</textarea></p>
111
+
112
+ <h4>ヘッダ2</h4>
113
+ <p>H1のすぐ下に表示されます。</p>
114
+ <p><textarea name="category.header2" cols="60" rows="5">#{h @conf['category.header2']}</textarea></p>
115
+
116
+ <h3 class="subtitle">ボタンラベル</h3>
117
+ <p>
118
+ ナビゲーションボタンのラベルを指定します。
119
+ ラベル中の$1と$2は,それぞれ「年」「月」を表す数値で置換されます。
120
+ </p>
121
+ <table border="0">
122
+ <tr><th>ボタン名</th><th>ラベル</th><th>サンプル</th></tr>
123
+ HTML
124
+ [
125
+ ['前年', 'category.prev_year'],
126
+ ['翌年', 'category.next_year'],
127
+ ['前の半年', 'category.prev_half'],
128
+ ['次の半年', 'category.next_half'],
129
+ ['前四半期', 'category.prev_quarter'],
130
+ ['次四半期', 'category.next_quarter'],
131
+ ['先月', 'category.prev_month'],
132
+ ['翌月', 'category.next_month'],
133
+ ['今年', 'category.this_year'],
134
+ ['現半期', 'category.this_half'],
135
+ ['現四半期', 'category.this_quarter'],
136
+ ['今月', 'category.this_month'],
137
+ ['全日記', 'category.all_diary'],
138
+ ['全カテゴリ', 'category.all_category'],
139
+ ['全日記/全カテゴリ', 'category.all'],
140
+ ].each do |button, name|
141
+ r << <<HTML
142
+ <tr>
143
+ <td>#{button}</td>
144
+ <td><input type="text" name="#{name}" value="#{h @conf[name]}" size="30"></td>
145
+ <td><p><span class="adminmenu"><a>#{h @conf[name].sub(/\$1/, "2007").sub(/\$2/, "2")}</a></span></p></td>
146
+ </tr>
147
+ HTML
148
+ end
149
+ r << <<HTML
150
+ </table>
151
+ HTML
152
+ end
153
+
154
+ @category_icon_none_label = 'アイコンなし'
155
+ @category_icon_conf_label = 'カテゴリアイコン'
156
+ def category_icon_conf_html
157
+ r = ''
158
+ unless @conf.secure
159
+ r << <<HTML
160
+ <h3 class="subtitle">カテゴリアイコンの置き場所</h3>
161
+ <p>
162
+ カテゴリアイコン用の画像が保存されているディレクトリとそのURLを指定します。
163
+ </p>
164
+ <p>
165
+ <dl>
166
+ <dt>ディレクトリ:</dt>
167
+ <dd><input name="category.icon_dir" value="#{h @category_icon_dir}" size="30"></dd>
168
+ <dt>URL:</dt>
169
+ <dd><input name="category.icon_url" value="#{h @category_icon_url}" size="30"></dd>
170
+ </dl>
171
+ </p>
172
+ <hr>
173
+ HTML
174
+ end
175
+
176
+ str = ''
177
+ @categories.each do |c|
178
+ str << %Q|\t<tr>\n\t\t<td>#{c}</td>\n\t\t<td>\n|
179
+ str << category_icon_select(c)
180
+ str << %Q|<img src="#{h @category_icon_url}#{h @category_icon[c]}">| if @category_icon[c]
181
+ str << %Q|</td>\n\t</tr>\n|
182
+ end
183
+ r << <<HTML
184
+ <h3 class="subtitle">カテゴリアイコン</h3>
185
+ <p>
186
+ 各カテゴリのアイコンをドロップダウンリストから選択します。
187
+ <p>
188
+ <table>
189
+ <tr><th>カテゴリ</th><th>アイコン</th></tr>
190
+ #{str}
191
+ </table>
192
+ </p>
193
+ <hr>
194
+ <h3 class="subtitle">アイコンサンプル</h3>
195
+ <p>
196
+ 選択可能なアイコン一覧です.
197
+ アイコンにマウスカーソルを合わせるとアイコンのファイル名がポップアップ表示されます。
198
+ </p>
199
+ <p>
200
+ #{category_icon_sample}
201
+ </p>
202
+ HTML
203
+ r
204
+ end
205
+
206
+ # Local Variables:
207
+ # mode: ruby
208
+ # indent-tabs-mode: t
209
+ # tab-width: 3
210
+ # ruby-indent-level: 3
211
+ # End:
212
+ # vim: ts=3
@@ -0,0 +1,15 @@
1
+ # -*- coding: utf-8 -*-
2
+ # ja/daily_theme.rb
3
+ #
4
+ # Copyright (c) 2005 SHIBATA Hiroshi <h-sbt@nifty.com>
5
+ # Distributed under the GPL
6
+
7
+ @daily_theme_label = '日替わりテーマ'
8
+ @daily_theme_label_desc = '日替わりテーマで使用するテーマ名を、1行につき1つ入力してください。'
9
+
10
+ # Local Variables:
11
+ # mode: ruby
12
+ # indent-tabs-mode: t
13
+ # tab-width: 3
14
+ # ruby-indent-level: 3
15
+ # End:
@@ -0,0 +1,644 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ = 本日のリンク元もうちょっとだけ強化プラグイン((-$Id: disp_referrer.rb,v 1.46 2008-03-02 09:01:46 kazuhiko Exp $-))
4
+ 日本語リソース
5
+
6
+ == 概要
7
+ アンテナからのリンク、サーチエンジンの検索結果を、通常のリンク元の下にま
8
+ とめて表示します。サーチエンジンの検索結果は、検索語毎にまとめられます。
9
+
10
+ 最新の日記の表示では、通常のリンク元以外のリンク元を隠します。
11
+
12
+ == 注意
13
+ 以前の版(1.1.2.39以前)からコードのほとんどを実装しなおしたため、
14
+ * 検索エンジンに関する動作が違う
15
+ * 廃止されたオプションがある
16
+ * オプション名が変更された
17
+ という非互換があります。基本的な設定はWWWブラウザからできるようになって
18
+ いますので、我慢してください。すみません。
19
+
20
+ 以前の版に比べると、
21
+ * キャッシュにより表示が高速化された((-手元では、キャッシュを使わない場
22
+ 合にくらべて、1日分で2/3ほど、最新3日分で1/2ほどの実時間で日記が生成
23
+ されました-))。この機能は残念ながら、レンタル日記などsecure=trueな日記
24
+ では使えません。
25
+ * リンク元置換リストにないURLを比較的簡単にWWWブラウザからリストに追加で
26
+ きるようになった
27
+ * 置換後の文字列の最初に[]で囲まれた文字を入れることによって、ユーザー
28
+ がカテゴリーを増設できるようになった。((-tDiary本体とは違い、1つの
29
+ URLは1つのカテゴリーしか持てないことにご注意ください。-))
30
+ * 基本的な設定をWWWブラウザからできるようになった
31
+ * disp_referrer.rbが無くても使える
32
+ * UconvライブラリやNoraライブラリがあればあるなりに、無ければないなりに
33
+ 動作する
34
+ という利点があります。
35
+
36
+ == 使い方
37
+ このプラグインをインストールすることで、デフォルトでは、
38
+ * 一日分の日記の表示で、「本日のリンク元」がアンテナ、検索エンジン、その
39
+ 他にまとめて表示されるようになります。置換後の文字列の最後の()を除いた
40
+ タイトルでグループします。また、検索エンジンからのリンクは、キーワード
41
+ 別にまとめられます。
42
+ * 最新の日記の表示で、「本日のリンク元」にアンテナや検索エンジンからのリ
43
+ ンクが表示されなくなります。
44
+ リンク元URLのタイトルへの置換は、tDiary本体のリンク元置換リストを使いま
45
+ す。
46
+
47
+ オプションについては下記をご覧ください。基本的なオプションは、tDiaryの設
48
+ 定画面から、「リンク元もうちょっと強化」をクリックすることで設定できます。
49
+ 初めて設定する時には、
50
+ Insecure: can't modify hash (SecurityError)
51
+ というエラーが出る可能性があります。これはtDiaryの問題です。この場合には、
52
+ tDiaryを新しくして1.5.5.20030806以降を使うか、「基本」から何も変更せず
53
+ に「OK」を押すことでエラーを回避できるでしょう。
54
+
55
+ リンク元置換リストやオプションを変更した場合は、キャッシュディレクトリ
56
+ にあるキャッシュファイルdisp_referrer2.cacheやdisp_referrer2.cache~をプ
57
+ ラグインの設定画面から更新する必要があります。このプラグインの設定画面か
58
+ ら変更した項目については、変更時にキャッシュの更新もします。
59
+
60
+ リンク元は、以下のような基準で分類されます。
61
+
62
+ : 通常のリンク元(「本日のリンク元」)
63
+ リンク元置換リストにあてはまるURLのうち、下記以外のもの。
64
+ @options['disp_referrer2.unknown.divide']=falseの場合は、リンク元置換
65
+ リストにあてはまらないURLもここに含まれます。
66
+
67
+ さらに、リンク元置換リストによって置換された後の文字列の最初に[]で囲ま
68
+ れた文字列がある場合は、これをカテゴリーと解釈してカテゴリー別に表示を
69
+ 分けます。この機能を抑制するには、WWWブラウザから設定画面を利用するか、
70
+ tdiary.confで@options['disp_referrer2.normal.categorize']=falseにして
71
+ ください。このオプションを変更した場合にはキャッシュを更新する必要があ
72
+ ります。
73
+
74
+ : アンテナ
75
+ URLに /a/ antenna/ antenna. などの文字列が含まれるか、置換後の文字列に、
76
+ アンテナ links などの文字列が含まれるリンク元です。これらの条件は、
77
+ @options['disp_referrer2.antenna.url']や
78
+ @options['disp_referrer2.antenna.title']によって変更できます。
79
+ tdiary.confを編集してください。キャッシュを更新する必要があります。
80
+
81
+ : その他
82
+ リンク元置換リストになかったURLです。あまり長いURLは、tDiary本体の置換
83
+ リストによって通常のリンク元に分類されてしまう可能性があります。
84
+
85
+ : 検索
86
+ このプラグインに含まれる検索エンジンのリストに一致したURLです。リスト
87
+ はDispRef2Setup::Enginesにあります。うまく検索エンジンと認識されない
88
+ URLは、ほとんどの場合、通常のリンク元に混ざって表示されてしまうでしょ
89
+ う。このような場合は、URLを
90
+ ((<URL:http://tdiary-users.sourceforge.jp/cgi-bin/wiki.cgi?disp_referrer2.rb>))
91
+ に知らせていただけると作者が喜びます。
92
+
93
+ === 環境
94
+ ruby-1.6.7と1.8.0で動作を確認しています。これ以外のバージョンのRubyでも
95
+ 動作するかもしれません。
96
+
97
+ tdiary-1.5.3-20030509以降で使えます。これ以前のtDiary-1.5では、
98
+ 00default.rbにbot?メソッドが定義されていないため、検索エンジンのクロール
99
+ に対してリンク元が表示されてしまいます。
100
+
101
+ secureモードでも使えますがキャッシュによる高速化ができません。
102
+
103
+ mod_rubyでの動作は今のところ確認していません。
104
+
105
+ === インストール方法
106
+ このファイルをtDiaryのpluginディレクトリ内にコピーしてください。このプラ
107
+ グインの最新版は、
108
+ ((<URL:http://zunda.freeshell.org/d/plugin/disp_referrer2.rb>))
109
+ にあるはずです。
110
+
111
+ また、Noraライブラリがインストールされている場合には、URLの解釈やHTMLの
112
+ エスケープに、Rubyに標準添付のCGIライブラリの代わりにNoraライブラリを使
113
+ 用します。これにより、処理速度が若干速くなります((-手元で試したところ、
114
+ 一日分の表示にかかる時間が1割程度短かくなりました。-))。Noraについての詳
115
+ 細は、((<URL:http://raa.ruby-lang.org/list.rhtml?name=Nora>))を参照して
116
+ ください。
117
+
118
+ === オプション
119
+ この日記で設定できるオプションの一覧は、DispRef2Setup::Defaultsにありま
120
+ す。これらのオプションのkeyの最初に、「disp_referrer2.」を追加すること
121
+ で、tdiary.confの@optionsのkeyとなり、tdiary.confから設定できるようにな
122
+ ります。これらのオプションのうち、DispRef2URL::Cached_optionsに挙げられ
123
+ ているものは、変更の際にキャッシュの更新が必要です。
124
+
125
+ また、tDiaryの設定画面から「リンク元もうちょっと強化」を選ぶことでWWWブ
126
+ ラウザから設定できる項目もあります。
127
+
128
+ == 謝辞
129
+ このプラグインは、
130
+ * UTF-8文字列のEUC文字列への変換機能
131
+ * 一部の検索エンジン名とそのURL
132
+ * 検索エンジンのロボットのクローリングの際にリンク元を表示しない機能
133
+ を、MUTOH Masaoさんのdisp_referrer.rbからコピー、編集して使わせていただ
134
+ いています。(検索エンジンのロボットに関する機能は現在はtDiary本体にとり
135
+ こまれています。)
136
+
137
+ また、URLを解釈する機能の一部を、Rubyに付属のcgi.rbからコピー、編集して
138
+ 使わせていただいています。
139
+
140
+ さらに、通常のリンク元を[]で囲まれた文字列を使ってカテゴリ分けするアイデ
141
+ ィアは、kazuhikoさんのものです。
142
+
143
+ 皆様に感謝いたします。
144
+
145
+ == Todos
146
+ * secure=trueでリンク元置換リストのテキストフィールドでリターンを押した際の動作
147
+ * parse_as_search高速化: hostnameのキャッシュ?
148
+
149
+ == 著作権について
150
+ Copyright (C) 2003 zunda <zunda at freeshell.org>
151
+
152
+ Please note that some methods in this plugin are written by other
153
+ authors as written in the comments.
154
+
155
+ Permission is granted for use, copying, modification, distribution, and
156
+ distribution of modified versions of this work under the terms of GPL
157
+ version 2 or later.
158
+ =end
159
+
160
+ =begin ChangeLog
161
+ See ../ChangeLog for changes after this.
162
+
163
+ * Mon Sep 29, 2003 zunda <zunda at freeshell.org>
164
+ - forgot to change arguments after changing initialize()
165
+ * Thu Sep 25, 2003 zunda <zunda at freeshell.org>
166
+ - name.untaint to eval name
167
+ * Thu Sep 25, 2003 zunda <zunda at freeshell.org>
168
+ - use to_native instead of to_euc
169
+ * Mon Sep 19, 2003 zunda <zunda at freeshell.org>
170
+ - disp_referrer2.rb,v 1.1.2.104 commited as disp_referrer.rb
171
+ * Mon Sep 1, 2003 zunda <zunda at freeshell.org>
172
+ - more strcit check for infoseek search enigne
173
+ * Wed Aug 27, 2003 zunda <zunda at freeshell.org>
174
+ - rd.yahoo, Searchalot, Hotbot added
175
+ * Tue Aug 12, 2003 zunda <zunda at freeshell.org>
176
+ - search engine list cleaned up
177
+ * Mon Aug 11, 2003 zunda <zunda at freeshell.org>
178
+ - instance_eval for e[2] in the search engine list
179
+ * Wed Aug 7, 2003 zunda <zunda at freeshell.org>
180
+ - WWW browser configuration interface
181
+ - キャッシュの更新をより確実にするようにしました。WWWブラウザから置換
182
+ リストを作った場合にはリストの最初に追加されます。
183
+ - secure=trueな日記でその他のリンク元リストが表示できるようになりました。
184
+ - Regexp generation for Wiki sites
185
+ * Wed Aug 6, 2003 zunda <zunda at freeshell.org>
186
+ - WWW browser configuration interface
187
+ - 主なオプションとリンク元置換リストの効率的な編集がWWWブラウザからで
188
+ きるようになりました。secure=trueな日記では一部の機能は使えません。
189
+ * Sat Aug 2, 2003 zunda <zunda at freeshell.org>
190
+ - Second version
191
+ - basic functions re-implemented
192
+ - オプションを命名しなおしました。また不要なオプションを消しました。
193
+ tdiary.confを編集していた方は、お手数ですが設定をしなおしてください。
194
+ - Noraライブラリとキャッシュの利用で高速化しました。
195
+ - 検索エンジンのリストをプラグインで持つようになりました。&や;を含む検
196
+ 索文字列も期待通りに抽出できます。
197
+ * Mon Feb 17, 2003 zunda <zunda at freeshell.org>
198
+ - First version
199
+ =end
200
+
201
+ # Message strings
202
+ Disp_referrer2_name = 'リンク元もうちょっと強化'.taint
203
+ Disp_referrer2_abstract = <<'_END'.taint
204
+ <p>
205
+ アンテナからのリンク、サーチエンジンの検索結果を、
206
+ 通常のリンク元の下にまとめて表示します。
207
+ サーチエンジンの検索結果は、検索語毎にまとめられます。
208
+ </p>
209
+ _END
210
+ Disp_referrer2_with_Nora = <<'_END'.taint
211
+ <p>
212
+ Noraライブラリを使っていますので、表示が少し速いはずです。
213
+ </p>
214
+ _END
215
+ Disp_referrer2_without_Nora = <<'_END'.taint
216
+ <!-- p>
217
+ 表示速度が気になる場合は、
218
+ <a href="http://www.moonwolf.com/ruby/archive/nora-20040830.tar.gz">Nora
219
+ ライブラリ</a>をインストールしてみてください。
220
+ </p -->
221
+ _END
222
+ Disp_referrer2_cache_info = <<'_END'.taint
223
+ <p>
224
+ 現在、キャッシュの大きさは%1$sバイトです。
225
+ </p>
226
+ _END
227
+ Disp_referrer2_update_info = <<'_END'.taint
228
+ <p>
229
+ 「<a href="%1$s">リンク元</a>」の変更の後には、
230
+ このチェックボックス
231
+ −<label for="dr2.cache.update"><input id="dr2.cache.update" name="dr2.cache.update" value="force" type="checkbox">キャッシュをクリアする</label>−
232
+ チェックしてからOKをクリックして、
233
+ キャッシュのクリアをしてくさい。
234
+ </p>
235
+ _END
236
+ Disp_referrer2_move_to_refererlist = <<'_END'.taint
237
+ その他のリンク元の置換リストの編集に<a href="%s">移る</a>。
238
+ _END
239
+ Disp_referrer2_move_to_config = <<'_END'.taint
240
+ 基本的な設定に<a href="%s">移る</a>。
241
+ _END
242
+ Disp_referrer2_also_todayslink = <<'_END'.taint
243
+ リンク元置換リストは「<a href="%s">リンク元</a>」からも編集できます。
244
+ _END
245
+ Disp_referrer2_antenna_label = 'アンテナ'.taint
246
+ Disp_referrer2_unknown_label = 'その他のリンク元'.taint
247
+ Disp_referrer2_search_label = '検索'.taint
248
+ Disp_referrer2_search_unknown_keyword = 'キーワード不明'.taint
249
+ Disp_referrer2_cache_label = '(%sのキャッシュ)'.taint
250
+
251
+ class DispRef2SetupIF
252
+
253
+ # show options
254
+ def show_options
255
+ r = <<-_HTML
256
+ <h3>リンク元の分類と表示</h3>
257
+ <table>
258
+ <tr>
259
+ <td><input name="dr2.current_mode" value="#{Options}" type="hidden">
260
+ リンク元置換リストにないリンク元を
261
+ <td><label for="dr2.unknown.divide.true"><input id="dr2.unknown.divide.true" name="dr2.unknown.divide" value="true" type="radio"#{' checked'if @setup['unknown.divide']}>#{DispRef2String::escapeHTML(@setup['unknown.label'])}として分ける</label>
262
+ <td><label for="dr2.unknown.divide.false"><input id="dr2.unknown.divide.false" name="dr2.unknown.divide" value="false" type="radio"#{' checked'if not @setup['unknown.divide']}>通常のリンク元と混ぜる</label>。
263
+ <tr>
264
+ <td>#{DispRef2String::escapeHTML(@setup['unknown.label'])}を
265
+ <td><label for="dr2.unknown.hide.false"><input id="dr2.unknown.hide.false" name="dr2.unknown.hide" value="false" type="radio"#{' checked'if not @setup['unknown.hide']}>表示する</label>
266
+ <td><label for="dr2.unknown.hide.true"><input id="dr2.unknown.hide.true" name="dr2.unknown.hide" value="true" type="radio"#{' checked'if @setup['unknown.hide']}>隠す</label>。
267
+ <tr>
268
+ <td>リンク元置換リストの置換後の文字列の最初の[]をカテゴリー分けに
269
+ <td><label for="dr2.normal.categorize.true"><input id="dr2.normal.categorize.true" name="dr2.normal.categorize" value="true" type="radio"#{' checked'if @setup['normal.categorize']}>使う</label>
270
+ <td><label for="dr2.normal.categorize.false"><input id="dr2.normal.categorize.false" name="dr2.normal.categorize" value="false" type="radio"#{' checked'if not @setup['normal.categorize']}>使わない</label>。
271
+ <tr>
272
+ <td>一日分の表示で、通常のリンク元以外のリンク元を
273
+ <td><label for="dr2.long.only_normal.false"><input id="dr2.long.only_normal.false" name="dr2.long.only_normal" value="false" type="radio"#{' checked'if not @setup['long.only_normal']}>表示する</label>
274
+ <td><label for="dr2.long.only_normal.true"><input id="dr2.long.only_normal.true" name="dr2.long.only_normal" value="true" type="radio"#{' checked'if @setup['long.only_normal']}>隠す</label>。
275
+ <tr>
276
+ <td>最新の表示で、通常のリンク元以外のリンク元を
277
+ <td><label for="dr2.short.only_normal.false"><input id="dr2.short.only_normal.false" name="dr2.short.only_normal" value="false" type="radio"#{' checked'if not @setup['short.only_normal']}>表示する</label>
278
+ <td><label for="dr2.short.only_normal.true"><input id="dr2.short.only_normal.true" name="dr2.short.only_normal" value="true" type="radio"#{' checked'if @setup['short.only_normal']}>隠す</label>。
279
+ </table>
280
+ <p>最新の表示で、通常のリンク元以外のリンク元を表示する場合には、このプラグインが無い場合とまったく同じ表示になります。</p>
281
+ <h3>通常のリンク元のグループ化</h3>
282
+ <table>
283
+ <tr>
284
+ <td>通常のリンク元を
285
+ <td><label for="dr2.normal.group.true"><input id="dr2.normal.group.true" name="dr2.normal.group" value="true" type="radio"#{' checked'if @setup['normal.group']}>置換後の文字列でまとめる</label>
286
+ <td><label for="dr2.normal.group.false"><input id="dr2.normal.group.false" name="dr2.normal.group" value="false" type="radio"#{' checked'if not @setup['normal.group']}>URL毎に分ける</label>。
287
+ <tr>
288
+ <td>通常のリンク元を置換後の文字列でまとめる場合に、最後の()を
289
+ <td><label for="dr2.normal.ignore_parenthesis.true"><input id="dr2.normal.ignore_parenthesis.true" name="dr2.normal.ignore_parenthesis" value="true" type="radio"#{' checked'if @setup['normal.ignore_parenthesis']}>無視する</label>
290
+ <td><label for="dr2.normal.ignore_parenthesis.false"><input id="dr2.normal.ignore_parenthesis.false" name="dr2.normal.ignore_parenthesis" value="false" type="radio"#{' checked'if not @setup['normal.ignore_parenthesis']}>無視しない</label>。
291
+ </table>
292
+ <h3>アンテナからのリンクのグループ化</h3>
293
+ <table>
294
+ <tr>
295
+ <td>アンテナからのリンクを
296
+ <td><label for="dr2.antenna.group.true"><input id="dr2.antenna.group.true" name="dr2.antenna.group" value="true" type="radio"#{' checked'if @setup['antenna.group']}>置換後の文字列でまとめる</label>
297
+ <td><label for="dr2.antenna.group.false"><input id="dr2.antenna.group.false" name="dr2.antenna.group" value="false" type="radio"#{' checked'if not @setup['antenna.group']}>URL毎に分ける</label>。
298
+ <tr>
299
+ <td>アンテナからのリンクを置換後の文字列でまとめる場合に、最後の()を
300
+ <td><label for="dr2.antenna.ignore_parenthesis.true"><input id="dr2.antenna.ignore_parenthesis.true" name="dr2.antenna.ignore_parenthesis" value="true" type="radio"#{' checked'if @setup['antenna.ignore_parenthesis']}>無視する</label>
301
+ <td><label for="dr2.antenna.ignore_parenthesis.false"><input id="dr2.antenna.ignore_parenthesis.false" name="dr2.antenna.ignore_parenthesis" value="false" type="radio"#{' checked'if not @setup['antenna.ignore_parenthesis']}>無視しない</label>。
302
+ </table>
303
+ <h3>検索キーワードの表示</h3>
304
+ <table>
305
+ <tr>
306
+ <td>検索エンジン名を
307
+ <td><label for="dr2.search.expand.true"><input id="dr2.search.expand.true" name="dr2.search.expand" value="true" type="radio"#{' checked'if @setup['search.expand']}>表示する</label>
308
+ <td><label for="dr2.search.expand.false"><input id="dr2.search.expand.false" name="dr2.search.expand" value="false" type="radio"#{' checked'if not @setup['search.expand']}>表示しない</label>。
309
+ </table>
310
+ _HTML
311
+ unless @setup.secure then
312
+ r << <<-_HTML
313
+ <h3>キャッシュ</h3>
314
+ <p>キャッシュ機能は、tDiary2形式(DefaultIO)使用時は利用できません。</p>
315
+ <table>
316
+ <tr>
317
+ <td>キャッシュを
318
+ <td><label for="dr2.no_cache.false"><input id="dr2.no_cache.false" name="dr2.no_cache" value="false" type="radio"#{' checked'if not @setup['no_cache']}>利用する</label>
319
+ <td><label for="dr2.no_cache.true"><input id="dr2.no_cache.true" name="dr2.no_cache" value="true" type="radio"#{' checked'if @setup['no_cache']}>利用しない</label>。
320
+ <tr>
321
+ <td>キャッシュの大きさを
322
+ <td colspan="3"><input name="dr2.cache_max_size" value="#{DispRef2String::escapeHTML(@setup['cache_max_size'])}" type="text">バイトまでにする。
323
+ <tr>
324
+ <td>今回の設定変更で、キャッシュを
325
+ <td><label for="dr2.cache.update.force"><input id="dr2.cache.update.force" name="dr2.cache.update" value="force" type="radio">クリアする</label>
326
+ <td><label for="dr2.cache.update.auto"><input id="dr2.cache.update.auto" name="dr2.cache.update" value="auto" type="radio" checked>必要ならクリアする</label>
327
+ <td><label for="dr2.cache.update.never"><input id="dr2.cache.update.never" name="dr2.cache.update" value="never" type="radio">クリアしない</label>。
328
+ </table>
329
+ <p>キャッシュの大きさの制限は目安です。これよりも大きくなる場合もあります。キャッシュの大きさの制限を0にすると、キャッシュの大きさを制限しなくなります。最後にKやMをつけると、キロバイト、メガバイト単位になります。</p>
330
+ _HTML
331
+ end # unless @setup.secure
332
+ r
333
+ end
334
+
335
+ # shows URL list to be added to the referer_table or no_referer
336
+ def show_unknown_list
337
+ if @setup.secure then
338
+ urls = DispRef2Latest.new( @cgi, 'latest.rhtml', @conf, @setup ).unknown_urls
339
+ else
340
+ urls = DispRef2Cache.new( @setup ).urls( DispRef2URL::Unknown ).keys
341
+ if urls.size == 0 then
342
+ urls = DispRef2Latest.new( @cgi, 'latest.rhtml', @conf, @setup ).unknown_urls
343
+ end
344
+ end
345
+ urls.reject!{ |url| DispRef2String::url_match?( url, @setup['reflist.ignore_urls'] ) }
346
+ r = <<-_HTML
347
+ <h3>リンク元置換リスト</h3>
348
+ <input name="dr2.current_mode" value="#{RefList}" type="hidden">
349
+ <p>リンク元無視リストに一致するURLはここには表示されません。</p>
350
+ <p>
351
+ リンク元置換リストや記録除外リストには入れたくないURLは、
352
+ 無視リストに入れておくことで、
353
+ 下記のリストに現れなくなります。
354
+ 無視リストは、
355
+ 下記のリストにURLを表示するかどうかの判断にだけ使われます。
356
+ <label for="dr2.clear_ignore_urls"><input id="dr2.clear_ignore_urls" name="dr2.clear_ignore_urls" value="true" type="checkbox">無視リストを空にする場合はチェック</label>して下さい。
357
+ </p>
358
+ _HTML
359
+ if urls.size > 0 then
360
+ r << <<-_HTML
361
+ <p>リンク元置換リストにない下記のURLを、
362
+ リンク元置換リストに入れる場合は、
363
+ 下段の空白にタイトルを入力してください。
364
+ また、リンク元記録除外リストに追加するには、
365
+ チェックボックスをチェックしてください。
366
+ </p>
367
+ <p>
368
+ 正規表現はリンク元置換リストに追加するのに適当なものになっています。
369
+ 確認して、不具合があれば編集してください。
370
+ リンク元置換リストにだけ追加する場合には、
371
+ もう少しマッチの条件が緩いものでもかまいません。
372
+ </p>
373
+ <p>
374
+ 最後の空欄は、リンク元置換リストに追加する際のタイトルです。
375
+ URL中に現れた「(〜)」は、
376
+ 置換文字列中で「\\1」のような「数字」で利用できます。
377
+ また、sprintf('[tdiary:%d]', $1.to_i+1) といった、
378
+ スクリプト片も利用できます。
379
+ </p>
380
+ _HTML
381
+ if @cgi.auth_type and @cgi.remote_user and @setup['configure.use_link'] then
382
+ r << <<-_HTML
383
+ <p>
384
+ それぞれのURLはリンクになっていますが、これをクリックすることで、
385
+ リンク先に、この日記の更新・設定用のURLが知られることになります。
386
+ 適切なアクセス制限が無い場合にはクリックしないようにしてください。
387
+ </p>
388
+ _HTML
389
+ end
390
+ r << <<-_HTML
391
+ <p>
392
+ ここにないURLは「<a href="#{DispRef2String::escapeHTML(@conf.update)}?conf=referer">リンク元</a>」から修正してください。
393
+ </p>
394
+ <dl>
395
+ _HTML
396
+ i = 0
397
+ urls.sort.each do |url|
398
+ shown_url = DispRef2String::escapeHTML( @setup.to_native( DispRef2String::unescape( url ) ) )
399
+ if @cgi.auth_type and @cgi.remote_user and @setup['configure.use_link'] then
400
+ r << "<dt><a href=\"#{DispRef2String::escapeHTML(url)}\">#{shown_url}</a>"
401
+ else
402
+ r << "<dt>#{shown_url}"
403
+ end
404
+ r << <<-_HTML
405
+ <dd>
406
+ <label for="dr2.#{i}.noref"><input id="dr2.#{i}.noref" name="dr2.#{i}.noref" value="true" type="checkbox">除外リストに追加</label>
407
+ <label for="dr2.#{i}.ignore"><input id="dr2.#{i}.ignore" name="dr2.#{i}.ignore" value="true" type="checkbox">無視リストに追加</label><br>
408
+ <input name="dr2.#{i}.reg" value="#{DispRef2String::escapeHTML( DispRef2String::url_regexp( url ) )}" type="text" size="70"><br>
409
+ <input name="dr2.#{i}.title" value="" type="text" size="70">
410
+ _HTML
411
+ i += 1
412
+ end
413
+ r << <<-_HTML
414
+ <input name="dr2.urls" type="hidden" value="#{i}">
415
+ </dl>
416
+ _HTML
417
+ else
418
+ r << <<-_HTML
419
+ <p>現在、#{DispRef2String::escapeHTML(@setup['unknown.label'])}はありません。</p>
420
+ _HTML
421
+ end
422
+ r << <<-_HTML
423
+ <h3>アンテナのための正規表現</h3>
424
+ <p>アンテナのURLや置換後の文字列にマッチする正規表現です。
425
+ これらの正規表現にマッチするリンク元は「アンテナ」に分類されます。</p>
426
+ <ul>
427
+ <li>URL:
428
+ <input name="dr2.antenna.url" value="#{DispRef2String::escapeHTML( @setup.to_native( @setup['antenna.url'] ) )}" type="text" size="70">
429
+ <label for="dr2.antenna.url.default"><input id="dr2.antenna.url.default" name="dr2.antenna.url.default" value="true" type="checkbox">デフォルトに戻す</label>
430
+ <li>置換後の文字列:<input name="dr2.antenna.title" value="#{DispRef2String::escapeHTML( @setup.to_native( @setup['antenna.title'] ) )}" type="text" size="70">
431
+ <label for="dr2.antenna.title.default"><input id="dr2.antenna.title.default" name="dr2.antenna.title.default" value="true" type="checkbox">デフォルトに戻す</label>
432
+ </ul>
433
+ _HTML
434
+ r
435
+ end
436
+ end
437
+
438
+ # Hash table of search engines
439
+ # key: company name
440
+ # value: array of:
441
+ # [0]:url regexp [1]:title [2]:keys for search keyword [3]:cache regexp
442
+ # keys - an Array of Strings for usual keys
443
+ # - a String as a Ruby code to be sent to URL after regexp matching
444
+ # - a Symbol to indicate the key contains URL to be recursively converted
445
+ DispReferrer2_Google_cache = /cache:[^:]+:([^+]+)+/
446
+ DispReferrer2_Yahoofs = /u=(.+)/
447
+ DispReferrer2_Engines = {
448
+ 'google' => [
449
+ [%r{\Ahttp://(?:[^./]+\.)*google\.([^/]+)/((?:hws/|m/)?search|blogsearch|custom|ie|m)}i, '".#{$1}のGoogle検索"', ['as_q', 'q', 'as_epq'], DispReferrer2_Google_cache],
450
+ [%r{\Ahttp://.*?\bgoogle\.([^/]+)/.*url}i, '".#{$1}のGoogleのURL検索?"', ['as_q', 'q'], DispReferrer2_Google_cache],
451
+ [%r{\Ahttp://.*?\bgoogle/search}i, '"たぶんGoogle検索"', ['as_q', 'q'], DispReferrer2_Google_cache],
452
+ [%r{\Ahttp://eval.google\.([^/]+)}i, '".#{$1}のGoogle Accounts"', [], nil],
453
+ [%r{\Ahttp://(?:images|www)\.google\.([^/]+)/(?:images|imgres|imglanding)}i, '".#{$1}のGoogleイメージ検索"', ['q'], DispReferrer2_Google_cache],
454
+ [%r{\Ahttp://images\.google\.([^/]+)/imgres}i, '".#{$1}のGoogleイメージ検索"', [:prev], DispReferrer2_Google_cache],
455
+ [%r{\Ahttp://translate\.google\.([^/]+)/translate}i, '".#{$1}のGoogle検索"', [:prev], DispReferrer2_Google_cache],
456
+ ],
457
+ 'yahoo' => [
458
+ [%r{\Ahttp://[^/]+\.rd\.yahoo\.([^/]+)}i, '".#{$1}のYahooのリダイレクタ"', 'split(/\*/)[1]', nil],
459
+ [%r{\Ahttp://srd\.yahoo\.co\.jp/}i, '"Yahooのリダイレクタ"', [], nil],
460
+ [%r{\Ahttp://rd[^/]+\.yahoo\.com/}i, '"Yahooのリダイレクタ"', [], nil], # エンジンは inktomi 製と見た。
461
+ [%r{\Ahttp://([a-z]{2})\.search\.yahoo\.com/}i, '".#{$1}のYahoo!検索"', ['p'], DispReferrer2_Google_cache],
462
+ [%r{\Ahttp://(?:[^bm/]+|blog-search)\.yahoo\.([^/]+)/}i, '".#{$1}のYahoo!検索"', ['p', 'va', 'vp'], DispReferrer2_Google_cache],
463
+ [%r{\Ahttp://wrs\.search\.yahoo\.([^/]+)/(?:.*)\bK=([^/]+)}i, 'keyword=$2; "#{$1}のYahoo!検索"', [], nil],
464
+ [%r{\Ahttp://(?:image-search\.yahoo\.co\.jp/(?:search|detail)|images\.search\.yahoo\.co\.jp/bin/(?:search|query))}, '".co.jpのYahoo!画像検索"', ['p'], DispReferrer2_Google_cache],
465
+ [%r{\Ahttp://images\.search\.yahoo\.(:?com|co\.jp)/search/images(?:/view)?}, '".comのYahoo!画像検索"', ['p'], DispReferrer2_Google_cache],
466
+ ],
467
+ 'yahoofs' => [[%r{\Ahttp://cache\.yahoofs\.jp/}i, '"Yahoo!検索"', ['w'], DispReferrer2_Yahoofs]],
468
+ 'netscape' => [[%r{\Ahttp://[^/]+\.netscape\.([^/]+)/}i, '".#{$1}のNetscape検索"', ['search', 'query'], DispReferrer2_Google_cache]],
469
+ 'msn' => [[%r{\Ahttp://[^/]+\.MSN\.([^/]+)/}i, '".#{$1}のMSNサーチ"', ['q', 'MT'], nil ]],
470
+ 'bing' => [[%r{\Ahttp://(www|jp)\.bing\.com/}i, '"Bing検索"', ['q'], nil ]],
471
+ 'auone' => [[%r{\Ahttp://search\.auone.jp/}i, '"auOne検索"', ['q'], nil ]],
472
+ 'metacrawler' => [[%r{\Ahttp://[^/]+\.metacrawler.com/}i, '"MetaCrawler"', ['q'], nil ]],
473
+ 'metabot' => [[%r{\Ahttp://[^/]+\.metabot\.ru/}i, '"MetaBot.ru"', ['st'], nil ]],
474
+ 'altavista' => [[%r{\Ahttp://(?:[^/]+\.)?altavista\.([^/]+)/}i, '".#{$1}のAltaVista検索"', ['q'], nil ]],
475
+ 'infoseek' => [
476
+ [%r{\Ahttp://(www\.)?infoseek\.co\.jp/}i, '"Infoseek"', ['qt'], nil],
477
+ [%r{\Ahttp://search\d*\.www\.infoseek\.co\.jp/(?:[IO]Titles|Seek|Web)}, '"Infoseekハイブリッド検索"', ['qt'], nil],
478
+ ],
479
+ 'odn' => [[%r{\Ahttp://[^/]+\.odn\.ne\.jp/}i, '"ODN検索"', ['QueryString', 'key'], nil ]],
480
+ 'lycos' => [[%r{\Ahttp://[^/]+\.lycos\.([^/]+)/}i, '".#{$1}のLycos"', ['query', 'q', 'qt'], nil ]],
481
+ 'fresheye' => [[%r{\Ahttp://[^/]+\.fresheye}i, '"フレッシュアイ"', ['kw'], nil ]],
482
+ 'goo' => [
483
+ [%r{\Ahttp://((www|ocn|dictionary|kids|eco|oshiete|(?:[^/]+\.)?search|(?:[^/]+\.)?blog|community|machi|bb|dir|channel|ocnsearch)\.)?goo\.ne\.jp/}i, '"goo"', ['MT'], nil ],
484
+ [%r{\Ahttp://bsearch\.goo\.ne\.jp/(?:movie\.jsp|video/)}i, '"goo動画検索"', ['MT'], nil ],
485
+ [%r{\Ahttp://bsearch\.goo\.ne\.jp/audio\.jsp}i, '"goo音楽検索"', ['MT'], nil ],
486
+ [%r{\Ahttp://bsearch\.goo\.ne\.jp/(?:image|imgdt)\.jsp}i, '"goo画像検索"', ['MT'], nil ],
487
+ [%r{\Ahttp://(?:[^/]+\.)?image\.goo\.ne\.jp/}i, '"goo画像検索"', ['MT'], nil ],
488
+ [%r{\Ahttp://(?:[^/]+\.)?mobile\.goo\.ne\.jp/search(?:_i)?.jsp}i, '"gooケータイサイト検索"', ['MT'], nil ],
489
+ [%r{\Ahttp://((www|ocn|dictionary|kids|eco|oshiete|(?:[^/]+\.)?search|community|machi|bb|dir|channel|ocnsearch)\.)?goo\.ne\.jp/}i, '"goo"', ['MT'], nil ],
490
+ ],
491
+ 'nifty' => [
492
+ [%r{\Ahttp://search\.nifty\.com/}i, '"@nifty/@search"', ['q', 'Text', 'text'], DispReferrer2_Google_cache],
493
+ [%r{\Ahttp://srchnavi\.nifty\.com/}i, '"@niftyのリダイレクタ"', ['title'], nil ],
494
+ [%r{\Ahttp://azby\.search\.nifty\.com/}i, '"AzbyClub"', ['Text'], nil ],
495
+ ],
496
+ 'eniro' => [[%r{\Ahttp://[^/]+\.eniro\.se/}i, '"Eniro"', ['q'], DispReferrer2_Google_cache]],
497
+ 'excite' => [[%r{\Ahttp://[^/]+\.excite\.([^/]+)/}i, '".#{$1}のExcite"', ['search', 's', 'query', 'qkw'], nil ]],
498
+ 'biglobe' => [
499
+ [%r{\Ahttp://(?:[^/]+\.)?search\.biglobe\.ne\.jp/}i, '"BIGLOBEサーチ"', ['q'], nil ],
500
+ [%r{\Ahttp://(?:[^/]+\.)?search\.biglobe\.ne\.jp/}i, '"BIGLOBEサーチ"', [], nil ],
501
+ ],
502
+ 'dion' => [[%r{\Ahttp://dir\.dion\.ne\.jp/}i, '"Dion"', ['QueryString', 'key'], nil ]],
503
+ 'naver' => [[%r{\Ahttp://[^/]+\.naver\.co\.jp/}i, '"NAVER Japan"', ['query'], nil ]],
504
+ 'webcrawler' => [[%r{\Ahttp://[^/]+\.webcrawler\.com/}i, '"WebCrawler"', ['qkw'], nil ]],
505
+ 'euroseek' => [[%r{\Ahttp://[^/]+\.euroseek\.com/}i, '"Euroseek.com"', ['string'], nil ]],
506
+ 'aol' => [
507
+ [%r{\Ahttp://[^/]+\.aol\.}i, '"AOLサーチ"', ['query', 'query_contain'], nil ],
508
+ [%r{\Ahttp://aolsearch\.[^/]+\.aol\.com/redir_convert\.adp}i, '"AOLサーチ"', ['query_contain'], nil]
509
+ ],
510
+ 'alltheweb' => [
511
+ [%r{\Ahttp://[^/]+\.alltheweb\.com/}i, '"AlltheWeb.com"', ['q'], nil ],
512
+ [%r{\Ahttp://[^/]+\.alltheweb\.com/}i, '"AlltheWeb.com"', [], nil ],
513
+ ],
514
+ 'kobe-u' => [
515
+ [%r{\Ahttp://bach\.scitec\.kobe-u\.ac\.jp/cgi-bin/metcha\.cgi}i, '"メッチャ検索エンジン"', ['q'], nil ],
516
+ [%r{\Ahttp://bach\.istc\.kobe-u\.ac\.jp/cgi-bin/metcha\.cgi}i, '"メッチャ検索エンジン"', ['q'], nil ],
517
+ ],
518
+ 'tocc' => [[%r{\Ahttp://www\.tocc\.co\.jp/search/}i, '"TOCC/Search"', ['QRY'], nil ]],
519
+ 'yappo' => [[%r{\Ahttp://i\.yappo\.jp/}i, '"iYappo"', [], nil ]],
520
+ 'suomi24' => [[%r{\Ahttp://[^/]+\.suomi24\.([^/]+)/.*query}i, '"Suomi24"', ['q'], DispReferrer2_Google_cache]],
521
+ 'earthlink' => [[%r{\Ahttp://search\.earthlink\.net/search}i, '"EarthLink Search"', ['as_q', 'q', 'query'], DispReferrer2_Google_cache]],
522
+ 'infobee' => [[%r{\Ahttp://infobee\.ne\.jp/}i, '"新鮮情報検索"', ['MT'], nil ]],
523
+ 't-online' => [[%r{\Ahttp://brisbane\.t-online\.de/}i, '"T-Online"', ['q'], DispReferrer2_Google_cache]],
524
+ 'walla' => [[%r{\Ahttp://find\.walla\.co\.il/}i, '"Walla! Channels"', ['q'], nil ]],
525
+ 'mysearch' => [[%r{\Ahttp://[^/]+\.mysearch\.com/}i, '"My Search"', ['searchfor'], nil ]],
526
+ 'jword' => [[%r{\Ahttp://[^/]+\.jword\.jp/}i, '"JWord"', ['name', 'q'], nil ]],
527
+ 'nytimes' => [[%r{\Ahttp://query\.nytimes\.com/search}i, '"New York Times: Search"', ['as_q', 'q', 'query'], DispReferrer2_Google_cache]],
528
+ 'aaacafe' => [[%r{\Ahttp://search\.aaacafe\.ne\.jp/search}i, '"AAA!CAFE"', ['key'], nil]],
529
+ 'virgilio' => [[%r{\Ahttp://search\.virgilio\.it/search}i, '"VIRGILIO Ricerca"', ['qs'], nil]],
530
+ 'ceek' => [[%r{\Ahttp://www\.ceek\.jp/}i, '"ceek.jp"', ['q'], nil]],
531
+ 'cnn' => [[%r{\Ahttp://websearch\.cnn\.com/}i, '"CNN.com"', ['query', 'as_q', 'q', 'as_epq'], DispReferrer2_Google_cache]],
532
+ 'webferret' => [[%r{\Ahttp://webferret\.search\.com/}i, '"WebFerret"', 'split(/,/)[1]', nil]],
533
+ 'eniro' => [[%r{\Ahttp://www\.eniro\.se/}i, '"Eniro"', ['query', 'as_q', 'q'], DispReferrer2_Google_cache]],
534
+ 'passagen' => [[%r{\Ahttp://search\.evreka\.passagen\.se/}i, '"Eniro"', ['q', 'as_q', 'query'], DispReferrer2_Google_cache]],
535
+ 'redbox' => [[%r{\Ahttp://www\.redbox\.cz/}i, '"RedBox"', ['srch'], nil]],
536
+ 'odin' => [[%r{\Ahttp://odin\.ingrid\.org/}i, '"ODiN検索"', ['key'], nil]],
537
+ 'kensaku' => [[%r{\Ahttp://www\.kensaku\.}i, '"kensaku.jp検索"', ['key'], nil]],
538
+ 'hotbot' => [[%r{\Ahttp://www\.hotbot\.}i, '"HotBot Web Search"', ['MT'], nil ]],
539
+ 'searchalot' => [[%r{\Ahttp://www\.searchalot\.}i, '"Searchalot"', ['q'], nil ]],
540
+ 'cometsystems' => [[%r{\Ahttp://search\.cometsystems\.com/}i, '"Comet Web Search"', ['qry'], nil ]],
541
+ 'bulkfeeds' => [
542
+ [%r{\Ahttp://bulkfeeds\.net/app/search2}i, '"Bulkfeeds: RSS Directory & Search"', ['q'], nil ],
543
+ [%r{\Ahttp://bulkfeeds\.net/app/similar}i, '"Bulkfeeds Similarity Search"', ['url'], nil ],
544
+ ],
545
+ 'answerbus' => [
546
+ [%r{\Ahttp://www\.answerbus\.com/}i, '"AnswerBus"', [], nil ],
547
+ [%r{\Ahttp://answerbus\.coli\.uni-sb\.de/cgi-bin/answerbus/answer.cgi}i, '"AnswerBus"', [], nil ],
548
+ ],
549
+ 'dogplile' => [[%r{\Ahttp://www.\dogpile\.com/info\.dogpl/search/web/}i, '"dogpile"', [], nil ]],
550
+ 'www' => [[%r{\Ahttp://www\.google/search}i, '"Google検索?"', [:prev, 'as_q', 'q'], DispReferrer2_Google_cache]], # TLD missing
551
+ 'planet' => [[%r{\Ahttp://www\.planet\.nl/planet/}i, '"Planet-Zoekpagina"', ['googleq', 'keyword'], DispReferrer2_Google_cache]], # googleq parameter has a strange prefix
552
+ 'dcn' => [[%r{\Ahttp://www\.dcn\.to/~comment/cgi-bin/commenton\.cgi}i, '"メタサーチCOMMENTON"', ['q'], nil ]],
553
+ 'ask' => [
554
+ [%r{\Ahttp://ask\.jp/web.asp}i, '"ask.jp"', ['q'], nil ],
555
+ [%r{\Ahttp://jp\.ask\.com}i, '"ask.com"', ['q'], nil],
556
+ ],
557
+ 'searchscout' => [[%r{\Ahttp://results\.searchscout\.com/search}i, '"SearchSout"', ['k'], nil ]],
558
+ 'inktomi' => [[%r{\Ahttp://rdrw1.inktomi.com/click}i, '"inktomi のリダイレクタ"', [], nil]],
559
+ '3721' => [[%r{\Ahttp://(?:seek|nmsearch)\.3721\.com/}i, '"3721网頁搜索"', ['p','name'], nil]],
560
+ 'yisou' => [[%r{\Ahttp://www\.yisou\.com/}i, '"一搜"', ['p'], nil]],
561
+ 'devilfinder' => [[%r{\Ahttp://www\.devilfinder\.com/find.php}i, '"The Devilfinder"', ['q'], nil]],
562
+ 'lyricsuniverse' => [[%r{\Ahttp://www\.lyricsuniverse\.com/}, '"LYRICS Universe"', [], nil]],
563
+ 'vivisimo' => [[%r{\Ahttp://[^/]+\.vivisimo\.com/search}i, '"Vivisimo"', [], nil]],
564
+ 'a9' => [[%r{\Ahttp://a9\.com/}i, '"A9"', ['q'], nil]],
565
+ 'nttrd' => [[%r{\Ahttp://labs\.nttrd\.com/cgi-bin/index\.cgi}, '"gooラボ"', ['q'], nil]],
566
+ 'whatis' => [[%r{\Ahttp://whatis\.techtarget\.com/wsearchResults/}i, '"WhatIs.com | web search"', ['query'], nil]],
567
+ 'comcast' => [[%r{\Ahttp://www\.comcast\.net/qry/websearch}i, '"COMCAST"', ['query'], nil]],
568
+ 'mywebsearch' => [[%r{\Ahttp://www\.mywebsearch\.com/jsp/GGmain.jsp}i, '"My Web Search"', ['seachfor'], nil]],
569
+ 'wisenut' => [[%r{\Ahttp://www\.wisenut\.com/search/query.dll}, '"WiseNut"', ['q'], nil]],
570
+ 'livedoor' => [[%r{\Ahttp://(sf|www|search)\.livedoor\.}i, '"Livedoor"', ['q'], nil ]],
571
+ 'tkensaku' => [[%r{\Ahttp://www\.tkensaku\.com/sclient\.cgi}i, '"TKENSAKU"', ['value'], nil]],
572
+ 'yahoofs' => [[%r{\Ahttp://cache\.yahoofs\.jp/(?:search/)?cache}i, '"Yahoo! cache"', ['p', 'w'], nil]],
573
+ 'googlie' => [[%r{\Ahttp://www\.googlie\.com/search}i, '"Google検索(へのリダイレクタ)"', [:prev, 'as_q', 'q'], DispReferrer2_Google_cache]],
574
+ 'toppg' => [[%r{\Ahttp://g\.toppg\.to/search}i, '"Google検索(へのリダイレクタ)"', [:prev, 'as_q', 'q'], DispReferrer2_Google_cache]],
575
+ 'naoya' => [[%r{\Ahttp://naoya\.dyndns\.org/feedback/app/search}i, '"FeedBack"', ['keyword'], nil]],
576
+ 'blogpeople' => [[%r{\Ahttp://bst\.blogpeople\.net/search_result\.jsp}i, '"blogpeople"', ['keyword'], nil]],
577
+ 'matome' => [[%r{\Ahttp://\w+\.matome\.jp/(?:keyword|tag)/(.*(?=\.html\Z)|.*\Z)}i, 'keyword=$1; "まとめ検索"', [], nil]],
578
+ '210' => [[%r{\Ahttp://210\.174\.160\.70/se_root.phtml}i, '"JWord(日本語キーワード)"', ['name'], nil]],
579
+ # % whois 64.233.160
580
+ # NetRange: 64.233.160.0 - 64.233.191.255
581
+ # CIDR: 64.233.160.0/19
582
+ # NetName: GOOGLE
583
+ '233' => [[%r{\Ahttp://64\.233\.(?:1[6-8][0-9]|190|191)\.\d+/}i, '"Google検索"', [:prev, 'as_q', 'q'], DispReferrer2_Google_cache]],
584
+ # % whois 66.102.0.0
585
+ # NetRange: 66.102.0.0 - 66.102.15.255
586
+ # CIDR: 66.102.0.0/20
587
+ # NetName: GOOGLE-2
588
+ '102' => [[%r{\Ahttp://66\.102\.(?:[0-9]|1[0-5])\.\d+/}i, '"Google検索"', [:prev, 'as_q', 'q'], DispReferrer2_Google_cache]],
589
+ # other google candidates:
590
+ # % whois 216.239.37.104
591
+ # NetRange: 216.239.32.0 - 216.239.63.255
592
+ # CIDR: 216.239.32.0/19
593
+ # NetName: GOOGLE
594
+ '216' => [[%r{\Ahttp://216\.239\.(?:3[2-9]|[4-5]\d|6[0-3])\.\d+/}i, '"Google検索"', [:prev, 'as_q', 'q'], DispReferrer2_Google_cache]],
595
+ # % whois 72.14.203.104
596
+ # NetRange: 72.14.192.0 - 72.14.239.255
597
+ # CIDR: 72.14.192.0/19, 72.14.224.0/20
598
+ # NetName: GOOGLE
599
+ '14' => [[%r{\Ahttp://72\.14\.(?:19[2-9]|2\d\d)\.\d+/}i, '"Google検索"', [:prev, 'as_q', 'q'], DispReferrer2_Google_cache]],
600
+ # % whois 66.249.93.104
601
+ # NetRange: 66.249.64.0 - 66.249.95.255
602
+ # CIDR: 66.249.64.0/19
603
+ # NetName: GOOGLE
604
+ '249' => [[%r{\Ahttp://66\.249\.(?:6[4-9]|[7-8]\d|9[0-5])\.\d+/}i, '"Google検索"', [:prev, 'as_q', 'q'], DispReferrer2_Google_cache]],
605
+ 'ezweb' => [[%r{\Ahttp://ezsch\.ezweb\.ne\.jp/search/}i, '"EZweb検索"', ['query'], nil]],
606
+ 'overture' => [[%r{\Ahttp://(?:\w+\.)?overture\.com/}i, '"Overture検索"', ['Keywords'], nil]],
607
+ 'multimeta' => [[%r{\Ahttp://(?:\w+\.)?multimeta\.com/}i, '"Multimeta検索"', ['suchbegriff'], nil]],
608
+ 'starware' => [[%r{\Ahttp://search\.starware\.com/}i, '"Starware検索"', ['qry'], nil]],
609
+ 'rambler' => [[%r{\Ahttp://\w+\.rambler\.ru/}i, '"Rambler"', ['words'], nil]],
610
+ 'technorati' => [
611
+ [%r{\Ahttp://www\.technorati\.jp\/search\/search\.html}i, '"テクノラティ"', ['query'], nil],
612
+ [%r{\Ahttp://www\.technorati\.jp\/search\/(.*)}i, 'keyword=$1; "テクノラティ"', [], nil],
613
+ ],
614
+ 'pagesupli' => [
615
+ [%r{\Ahttp://www\.pagesupli\.com/cgi-bin/nph-image.exe}i, '"pageone検索"', ['q'], nil],
616
+ [%r{\Ahttp://www\.pagesupli\.com/\w+/(.*)}i, 'keyword=$1; "pageone検索"', [], nil],
617
+ ],
618
+ 'yahoogle' => [[%r{\Ahttp://www\.yahoogle\.jp/(?:yahoogle|google|yahoo)-\d+-(.+)\.html\Z}i, 'keyword=$1; "yahoogle!"', [], nil]],
619
+ # $ whois 209.85.165.104
620
+ # NetRange: 209.85.128.0 - 209.85.255.255
621
+ # CIDR: 209.85.128.0/17
622
+ # NetName: GOOGLE
623
+ '85' => [[%r{\Ahttp://209\.85\.(?:12[8-9]|1[3-9]\d|2\d\d)\.\d+/}i, '"Google検索"', [:prev, 'as_q', 'q'], DispReferrer2_Google_cache]],
624
+ 'chew' => [[%r{\Ahttp://blog\.chew\.jp/result/(?:.*/)?(.+)}, 'keyword=$1; "YGブログ検索"', [], nil]],
625
+ 'x0' => [[%r{\Ahttp://bloger\.x0\.com/result/(?:.*/)?(.+)}, 'keyword=$1; "YGブログ検索"', [], nil]],
626
+ 'wordtantei' => [[%r{\Ahttp://wordtantei\.com/result/(?:.*/)?(.+)}, 'keyword=$1; "ワード探偵"', [], nil]],
627
+ 'sfa-cms' => [[%r{\Ahttp://www\.sfa-cms\.(?:com|net)/word/(?:.*/)?(.+)}, 'keyword=$1; "入れ⇔替え検索"', [], nil]],
628
+ 'hatena' => [[%r{\Ahttp://search\.hatena\.ne\.jp/}i, '"はてな検索"', ['word'], nil]],
629
+ 'live' => [
630
+ [%r{\Ahttp://search\.live\.com/results\.aspx}i, '"Live Search"', ['q'], nil],
631
+ [%r{\Ahttp://search\.live\.com/images/results\.aspx}i, '"Live Search(画像)"', ['q'], nil],
632
+ [%r{\Ahttp://search\.live\.com/news/results\.aspx}i, '"Live Search(ニュース)"', ['q'], nil],
633
+
634
+ ],
635
+ 'rakuten' => [[%r{\Ahttp://websearch\.rakuten\.co\.jp}i, '"楽天ウェブ検索"', ['qt'], nil]],
636
+ 'luna' => [[%r{\Ahttp://(:?s|ja\.msearch)\.luna\.tv/search\.aspx}i, '"luna"', ['q'], nil]],
637
+ }
638
+
639
+ # Local Variables:
640
+ # mode: ruby
641
+ # indent-tabs-mode: t
642
+ # tab-width: 3
643
+ # ruby-indent-level: 3
644
+ # End: