termtter 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -8
- data/Rakefile +13 -3
- data/lib/plugins/command_plus.rb +14 -14
- data/lib/plugins/confirm.rb +10 -4
- data/lib/plugins/countter.rb +18 -18
- data/lib/plugins/db.rb +1 -1
- data/lib/plugins/defaults/alias.rb +69 -0
- data/lib/plugins/defaults/auto_reload.rb +2 -2
- data/lib/plugins/defaults/command_line.rb +9 -0
- data/lib/plugins/defaults/fib.rb +5 -23
- data/lib/plugins/defaults/retweet.rb +17 -13
- data/lib/plugins/defaults/standard_commands.rb +40 -63
- data/lib/plugins/defaults/standard_completion.rb +14 -9
- data/lib/plugins/defaults/stdout.rb +32 -19
- data/lib/plugins/defaults.rb +1 -0
- data/lib/plugins/erb.rb +4 -8
- data/lib/plugins/expand-tinyurl.rb +4 -0
- data/lib/plugins/fibyou.rb +12 -0
- data/lib/plugins/group.rb +19 -20
- data/lib/plugins/hi.rb +15 -0
- data/lib/plugins/hugeurl.rb +1 -1
- data/lib/plugins/irc_gw.rb +53 -5
- data/lib/plugins/itunes.rb +33 -0
- data/lib/plugins/jakigan.rb +30 -0
- data/lib/plugins/list_with_opts.rb +1 -1
- data/lib/plugins/multi_output.rb +34 -0
- data/lib/plugins/multi_post.rb +30 -15
- data/lib/plugins/open.rb +44 -0
- data/lib/plugins/paranoid.rb +11 -0
- data/lib/plugins/quick_exit.rb +9 -0
- data/lib/plugins/replace.rb +54 -0
- data/lib/plugins/saykanji.rb +1 -1
- data/lib/plugins/searchline.rb +44 -0
- data/lib/plugins/tinyurl.rb +7 -1
- data/lib/plugins/train.rb +24 -0
- data/lib/termtter/active_rubytter.rb +39 -0
- data/lib/termtter/api.rb +24 -21
- data/lib/termtter/client.rb +17 -29
- data/lib/termtter/config_setup.rb +27 -2
- data/lib/termtter/config_template.erb +2 -2
- data/lib/termtter/version.rb +1 -1
- data/lib/termtter.rb +9 -4
- data/spec/plugins/db_spec.rb +1 -1
- data/spec/plugins/fib_spec.rb +1 -1
- data/spec/plugins/standard_commands_spec.rb +4 -0
- data/spec/plugins/whois_spec.rb +7 -7
- data/spec/termtter/active_rubytter_spec.rb +70 -0
- metadata +29 -5
@@ -0,0 +1,44 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
config.plugins.searchline.set_default(:interval, 300)
|
4
|
+
|
5
|
+
module Termtter::Client
|
6
|
+
class << self
|
7
|
+
def delete_task(key)
|
8
|
+
@task_manager.delete_task(key) # returns nil if task for key is not exist
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
register_command(
|
13
|
+
:name => :searchline,
|
14
|
+
:exec => lambda {|arg|
|
15
|
+
delete_task(:searchline)
|
16
|
+
if arg == '-d'
|
17
|
+
puts 'Stopped searchline.'
|
18
|
+
else
|
19
|
+
public_storage[:searchline_since_id] = 0
|
20
|
+
add_task(:name => :searchline,
|
21
|
+
:interval => config.plugins.searchline.interval ) do
|
22
|
+
begin
|
23
|
+
statuses = Termtter::API.twitter.search(
|
24
|
+
arg, 'since_id' => public_storage[:searchline_since_id] )
|
25
|
+
unless statuses.empty?
|
26
|
+
print "\e[0G" + "\e[K" unless win?
|
27
|
+
public_storage[:searchline_since_id] = statuses[0].id
|
28
|
+
output(statuses, SearchEvent.new(arg))
|
29
|
+
Readline.refresh_line
|
30
|
+
end
|
31
|
+
rescue Exception => e
|
32
|
+
handle_error(e)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
},
|
37
|
+
:help => ["searchline [TEXT|-d]", "Search for Twitter with auto reload"]
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
# searchline.rb:
|
42
|
+
# Search for Twitter with auto reload like friends_timeline.
|
43
|
+
# Caution:
|
44
|
+
# Be aware of API limit.
|
data/lib/plugins/tinyurl.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
SHORTURL_MAKERS = [
|
4
|
-
{ :host => "
|
4
|
+
{ :host => "api.bit.ly",
|
5
|
+
:format => '/shorten?version=2.0.1&longUrl=%s&login=termtter&apiKey=R_e7f22d523a803dbff7f67de18c109856' },
|
6
|
+
{ :host => "to.ly", :format => '/api.php?longurl=%s' },
|
5
7
|
{ :host => "is.gd", :format => '/api.php?longurl=%s' },
|
8
|
+
{ :host => "tinyurl.com", :format => '/api-create.php?url=%s' },
|
6
9
|
]
|
7
10
|
TINYURL_HOOK_COMMANDS = [:update, :reply]
|
8
11
|
URI_REGEXP = URI.regexp(%w(http https ftp))
|
@@ -27,6 +30,9 @@ Termtter::Client.register_hook(
|
|
27
30
|
res = http_class.new(site[:host]).get(site[:format] % url_enc)
|
28
31
|
if res.code == '200'
|
29
32
|
result = res.body
|
33
|
+
if result =~ /"shortUrl": "(http.*)"/
|
34
|
+
result = $1
|
35
|
+
end
|
30
36
|
break
|
31
37
|
end
|
32
38
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# あ
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
module Termtter::Client
|
4
|
+
def self.train(length)
|
5
|
+
text = "ε="
|
6
|
+
length.times{ text << "⋤⋥" }
|
7
|
+
text
|
8
|
+
end
|
9
|
+
|
10
|
+
register_command(:train, :help => ['train [LENGTH]', 'Post a train']) do |arg|
|
11
|
+
length = arg.empty? ? 1 : arg.to_i
|
12
|
+
result = Termtter::API.twitter.update(train(length))
|
13
|
+
puts "=> " << result.text
|
14
|
+
end
|
15
|
+
|
16
|
+
register_command(:trainyou, :help => ['trainyou [USER] [LENGTH] [(Optional) MESSAGE]', 'Post a train for a user']) do |arg|
|
17
|
+
/(\w+)\s(\d+)(.*)/ =~ arg
|
18
|
+
name = normalize_as_user_name($1)
|
19
|
+
length = $2.to_i
|
20
|
+
msg = $3
|
21
|
+
result = Termtter::API.twitter.update("@#{name} #{train(length)}#{msg}")
|
22
|
+
puts "=> " << result.text
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
gem 'rubytter', '>= 0.6.5'
|
3
|
+
require 'rubytter'
|
4
|
+
|
5
|
+
module Termtter
|
6
|
+
class ActiveRubytter
|
7
|
+
def initialize(data)
|
8
|
+
self.attributes = data
|
9
|
+
end
|
10
|
+
|
11
|
+
def method_missing(name, *args)
|
12
|
+
if @data.key?(name)
|
13
|
+
return @data[name]
|
14
|
+
else
|
15
|
+
super
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def attributes=(raw_hash)
|
20
|
+
@data = {}
|
21
|
+
raw_hash.each do |key, value|
|
22
|
+
key_symbol = key.to_s.to_sym
|
23
|
+
if value.kind_of? Hash
|
24
|
+
@data[key_symbol] = ActiveRubytter.new(raw_hash[key])
|
25
|
+
else
|
26
|
+
@data[key_symbol] = raw_hash[key]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_hash
|
32
|
+
@data.inject({}) do |memo, (key, value)|
|
33
|
+
memo[key] =
|
34
|
+
(value.kind_of? self.class) ? value.to_hash : value
|
35
|
+
memo
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/termtter/api.rb
CHANGED
@@ -16,7 +16,14 @@ module Termtter
|
|
16
16
|
attr_reader :connection, :twitter
|
17
17
|
def setup
|
18
18
|
@connection = Connection.new
|
19
|
-
|
19
|
+
if config.access_token.empty? && config.access_token_secret.empty?
|
20
|
+
@twitter = Rubytter.new(config.user_name, config.password, twitter_option)
|
21
|
+
else
|
22
|
+
consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, :site => 'http://twitter.com')
|
23
|
+
access_token = OAuth::AccessToken.new(consumer, config.access_token, config.access_token_secret)
|
24
|
+
@twitter = OAuthRubytter.new(access_token, twitter_option)
|
25
|
+
config.user_name = @twitter.verify_credentials[:name]
|
26
|
+
end
|
20
27
|
end
|
21
28
|
|
22
29
|
def restore_user
|
@@ -30,26 +37,22 @@ module Termtter
|
|
30
37
|
@twitter = create_twitter(username, password)
|
31
38
|
end
|
32
39
|
|
33
|
-
def
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
{
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
:proxy_user_name => config.proxy.user_name,
|
50
|
-
:proxy_password => config.proxy.password
|
51
|
-
}
|
52
|
-
)
|
40
|
+
def twitter_option
|
41
|
+
{
|
42
|
+
:app_name => config.app_name.empty? ? Termtter::APP_NAME : config.app_name,
|
43
|
+
:host => config.host,
|
44
|
+
:header => {
|
45
|
+
'User-Agent' => 'Termtter http://github.com/jugyo/termtter',
|
46
|
+
'X-Twitter-Client' => 'Termtter',
|
47
|
+
'X-Twitter-Client-URL' => 'http://github.com/jugyo/termtter',
|
48
|
+
'X-Twitter-Client-Version' => Termtter::VERSION
|
49
|
+
},
|
50
|
+
:enable_ssl => config.enable_ssl,
|
51
|
+
:proxy_host => config.proxy.host,
|
52
|
+
:proxy_port => config.proxy.port,
|
53
|
+
:proxy_user_name => config.proxy.user_name,
|
54
|
+
:proxy_password => config.proxy.password
|
55
|
+
}
|
53
56
|
end
|
54
57
|
end
|
55
58
|
end
|
data/lib/termtter/client.rb
CHANGED
@@ -4,7 +4,6 @@ require 'logger'
|
|
4
4
|
require 'termcolor'
|
5
5
|
|
6
6
|
module Termtter
|
7
|
-
|
8
7
|
class CommandNotFound < StandardError; end
|
9
8
|
class CommandCanceled < StandardError; end
|
10
9
|
|
@@ -13,7 +12,6 @@ module Termtter
|
|
13
12
|
@hooks = {}
|
14
13
|
@commands = {}
|
15
14
|
@filters = []
|
16
|
-
@aliases = {}
|
17
15
|
@since_id = nil
|
18
16
|
@task_manager = Termtter::TaskManager.new
|
19
17
|
|
@@ -42,10 +40,6 @@ module Termtter
|
|
42
40
|
Termtter::Client.handle_error(e)
|
43
41
|
end
|
44
42
|
|
45
|
-
def alias(name, value)
|
46
|
-
@aliases[name] = value
|
47
|
-
end
|
48
|
-
|
49
43
|
def public_storage
|
50
44
|
@public_storage ||= {}
|
51
45
|
end
|
@@ -130,17 +124,6 @@ module Termtter
|
|
130
124
|
register_command(command)
|
131
125
|
end
|
132
126
|
|
133
|
-
def add_alias(from, to, confirm = true)
|
134
|
-
if confirm
|
135
|
-
raise 'Already exist' if @aliases[from]
|
136
|
-
end
|
137
|
-
@aliases[from] = to
|
138
|
-
end
|
139
|
-
|
140
|
-
def remove_alias(target)
|
141
|
-
@aliases.delete target
|
142
|
-
end
|
143
|
-
|
144
127
|
# statuses => [status, status, ...]
|
145
128
|
# status => {
|
146
129
|
# :id => status id,
|
@@ -159,7 +142,7 @@ module Termtter
|
|
159
142
|
statuses = statuses.sort_by(&:id)
|
160
143
|
call_hooks(:pre_filter, statuses, event)
|
161
144
|
|
162
|
-
filtered = apply_filters_for_hook(:filter_for_output, statuses.map(&:
|
145
|
+
filtered = apply_filters_for_hook(:filter_for_output, statuses.map(&:clone), event)
|
163
146
|
|
164
147
|
@filters.each do |f| # TODO: code for compatibility. delete someday.
|
165
148
|
filtered = f.call(filtered, event)
|
@@ -312,16 +295,22 @@ module Termtter
|
|
312
295
|
@init_block = block
|
313
296
|
end
|
314
297
|
|
298
|
+
def load_plugins
|
299
|
+
plug 'defaults'
|
300
|
+
plug 'devel' if config.devel
|
301
|
+
plug config.system.load_plugins
|
302
|
+
end
|
303
|
+
|
304
|
+
def eval_init_block
|
305
|
+
@init_block.call(self) if @init_block
|
306
|
+
end
|
307
|
+
|
315
308
|
def run
|
316
309
|
load_config()
|
317
310
|
Termtter::API.setup()
|
318
311
|
setup_logger()
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
plug 'defaults'
|
323
|
-
plug 'devel' if config.devel
|
324
|
-
plug config.system.load_plugins
|
312
|
+
load_plugins()
|
313
|
+
eval_init_block()
|
325
314
|
|
326
315
|
config.system.eval_scripts.each do |script|
|
327
316
|
begin
|
@@ -356,14 +345,13 @@ module Termtter
|
|
356
345
|
def confirm(message, default_yes = true, &block)
|
357
346
|
pause # TODO: TaskManager から呼ばれるならこれいらないなぁ
|
358
347
|
|
359
|
-
|
348
|
+
prompt =
|
360
349
|
if default_yes
|
361
|
-
|
362
|
-
/^y?$/i =~ Readline.readline(prompt, false)
|
350
|
+
"\"#{message}".strip + "\" [Y/n] "
|
363
351
|
else
|
364
|
-
|
365
|
-
/^n?$/i =~ Readline.readline(prompt, false)
|
352
|
+
"\"#{message}".strip + "\" [N/y] "
|
366
353
|
end
|
354
|
+
result = !!(/^y?$/i =~ Readline.readline(prompt, false))
|
367
355
|
|
368
356
|
if result && block
|
369
357
|
block.call
|
@@ -5,10 +5,32 @@ require 'erb'
|
|
5
5
|
module Termtter
|
6
6
|
module ConfigSetup
|
7
7
|
module_function
|
8
|
+
# TODO: move this method to suitable place
|
9
|
+
def open_brawser(url)
|
10
|
+
case RUBY_PLATFORM
|
11
|
+
when /linux/
|
12
|
+
system 'firefox', url
|
13
|
+
when /mswin(?!ce)|mingw|bccwin/
|
14
|
+
system 'explorer', url
|
15
|
+
else
|
16
|
+
system 'open', url
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
8
20
|
def run
|
21
|
+
puts 'connecting to twitter...'
|
22
|
+
|
23
|
+
consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, :site => 'http://twitter.com')
|
24
|
+
request_token = consumer.get_request_token
|
25
|
+
|
26
|
+
open_brawser(request_token.authorize_url)
|
27
|
+
sleep 2
|
28
|
+
|
9
29
|
ui = create_highline
|
10
|
-
|
11
|
-
|
30
|
+
pin = ui.ask('Enter PIN: ')
|
31
|
+
access_token = request_token.get_access_token(:oauth_verifier => pin)
|
32
|
+
token = access_token.token
|
33
|
+
secret = access_token.secret
|
12
34
|
|
13
35
|
plugins = Dir.glob(File.expand_path(File.dirname(__FILE__) + "/../plugins/*.rb")).map {|f|
|
14
36
|
f.match(%r|lib/plugins/(.*?).rb$|)[1]
|
@@ -25,6 +47,9 @@ module Termtter
|
|
25
47
|
|
26
48
|
puts "generated: ~/.termtter/config"
|
27
49
|
puts "enjoy!"
|
50
|
+
rescue OAuth::Unauthorized
|
51
|
+
puts 'failed to authentication!'
|
52
|
+
exit 1
|
28
53
|
end
|
29
54
|
end
|
30
55
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
config.
|
4
|
-
config.
|
3
|
+
config.access_token = '<%= token %>'
|
4
|
+
config.access_token_secret = '<%= secret %>'
|
5
5
|
#config.update_interval = 120
|
6
6
|
#config.proxy.host = 'proxy host'
|
7
7
|
#config.proxy.port = '8080'
|
data/lib/termtter/version.rb
CHANGED
data/lib/termtter.rb
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
$KCODE="u" unless Object.const_defined? :Encoding
|
3
|
+
$KCODE = "u" unless Object.const_defined? :Encoding
|
4
4
|
|
5
5
|
$:.unshift(File.dirname(__FILE__)) unless
|
6
6
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
7
7
|
|
8
8
|
require 'rubygems'
|
9
|
+
|
10
|
+
require 'cgi'
|
11
|
+
require 'enumerator'
|
9
12
|
require 'json'
|
10
13
|
require 'net/https'
|
11
14
|
require 'open-uri'
|
12
|
-
require 'cgi'
|
13
|
-
require 'readline'
|
14
|
-
require 'enumerator'
|
15
15
|
require 'optparse'
|
16
|
+
require 'readline'
|
17
|
+
require 'oauth'
|
16
18
|
|
17
19
|
require 'termtter/config'
|
18
20
|
require 'termtter/version'
|
@@ -35,4 +37,7 @@ module Termtter
|
|
35
37
|
config.system.set_default :conf_file, CONF_DIR + '/config'
|
36
38
|
CONF_FILE = config.system.conf_file
|
37
39
|
$:.unshift(Termtter::CONF_DIR)
|
40
|
+
|
41
|
+
CONSUMER_KEY = 'O80mRgLxHgpzB5yVOnxmiA'
|
42
|
+
CONSUMER_SECRET = 'jylXMjnIbfaNKpEQjgcVeZWJFTaKXFnj1RA4qTeEM'
|
38
43
|
end
|
data/spec/plugins/db_spec.rb
CHANGED
data/spec/plugins/fib_spec.rb
CHANGED
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
4
4
|
|
5
5
|
describe Termtter::Client, 'when the plugin fib is loaded' do
|
6
6
|
it 'should add command fib' do
|
7
|
-
Termtter::Client.should_receive(:register_command).
|
7
|
+
Termtter::Client.should_receive(:register_command).once
|
8
8
|
Termtter::Client.plug 'defaults/fib'
|
9
9
|
end
|
10
10
|
|
data/spec/plugins/whois_spec.rb
CHANGED
@@ -3,18 +3,18 @@
|
|
3
3
|
require File.dirname(__FILE__) + '/../spec_helper'
|
4
4
|
|
5
5
|
describe Termtter::Client, 'when the plugin whois is loaded' do
|
6
|
-
it '
|
6
|
+
it 'adds the command whois' do
|
7
7
|
Termtter::Client.should_receive(:register_command).once
|
8
8
|
Termtter::Client.plug 'whois'
|
9
9
|
end
|
10
10
|
|
11
|
-
it 'should be whois define' do
|
11
|
+
it 'should be whois define' do # What does "be whois define" mean?
|
12
12
|
Termtter::Client.plug 'whois'
|
13
|
-
name =
|
14
|
-
ip =
|
15
|
-
|
13
|
+
name = 'jp-in-f104.google.com'
|
14
|
+
ip = '66.249.89.104'
|
15
|
+
|
16
16
|
whois?(name).should == ip
|
17
|
-
whois?(ip).should == name
|
17
|
+
whois?(ip).should == name
|
18
|
+
# FIXME: This spec doesn't pass in Canada
|
18
19
|
end
|
19
|
-
|
20
20
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
4
|
+
require 'termtter/active_rubytter'
|
5
|
+
|
6
|
+
module Termtter
|
7
|
+
describe ActiveRubytter do
|
8
|
+
|
9
|
+
it 'Hashをクラス化できる' do
|
10
|
+
d = ActiveRubytter.new(:name => 'termtter', :age => 16)
|
11
|
+
d.name.should == 'termtter'
|
12
|
+
d.age.should == 16
|
13
|
+
end
|
14
|
+
|
15
|
+
it '元のHashを得られること' do
|
16
|
+
data = { :test => 'test' }
|
17
|
+
d = ActiveRubytter.new(data)
|
18
|
+
d.to_hash.should == data
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '入れ子のHashの処理' do
|
22
|
+
|
23
|
+
before(:all) do
|
24
|
+
@data = {
|
25
|
+
:hoge => "hogehoge",
|
26
|
+
:fuga => "fugafuga",
|
27
|
+
:hage => {
|
28
|
+
:foo => "foofoo",
|
29
|
+
:bar => {
|
30
|
+
:nest => "nestnest"
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
before(:each) do
|
37
|
+
@d = ActiveRubytter.new(@data)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "入れ子のHashをクラス化できる" do
|
41
|
+
@d.should be_instance_of(ActiveRubytter)
|
42
|
+
|
43
|
+
#array.map{ |elem| ActiveRubytter.new(elem)})}
|
44
|
+
end
|
45
|
+
|
46
|
+
it "Hashからクラス化して`.'でアクセスできる" do
|
47
|
+
@d.hoge.should == "hogehoge"
|
48
|
+
|
49
|
+
#array.map{ |elem| ActiveRubytter.new(elem)})}
|
50
|
+
end
|
51
|
+
|
52
|
+
it "Hashからクラス化して`.'で入れ子でもアクセスできる" do
|
53
|
+
@d.hage.foo.should == "foofoo"
|
54
|
+
|
55
|
+
#array.map{ |elem| ActiveRubytter.new(elem)})}
|
56
|
+
end
|
57
|
+
|
58
|
+
it "Hashからクラス化して`.'で入れ子の入れ子でもアクセスできる" do
|
59
|
+
@d.hage.bar.nest.should == "nestnest"
|
60
|
+
|
61
|
+
#array.map{ |elem| ActiveRubytter.new(elem)})}
|
62
|
+
end
|
63
|
+
|
64
|
+
it "入れ子でも元のHashを得られること" do
|
65
|
+
@d.to_hash.should == @data
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: termtter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jugyo
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-10-18 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -41,7 +41,7 @@ dependencies:
|
|
41
41
|
requirements:
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.
|
44
|
+
version: 1.0.0
|
45
45
|
version:
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: rubytter
|
@@ -51,7 +51,17 @@ dependencies:
|
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.9.2
|
55
|
+
version:
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: oauth
|
58
|
+
type: :runtime
|
59
|
+
version_requirement:
|
60
|
+
version_requirements: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 0.3.6
|
55
65
|
version:
|
56
66
|
description: Termtter is a terminal based Twitter client.
|
57
67
|
email: jugyo.org@gmail.com
|
@@ -77,6 +87,7 @@ files:
|
|
77
87
|
- lib/plugins/countter.rb
|
78
88
|
- lib/plugins/curry.rb
|
79
89
|
- lib/plugins/db.rb
|
90
|
+
- lib/plugins/defaults/alias.rb
|
80
91
|
- lib/plugins/defaults/auto_reload.rb
|
81
92
|
- lib/plugins/defaults/command_line.rb
|
82
93
|
- lib/plugins/defaults/exec.rb
|
@@ -93,6 +104,7 @@ files:
|
|
93
104
|
- lib/plugins/exec_and_update.rb
|
94
105
|
- lib/plugins/expand-tinyurl.rb
|
95
106
|
- lib/plugins/fib_filter.rb
|
107
|
+
- lib/plugins/fibyou.rb
|
96
108
|
- lib/plugins/filter.rb
|
97
109
|
- lib/plugins/github-issues.rb
|
98
110
|
- lib/plugins/graduatter.rb
|
@@ -102,6 +114,7 @@ files:
|
|
102
114
|
- lib/plugins/growl2.rb
|
103
115
|
- lib/plugins/hatebu.rb
|
104
116
|
- lib/plugins/hatebu_and_update.rb
|
117
|
+
- lib/plugins/hi.rb
|
105
118
|
- lib/plugins/history.rb
|
106
119
|
- lib/plugins/http_server/favicon.ico
|
107
120
|
- lib/plugins/http_server/index.html
|
@@ -110,6 +123,8 @@ files:
|
|
110
123
|
- lib/plugins/ignore.rb
|
111
124
|
- lib/plugins/irb.rb
|
112
125
|
- lib/plugins/irc_gw.rb
|
126
|
+
- lib/plugins/itunes.rb
|
127
|
+
- lib/plugins/jakigan.rb
|
113
128
|
- lib/plugins/keyword.rb
|
114
129
|
- lib/plugins/l2.rb
|
115
130
|
- lib/plugins/list_with_opts.rb
|
@@ -118,24 +133,29 @@ files:
|
|
118
133
|
- lib/plugins/me.rb
|
119
134
|
- lib/plugins/modify_arg_hook_sample.rb
|
120
135
|
- lib/plugins/msagent.rb
|
136
|
+
- lib/plugins/multi_output.rb
|
121
137
|
- lib/plugins/multi_post.rb
|
122
138
|
- lib/plugins/multi_reply.rb
|
123
139
|
- lib/plugins/notify-send.rb
|
124
140
|
- lib/plugins/notify-send2.rb
|
125
141
|
- lib/plugins/notify-send3.rb
|
142
|
+
- lib/plugins/open.rb
|
126
143
|
- lib/plugins/open_url.rb
|
127
144
|
- lib/plugins/otsune.rb
|
128
145
|
- lib/plugins/outputz.rb
|
146
|
+
- lib/plugins/paranoid.rb
|
129
147
|
- lib/plugins/pause.rb
|
130
148
|
- lib/plugins/pool.rb
|
131
149
|
- lib/plugins/post_exec_hook_sample.rb
|
132
150
|
- lib/plugins/pre_exec_hook_sample.rb
|
133
151
|
- lib/plugins/primes.rb
|
134
152
|
- lib/plugins/protected_filter.rb
|
153
|
+
- lib/plugins/quick_exit.rb
|
135
154
|
- lib/plugins/quicklook.rb
|
136
155
|
- lib/plugins/random.rb
|
137
156
|
- lib/plugins/reblog.rb
|
138
157
|
- lib/plugins/reload.rb
|
158
|
+
- lib/plugins/replace.rb
|
139
159
|
- lib/plugins/reply.rb
|
140
160
|
- lib/plugins/reverse.rb
|
141
161
|
- lib/plugins/say.rb
|
@@ -144,6 +164,7 @@ files:
|
|
144
164
|
- lib/plugins/screen-notify.rb
|
145
165
|
- lib/plugins/screen.rb
|
146
166
|
- lib/plugins/search_url.rb
|
167
|
+
- lib/plugins/searchline.rb
|
147
168
|
- lib/plugins/shell.rb
|
148
169
|
- lib/plugins/sl.rb
|
149
170
|
- lib/plugins/spam.rb
|
@@ -155,6 +176,7 @@ files:
|
|
155
176
|
- lib/plugins/system_status.rb
|
156
177
|
- lib/plugins/timer.rb
|
157
178
|
- lib/plugins/tinyurl.rb
|
179
|
+
- lib/plugins/train.rb
|
158
180
|
- lib/plugins/translation.rb
|
159
181
|
- lib/plugins/trends.rb
|
160
182
|
- lib/plugins/twitpic.rb
|
@@ -167,6 +189,7 @@ files:
|
|
167
189
|
- lib/plugins/yhara.rb
|
168
190
|
- lib/plugins/yhara_filter.rb
|
169
191
|
- lib/plugins/yonda.rb
|
192
|
+
- lib/termtter/active_rubytter.rb
|
170
193
|
- lib/termtter/api.rb
|
171
194
|
- lib/termtter/client.rb
|
172
195
|
- lib/termtter/command.rb
|
@@ -197,6 +220,7 @@ files:
|
|
197
220
|
- spec/plugins/storage/status_spec.rb
|
198
221
|
- spec/plugins/whois_spec.rb
|
199
222
|
- spec/spec_helper.rb
|
223
|
+
- spec/termtter/active_rubytter_spec.rb
|
200
224
|
- spec/termtter/client_spec.rb
|
201
225
|
- spec/termtter/command_spec.rb
|
202
226
|
- spec/termtter/config_spec.rb
|
@@ -208,7 +232,7 @@ files:
|
|
208
232
|
- test/friends_timeline.json
|
209
233
|
- test/search.json
|
210
234
|
has_rdoc: true
|
211
|
-
homepage: http://
|
235
|
+
homepage: http://termtter.org/
|
212
236
|
licenses: []
|
213
237
|
|
214
238
|
post_install_message:
|