aboutsummaryrefslogtreecommitdiffstats
path: root/core/plugin/search
diff options
context:
space:
mode:
Diffstat (limited to 'core/plugin/search')
-rw-r--r--core/plugin/search/model/search.rb24
-rw-r--r--core/plugin/search/search.rb10
2 files changed, 30 insertions, 4 deletions
diff --git a/core/plugin/search/model/search.rb b/core/plugin/search/model/search.rb
new file mode 100644
index 00000000..3158bdd7
--- /dev/null
+++ b/core/plugin/search/model/search.rb
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+module Plugin::Search
+ class Search < Retriever::Model
+ register :twitter_search, name: Plugin[:search]._('Twitter検索')
+
+ field.string :query, required: true
+
+ # https://twitter.com/search?q=%23superfuckjp
+ handle ->uri{
+ uri.scheme == 'https' &&
+ uri.host == 'twitter.com' &&
+ uri.path == '/search' &&
+ uri.query.split('&').any?{|r|r.split('=', 2).first == 'q'}
+ } do |uri|
+ _, query = uri.query.split('&').lazy.map{|r| r.split('=', 2) }.find{|k,v| k == 'q' }
+ new(query: CGI.unescape(query))
+ end
+
+ memoize def perma_link
+ URI.parse("https://twitter.com/search?q=#{CGI.escape(self.query)}")
+ end
+ end
+end
diff --git a/core/plugin/search/search.rb b/core/plugin/search/search.rb
index afb912e6..a59ccb26 100644
--- a/core/plugin/search/search.rb
+++ b/core/plugin/search/search.rb
@@ -1,6 +1,11 @@
# -*- coding: utf-8 -*-
+require_relative 'model/search'
Plugin.create :search do
+ intent Plugin::Search::Search do |token|
+ Plugin.call(:search_start, token.model.query)
+ end
+
querybox = ::Gtk::Entry.new()
querycont = ::Gtk::VBox.new(false, 0)
searchbtn = ::Gtk::Button.new(_('検索'))
@@ -37,7 +42,7 @@ Plugin.create :search do
elm.sensitive = querybox.sensitive = true
}.trap{ |e|
error e
- timeline(:search) << Message.new(message: _("検索中にエラーが発生しました (%{error})" % {error: e.to_s}), system: true)
+ timeline(:search) << Mikutter::System::Message.new(description: _("検索中にエラーが発生しました (%{error})" % {error: e.to_s}))
elm.sensitive = querybox.sensitive = true } }
savebtn.signal_connect('clicked'){ |elm|
@@ -46,9 +51,6 @@ Plugin.create :search do
Plugin.call(:saved_search_register, saved_search[:id], query, Service.primary)
}.terminate(_("検索キーワード「%{query}」を保存できませんでした。あとで試してみてください" % {query: query})) }
- Message::Entity.addlinkrule(:hashtags, /(?:#|#)[a-zA-Z0-9_]+/, :search_hashtag){ |segment|
- Plugin.call(:search_start, '#' + segment[:url].match(/\A(?:#|#)?(.+)\Z/)[1])
- }
end