昨日書いた改造案はどうしたら良いんだろう、と言うことを今日遠出をしているときに考えてた。
で、こうなった。
aggregator.parse
aggregator.filter.'formatName'
aggregator.entry.fixup
説明するっていうか忘れないようにまとめると、
Aggregator系のプラグインでaggregator.filter.feed、aggregator.entry.fixupを行うのを廃止、代わりにaggregator.parseフェーズをrun_hook_onceで実行して、なんらかの形でPlagger::Feedを取得、そのあと$context->update->add( $feed )する。
で、aggregator.parseフェーズではまず、渡されたデータを解析する前に、aggregator.filter.'formatName'を実行する。RSSやAtomだったらaggregator.filter.feed、HTMLだったらaggregator.filter.htmlとか。
で、aggregator.filter.*でデータソースを修正してから、実際に解析してPlagger::FeedにPlagger::Entryを詰め込む。その際にaggregator.entry.fixupを実行する。
と言うのが結構スマートだと思う。
だめだ、眠い。