Plagger の動作フェーズについては mizzy.org : Plagger プラグインの実行フェーズ を参照。
で、customfeed.handle とか aggregator.*系のフェーズを
crawler.init
crawler.crawl
crawler.finalize
# この二つはページをパースするときに呼ばれる
crawler.filter.feed
crawler.entry.fixup
こんな感じにして、Plagger::FeedParser をプラグイン化。Plagger::Plugin::FeedParser 系は基本的に crawler.filter.feed で動作して、run_hook_once で呼ばれて、crawler でゲットしてきたデータを Plagger::Feed に変換する、と言う感じ。
これだと今の Plagger の Aggregator::*系でデータとって来たけどパースできなかったから破棄、そのあと CustomFeed::Config でもう一回 get してパースしてごにょごにょっていう無駄がなくなると思う。あーでも Cache 使ってる場合は問題ないかな。あとこの辺り rule で何とかできそう。
あと CustomFeed::Config は crawler.filter.feed、Filter::EntryFullText は crawler.entry.fixup で動作させれば良い感じ。
と言うのを考えたんだけど、なんかいまいち。つーか Plagger は基本的に Feed をパースするんだから、Plagger::FeedParser プラグイン化しなくてもよくね?とか。あと自分が気がついてない問題とか有りそう。
#FIXME