Plaggerの中身

肝はPlagger.pm のrun()

Pluginモジュールはそれぞれ,フックをPlaggerモジュールに登録してる.Plaggerがフックを使う順番をまとめると次のようになっていた.

subscription.load
for type (subscription->types)
  aggregator.aggregate.TYPE
aggregator.finalize

for feed (update->feeds)
  for entry (feed->entries)
    update.entry.fixup
  update.feed.fixup
update.fixup

smartfeed.init
for feed (update->feeds)
  smartfeed.entry
smartfeed.finalize

publish.init
for feed (update->feeds)
  for entry (feed->entries)
    publish.entry.fixup
  publish.feed
  for entry (feed->entries)
    publish.entry
  publish.finalize

ここで,"xxx.xxx"というのがフックの名前,文法は適当.ちなみに"aggregator.aggregate.TYPE"でTYPEは変数.ユーザが作成した任意の文字列が入っている.なんとなく,わかったようなわからないような感じなので,これらのフックがどのモジュールで使われているかを調べてみた.

フックフック

Plagger-0.5.5 で,Plugin配下のモジュールがどのフックを使っているのかを調べたのが以下のリスト

--- hook subscription.load ---

./CustomFeed/Mixi.pm
./CustomFeed/Mailman.pm
./CustomFeed/Yahoo360JP.pm
./CustomFeed/Frepa.pm
./CustomFeed/POP3.pm
./Subscription/OPML.pm
./Subscription/Bloglines.pm
./Subscription/HatenaRSS.pm
./Subscription/Odeo.pm
./Subscription/Config.pm

--- hook aggregator.aggregate.TYPE ---

./CustomFeed/Mixi.pm         TYPE=mixi
./CustomFeed/Mailman.pm      TYPE=mailman
./CustomFeed/Yahoo360JP.pm   TYPE=yahoo360jp
./CustomFeed/Frepa.pm        TYPE=frepa
./CustomFeed/POP3.pm         TYPE=pop3
./Subscription/Bloglines.pm  TYPE=bloglines
./Aggregator/Xango.pm        TYPE=feed
./Aggregator/Simple.pm       TYPE=feed

--- hook aggregator.finalize ---

./Aggregator/Xango.pm

--- hook update.entry.fixup ---

./Filter/StripRSSAd.pm
./Filter/FloatingDateTime.pm
./Filter/2chNewsokuTitle.pm
./Filter/DeliciousFeedTags.pm
./Filter/ResolveRelativeLink.pm
./Filter/TTP.pm
./Filter/Regexp.pm
./Filter/HatenaBookmarkTag.pm
./Filter/Delicious.pm
./Filter/HatenaDiaryKeywordLink.pm
./Filter/RSSTimeZoneString.pm
./Filter/BulkfeedsTerms.pm
./Filter/FeedBurnerPermalink.pm

--- hook update.feed.fixup ---

./Filter/HatenaBookmarkUsersCount.pm
./Filter/tDiaryComment.pm

--- hook update.fixup ---

./Filter/URLBL.pm

--- hook smartfeed.init ---

./SmartFeed.pm

--- hook smartfeed.entry ---

./SmartFeed.pm

--- hook smartfeed.finalize ---

./SmartFeed.pm

--- hook publish.init ---

./Publish/Delicious.pm
./Publish/HatenaBookmark.pm
./Publish/Gmail.pm
./Notify/Campfire.pm
./Notify/Growl.pm

--- hook publish.entry.fixup ---

./Publish/Delicious.pm
./Publish/HatenaBookmark.pm
./Widget/HatenaBookmarkUsersCount.pm
./Widget/Delicious.pm
./Widget/HatenaBookmark.pm

--- hook publish.feed ---

./Search/Rast.pm
./Search/Namazu.pm
./Publish/Pipe.pm
./Publish/MTWidget.pm
./Publish/Gmail.pm
./Publish/Feed.pm
./Publish/CHTML.pm
./Publish/PSP.pm
./Publish/PDF.pm
./Publish/Speech.pm
./Publish/Debug.pm
./Publish/JavaScript.pm
./Notify/MSAgent.pm
./Notify/Eject.pm
./Notify/IRC.pm

--- hook publish.entry ---

./Publish/Spotlight.pm
./Publish/Delicious.pm
./Publish/HatenaBookmark.pm
./Notify/Campfire.pm
./Notify/Growl.pm
./Widget/HatenaBookmarkUsersCount.pm
./Widget/Delicious.pm
./Widget/HatenaBookmark.pm

--- hook publish.finalize ---

./Search/Rast.pm
./Search/Namazu.pm
./Publish/MTWidget.pm
./Publish/CHTML.pm
./Publish/PSP.pm
./Publish/Speech.pm
./Notify/Eject.pm

こうやってみると,それぞれのフックで何をさせたいのかがなんとなく理解できるような気が.あ,smartfeedはこれだけで完結してて,まだ中身を見ていないのでわからない.

ためいき

それにしても,0.5.6が出てるよ.中身変わっちゃってたりするのかなぁ〜