termtter 1.3.1 → 1.4.0
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.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:
|