diff options
author | Toshiaki Asai <toshi.alternative@gmail.com> | 2016-09-11 07:52:40 +0900 |
---|---|---|
committer | Toshiaki Asai <toshi.alternative@gmail.com> | 2016-10-03 00:19:03 +0900 |
commit | a4c8a984acbc38f8be9ad37f7b47c58387c6f06e (patch) | |
tree | 6e8e5bccbfe50433a306aebe013cfa0f3000e474 /core | |
parent | 579d9e80db1abb67e2101fd651acb855f6921ebc (diff) | |
download | mikutter-a4c8a984acbc38f8be9ad37f7b47c58387c6f06e.tar.gz |
Retriever::Model.handle を実装 refs #866
Diffstat (limited to 'core')
-rw-r--r-- | core/lib/retriever/model.rb | 30 | ||||
-rw-r--r-- | core/message.rb | 2 | ||||
-rw-r--r-- | core/user.rb | 4 |
3 files changed, 35 insertions, 1 deletions
diff --git a/core/lib/retriever/model.rb b/core/lib/retriever/model.rb index c4c6964b..9b8ba1e5 100644 --- a/core/lib/retriever/model.rb +++ b/core/lib/retriever/model.rb @@ -147,7 +147,7 @@ class Retriever::Model reply: reply, myself: myself }.freeze - Plugin.create(:"retriever_#{@slug}") do + plugin do filter_retrievers do |retrievers| retrievers << retriever_spec [retrievers] @@ -159,6 +159,34 @@ class Retriever::Model Retriever::FieldGenerator.new(self) end + # あるURIが、このModelを示すものであれば真を返す条件 _condition_ を設定する。 + # ==== Args + # [condition] 正規表現など、URIにマッチするもの + # ==== Return + # self + def handle(condition) + model = self + plugin do + filter_model_of_uri do |uri, models| + if condition === uri + models << model + end + [uri, models] + end + end + end + + def plugin + if not @slug + raise Retriever::RetrieverError, "`#{self.class}'.slug is not set." + end + if block_given? + Plugin.create(:"retriever_model_#{@slug}", &Proc.new) + else + Plugin.create(:"retriever_model_#{@slug}") + end + end + # Modelが生成・更新された時に呼ばれるコールバックメソッドです def store_datum(retriever); end diff --git a/core/message.rb b/core/message.rb index ddc4678e..221a5aa2 100644 --- a/core/message.rb +++ b/core/message.rb @@ -60,6 +60,8 @@ class Message < Retriever::Model entity_class Retriever::Entity::TwitterEntity + handle PermalinkMatcher + def self.container_class Messages end diff --git a/core/user.rb b/core/user.rb index 5802b09e..918b0a3d 100644 --- a/core/user.rb +++ b/core/user.rb @@ -8,6 +8,8 @@ class User < Retriever::Model extend Gem::Deprecate include Retriever::Model::Identity + register :twitter_user, name: "Twitter User" + # args format # key | value # --------+----------- @@ -31,6 +33,8 @@ class User < Retriever::Model field.int :statuses_count field.int :friends_count + handle %r[\Ahttps?://twitter.com/[a-zA-Z0-9_]+/?\Z].freeze + def self.system Mikutter::System::User.system end |