earthquake 0.4.7 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +4 -8
- data/VERSION +1 -1
- data/earthquake.gemspec +1 -1
- data/lib/earthquake/commands.rb +26 -8
- data/lib/earthquake/core.rb +1 -1
- data/lib/earthquake/input.rb +6 -1
- data/lib/earthquake/output.rb +9 -5
- data/lib/earthquake/twitter.rb +2 -2
- metadata +1 -1
data/README.md
CHANGED
|
@@ -5,6 +5,8 @@ Twitter Client on Terminal with Streaming API.
|
|
|
5
5
|
|
|
6
6
|
It supports ruby 1.9 only.
|
|
7
7
|
|
|
8
|
+
**We need patches that fix the document to better english!**
|
|
9
|
+
|
|
8
10
|

|
|
9
11
|
|
|
10
12
|
Features
|
|
@@ -71,18 +73,12 @@ The config file is '~/.earthquake/config'.
|
|
|
71
73
|
|
|
72
74
|
The blue is excluded.
|
|
73
75
|
|
|
74
|
-
### Running on debug mode
|
|
75
|
-
|
|
76
|
-
Earthquake.config[:debug] = true
|
|
77
|
-
|
|
78
|
-
デバッグモードで動作しているとき、コードの修正は即座に反映される(正確にはコマンドの実行の直前にリロードされる)。
|
|
79
|
-
|
|
80
76
|
Plugin
|
|
81
77
|
----
|
|
82
78
|
|
|
83
79
|
"~/.earthquake/plugin" is the directory for plugins.
|
|
84
80
|
At launch, Earthquake try to load files under the directory.
|
|
85
|
-
|
|
81
|
+
The block that is specified for Earthquake.init will be reloaded at any command line input.
|
|
86
82
|
|
|
87
83
|
### Defining your commands
|
|
88
84
|
|
|
@@ -155,7 +151,7 @@ The 'm' is a MatchData.
|
|
|
155
151
|
|
|
156
152
|
Earthquake.init do
|
|
157
153
|
completion do |text|
|
|
158
|
-
['
|
|
154
|
+
['jugyo', 'earthquake', '#eqrb'].grep(/^#{Regexp.quote(text)}/)
|
|
159
155
|
end
|
|
160
156
|
end
|
|
161
157
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.4.
|
|
1
|
+
0.4.8
|
data/earthquake.gemspec
CHANGED
data/lib/earthquake/commands.rb
CHANGED
|
@@ -44,7 +44,7 @@ module Earthquake
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
command :mentions do
|
|
47
|
-
puts_items twitter.mentions
|
|
47
|
+
puts_items twitter.mentions
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
command :follow do |m|
|
|
@@ -56,11 +56,11 @@ module Earthquake
|
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
command :recent do
|
|
59
|
-
puts_items twitter.home_timeline
|
|
59
|
+
puts_items twitter.home_timeline
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
command :recent do |m|
|
|
63
|
-
puts_items twitter.user_timeline(:screen_name => m[1])
|
|
63
|
+
puts_items twitter.user_timeline(:screen_name => m[1])
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
command :user do |m|
|
|
@@ -70,7 +70,7 @@ module Earthquake
|
|
|
70
70
|
command :search do |m|
|
|
71
71
|
puts_items twitter.search(m[1])["results"].each { |s|
|
|
72
72
|
s["user"] = {"screen_name" => s["from_user"]}
|
|
73
|
-
s["
|
|
73
|
+
s["_disable_cache"] = true
|
|
74
74
|
words = m[1].split(/\s+/).reject{|x| x[0] =~ /^-|^(OR|AND)$/ }.map{|x|
|
|
75
75
|
case x
|
|
76
76
|
when /^from:(.+)/, /^to:(.+)/
|
|
@@ -80,7 +80,7 @@ module Earthquake
|
|
|
80
80
|
end
|
|
81
81
|
}
|
|
82
82
|
s["_highlights"] = words
|
|
83
|
-
}
|
|
83
|
+
}
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
command %r|^:retweet\s+(\d+)$|, :as => :retweet do |m|
|
|
@@ -107,15 +107,15 @@ module Earthquake
|
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
command :retweeted_by_me do
|
|
110
|
-
puts_items twitter.retweeted_by_me
|
|
110
|
+
puts_items twitter.retweeted_by_me
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
command :retweeted_to_me do
|
|
114
|
-
puts_items twitter.retweeted_to_me
|
|
114
|
+
puts_items twitter.retweeted_to_me
|
|
115
115
|
end
|
|
116
116
|
|
|
117
117
|
command :retweets_of_me do
|
|
118
|
-
puts_items twitter.retweets_of_me
|
|
118
|
+
puts_items twitter.retweets_of_me
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
command :block do |m|
|
|
@@ -130,6 +130,24 @@ module Earthquake
|
|
|
130
130
|
async { twitter.report_spam(m[1]) }
|
|
131
131
|
end
|
|
132
132
|
|
|
133
|
+
command :messages do
|
|
134
|
+
puts_items twitter.messages.each { |s|
|
|
135
|
+
s["user"] = {"screen_name" => s["sender_screen_name"]}
|
|
136
|
+
s["_disable_cache"] = true
|
|
137
|
+
}
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
command :sent_messages do
|
|
141
|
+
puts_items twitter.sent_messages.each { |s|
|
|
142
|
+
s["user"] = {"screen_name" => s["sender_screen_name"]}
|
|
143
|
+
s["_disable_cache"] = true
|
|
144
|
+
}
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
command %r|^:message (\w+)\s+(.*)|, :as => :message do |m|
|
|
148
|
+
async { twitter.message(*m[1, 2]) } if confirm("message '#{m[2]}' to @#{m[1]}")
|
|
149
|
+
end
|
|
150
|
+
|
|
133
151
|
command :reconnect do
|
|
134
152
|
reconnect
|
|
135
153
|
end
|
data/lib/earthquake/core.rb
CHANGED
|
@@ -90,7 +90,7 @@ module Earthquake
|
|
|
90
90
|
EventMachine::run do
|
|
91
91
|
Thread.start do
|
|
92
92
|
while buf = Readline.readline("⚡ ", true)
|
|
93
|
-
Readline::HISTORY.pop if buf.empty?
|
|
93
|
+
Readline::HISTORY.pop if buf.empty? || Readline::HISTORY[-1] == Readline::HISTORY[-2]
|
|
94
94
|
sync { input(buf.strip) }
|
|
95
95
|
end
|
|
96
96
|
end
|
data/lib/earthquake/input.rb
CHANGED
data/lib/earthquake/output.rb
CHANGED
|
@@ -28,7 +28,7 @@ module Earthquake
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def puts_items(items)
|
|
31
|
-
[items].flatten.
|
|
31
|
+
[items].flatten.reverse_each do |item|
|
|
32
32
|
next if filters.any? { |f| f.call(item) == false }
|
|
33
33
|
outputs.each do |o|
|
|
34
34
|
begin
|
|
@@ -83,11 +83,15 @@ module Earthquake
|
|
|
83
83
|
statuses.insert(0, "[#{Time.parse(item["created_at"]).strftime('%Y.%m.%d %X')}]")
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
source = item["source"].u =~ />(.*)</ ? $1 : 'web'
|
|
87
|
-
|
|
88
|
-
text = item["text"].u
|
|
86
|
+
source = item["source"].u =~ />(.*)</ ? $1 : 'web' rescue ''
|
|
87
|
+
|
|
88
|
+
text = item["text"].u
|
|
89
|
+
text.gsub!(/@([0-9A-Za-z_]+)/) do |i|
|
|
89
90
|
i.c(color_of($1))
|
|
90
91
|
end
|
|
92
|
+
text.gsub!(/(?:^#([^\s]+))|(?:\s+#([^\s]+))/) do |i|
|
|
93
|
+
i.c(color_of($1 || $2))
|
|
94
|
+
end
|
|
91
95
|
|
|
92
96
|
if item["_highlights"]
|
|
93
97
|
item["_highlights"].each do |h|
|
|
@@ -102,7 +106,7 @@ module Earthquake
|
|
|
102
106
|
|
|
103
107
|
status = [
|
|
104
108
|
"#{mark}" + "#{statuses.join(" ")}".c(90),
|
|
105
|
-
"#{item["user"]["screen_name"].c(
|
|
109
|
+
"#{item["user"]["screen_name"].c(color_of(item["user"]["screen_name"]))}:",
|
|
106
110
|
"#{text}",
|
|
107
111
|
"#{misc} #{source}".c(90)
|
|
108
112
|
].join(" ")
|
data/lib/earthquake/twitter.rb
CHANGED
|
@@ -7,8 +7,8 @@ module Earthquake
|
|
|
7
7
|
init do
|
|
8
8
|
@twitter = TwitterOAuth::Client.new(config.slice(:consumer_key, :consumer_secret, :token, :secret))
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
next if item["text"].nil? || item["
|
|
10
|
+
output do |item|
|
|
11
|
+
next if item["text"].nil? || item["_disable_cache"]
|
|
12
12
|
item = item.dup
|
|
13
13
|
item.keys.select { |key| key =~ /^_/ }.each { |key| item.delete(key) } # remote optional data like "_stream", "_highlights"
|
|
14
14
|
Earthquake.cache.write("status:#{item["id"]}", item)
|