termtter 1.0.4 → 1.0.5
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/Rakefile +1 -1
- data/lib/plugins/addspace.rb +27 -0
- data/lib/plugins/growl.rb +3 -3
- data/lib/plugins/plugin.rb +1 -1
- data/lib/plugins/standard_plugins.rb +1 -2
- data/lib/plugins/stdout.rb +2 -2
- data/lib/plugins/url_addspace.rb +1 -1
- data/lib/termtter.rb +11 -0
- data/lib/termtter/client.rb +5 -13
- data/lib/termtter/command.rb +5 -1
- data/lib/termtter/hook.rb +3 -3
- data/lib/termtter/system_extensions.rb +2 -7
- data/lib/termtter/version.rb +1 -1
- data/spec/termtter/client_spec.rb +5 -5
- data/spec/termtter/command_spec.rb +10 -10
- metadata +4 -3
data/Rakefile
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_dependency("json_pure", ">= 1.1.3")
|
27
27
|
s.add_dependency("highline", ">= 1.5.0")
|
28
28
|
s.add_dependency("termcolor", ">= 0.3.1")
|
29
|
-
s.add_dependency("rubytter", ">= 0.
|
29
|
+
s.add_dependency("rubytter", ">= 0.6.3")
|
30
30
|
s.add_dependency("sqlite3-ruby", ">= 1.2.4")
|
31
31
|
s.authors = %w(jugyo ujihisa)
|
32
32
|
s.email = 'jugyo.org@gmail.com'
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
config.plugins.addspace.set_default( :before, [ %r{https?://} ] )
|
4
|
+
config.plugins.addspace.set_default( :after, %w{ ★ ☆ △ ▽})
|
5
|
+
|
6
|
+
module Termtter::Client
|
7
|
+
add_filter do |statuses, event|
|
8
|
+
statuses.each do |s|
|
9
|
+
config.plugins.addspace.before.each do |c|
|
10
|
+
s.text.gsub!(/(\S)(#{c})/, '\1 \2' )
|
11
|
+
end
|
12
|
+
end
|
13
|
+
statuses.each do |s|
|
14
|
+
config.plugins.addspace.after.each do |c|
|
15
|
+
s.text.gsub!(/(#{c})(\S)/, '\1 \2' )
|
16
|
+
end
|
17
|
+
statuses
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
# addspace
|
22
|
+
# add space before or after specified words.
|
23
|
+
# example:
|
24
|
+
# before: ABCDEhttp://~~~
|
25
|
+
# after: ABCDE http://~~~
|
26
|
+
# before: ★★★
|
27
|
+
# after: ★ ★ ★
|
data/lib/plugins/growl.rb
CHANGED
@@ -54,8 +54,8 @@ Thread.new do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
Termtter::Client.register_hook(:name => :growl,
|
57
|
-
:points => [:
|
58
|
-
:exec_proc => lambda {
|
59
|
-
|
57
|
+
:points => [:post_filter],
|
58
|
+
:exec_proc => lambda {|statuses, event|
|
59
|
+
statuses.each {|s| queue << s} if event == :update_friends_timeline
|
60
60
|
}
|
61
61
|
)
|
data/lib/plugins/plugin.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Termtter::Client
|
4
4
|
|
5
|
-
public_storage[:plugins] = Dir["#{File.dirname(__FILE__)}/*.rb"].map do |f|
|
5
|
+
public_storage[:plugins] = (Dir["#{File.dirname(__FILE__)}/*.rb"] + Dir["#{Termtter::CONF_DIR}/plugins/*.rb"]).map do |f|
|
6
6
|
f.match(%r|([^/]+).rb$|)[1]
|
7
7
|
end
|
8
8
|
|
@@ -246,8 +246,7 @@ module Termtter::Client
|
|
246
246
|
["search,s TEXT", "Search for Twitter"],
|
247
247
|
["show ID", "Show a single status"]
|
248
248
|
]
|
249
|
-
helps +=
|
250
|
-
helps += @@new_commands.map {|name, command| command.help}
|
249
|
+
helps += @commands.map {|name, command| command.help}
|
251
250
|
helps.compact!
|
252
251
|
puts formatted_help(helps)
|
253
252
|
}
|
data/lib/plugins/stdout.rb
CHANGED
@@ -17,12 +17,12 @@ module Termtter
|
|
17
17
|
super(:name => :stdout, :points => [:output])
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
20
|
+
def call(statuses, event)
|
21
21
|
print_statuses(statuses)
|
22
22
|
end
|
23
23
|
|
24
24
|
def print_statuses(statuses, sort = true, time_format = nil)
|
25
|
-
return unless statuses
|
25
|
+
return unless statuses and statuses.first
|
26
26
|
unless time_format
|
27
27
|
# 最初と最後の日付がちがうとき日付も出す
|
28
28
|
t1 = Time.parse(statuses.first[:created_at])
|
data/lib/plugins/url_addspace.rb
CHANGED
data/lib/termtter.rb
CHANGED
@@ -25,3 +25,14 @@ require 'termtter/task_manager'
|
|
25
25
|
require 'termtter/client'
|
26
26
|
require 'termtter/api'
|
27
27
|
require 'termtter/system_extensions'
|
28
|
+
|
29
|
+
module Termtter
|
30
|
+
APP_NAME = 'termtter'
|
31
|
+
|
32
|
+
config.system.set_default :conf_dir, File.expand_path('~/.termtter')
|
33
|
+
CONF_DIR = config.system.conf_dir
|
34
|
+
|
35
|
+
config.system.set_default :conf_file, CONF_DIR + '/config'
|
36
|
+
CONF_FILE = config.system.conf_file
|
37
|
+
$:.unshift(Termtter::CONF_DIR)
|
38
|
+
end
|
data/lib/termtter/client.rb
CHANGED
@@ -3,14 +3,6 @@ require 'fileutils'
|
|
3
3
|
require 'logger'
|
4
4
|
|
5
5
|
module Termtter
|
6
|
-
APP_NAME = 'termtter'
|
7
|
-
|
8
|
-
config.system.set_default :conf_dir, File.expand_path('~/.termtter')
|
9
|
-
CONF_DIR = config.system.conf_dir
|
10
|
-
|
11
|
-
config.system.set_default :conf_file, CONF_DIR + '/config'
|
12
|
-
CONF_FILE = config.system.conf_file
|
13
|
-
$:.unshift(Termtter::CONF_DIR)
|
14
6
|
|
15
7
|
class CommandNotFound < StandardError; end
|
16
8
|
|
@@ -38,11 +30,11 @@ module Termtter
|
|
38
30
|
end
|
39
31
|
|
40
32
|
def add_filter(&b)
|
41
|
-
filters << b
|
33
|
+
@filters << b
|
42
34
|
end
|
43
35
|
|
44
36
|
def clear_filter
|
45
|
-
filters.clear
|
37
|
+
@filters.clear
|
46
38
|
end
|
47
39
|
|
48
40
|
def register_hook(arg)
|
@@ -128,7 +120,7 @@ module Termtter
|
|
128
120
|
result = nil
|
129
121
|
get_hooks(point).each {|hook|
|
130
122
|
break if result == false # interrupt if hook return false
|
131
|
-
result = hook.
|
123
|
+
result = hook.call(*args)
|
132
124
|
}
|
133
125
|
result
|
134
126
|
rescue => e
|
@@ -159,7 +151,7 @@ module Termtter
|
|
159
151
|
pre_exec_hook_result = call_hooks("pre_exec_#{command.name.to_s}", command_str, modified_arg)
|
160
152
|
next if pre_exec_hook_result == false
|
161
153
|
# exec command
|
162
|
-
result = command.
|
154
|
+
result = command.call(modified_arg)
|
163
155
|
if result
|
164
156
|
call_hooks("post_exec_#{command.name.to_s}", command_str, modified_arg, result)
|
165
157
|
end
|
@@ -337,7 +329,7 @@ module Termtter
|
|
337
329
|
|
338
330
|
def handle_error(e)
|
339
331
|
call_hooks("on_error", e)
|
340
|
-
rescue => e
|
332
|
+
rescue Exception => e
|
341
333
|
puts "Error: #{e}"
|
342
334
|
puts e.backtrace.join("\n")
|
343
335
|
end
|
data/lib/termtter/command.rb
CHANGED
@@ -14,6 +14,10 @@ module Termtter
|
|
14
14
|
# help: help text for the command (Optional)
|
15
15
|
def initialize(args)
|
16
16
|
raise ArgumentError, ":name is not given." unless args.has_key?(:name)
|
17
|
+
args[:exec_proc] ||= args[:exec]
|
18
|
+
args[:completion_proc] ||= args[:completion]
|
19
|
+
args[:aliases] ||= [args[:alias]].compact
|
20
|
+
|
17
21
|
cfg = {
|
18
22
|
:aliases => [],
|
19
23
|
:exec_proc => lambda {|arg| },
|
@@ -44,7 +48,7 @@ module Termtter
|
|
44
48
|
end
|
45
49
|
end
|
46
50
|
|
47
|
-
def
|
51
|
+
def call(arg)
|
48
52
|
arg = case arg
|
49
53
|
when nil
|
50
54
|
''
|
data/lib/termtter/hook.rb
CHANGED
@@ -7,8 +7,8 @@ module Termtter
|
|
7
7
|
def initialize(args)
|
8
8
|
raise ArgumentError, ":name is not given." unless args.has_key?(:name)
|
9
9
|
@name = args[:name].to_sym
|
10
|
-
@points = args[:points]
|
11
|
-
@exec_proc = args[:exec_proc] || lambda {}
|
10
|
+
@points = args[:points] || [args[:point]].compact
|
11
|
+
@exec_proc = args[:exec_proc] || args[:exec] || lambda {}
|
12
12
|
end
|
13
13
|
|
14
14
|
def match?(point)
|
@@ -25,7 +25,7 @@ module Termtter
|
|
25
25
|
end
|
26
26
|
|
27
27
|
# TODO: need spec
|
28
|
-
def
|
28
|
+
def call(*args)
|
29
29
|
self.exec_proc.call(*args)
|
30
30
|
end
|
31
31
|
end
|
@@ -6,13 +6,8 @@ def plugin(name, init = {})
|
|
6
6
|
config.plugins.__refer__(name.to_sym).__assign__(key.to_sym, value)
|
7
7
|
end
|
8
8
|
end
|
9
|
-
|
10
|
-
|
11
|
-
require path
|
12
|
-
else
|
13
|
-
require "plugins/#{name}"
|
14
|
-
end
|
15
|
-
rescue LoadError => e
|
9
|
+
load "plugins/#{name}.rb"
|
10
|
+
rescue Exception => e
|
16
11
|
Termtter::Client.handle_error(e)
|
17
12
|
end
|
18
13
|
|
data/lib/termtter/version.rb
CHANGED
@@ -6,7 +6,7 @@ module Termtter
|
|
6
6
|
|
7
7
|
describe Client do
|
8
8
|
|
9
|
-
it 'should take
|
9
|
+
it 'should take command' do
|
10
10
|
command = Command.new(:name => :test)
|
11
11
|
Client.register_command(command)
|
12
12
|
Client.get_command(:test).should == command
|
@@ -17,7 +17,7 @@ module Termtter
|
|
17
17
|
Client.get_command(:test).name.should == :test
|
18
18
|
end
|
19
19
|
|
20
|
-
it 'should call
|
20
|
+
it 'should call command' do
|
21
21
|
command_arg = nil
|
22
22
|
command = Command.new(:name => :test, :exec_proc => lambda {|arg| command_arg = arg})
|
23
23
|
Client.register_command(command)
|
@@ -49,7 +49,7 @@ module Termtter
|
|
49
49
|
hook_called = false
|
50
50
|
Client.register_hook(:name => :test1, :points => [:point1], :exec_proc => lambda {hook_called = true})
|
51
51
|
hook_called.should == false
|
52
|
-
Client.
|
52
|
+
Client.call_hooks(:point1)
|
53
53
|
hook_called.should == true
|
54
54
|
end
|
55
55
|
|
@@ -59,7 +59,7 @@ module Termtter
|
|
59
59
|
Client.register_hook(:name => :test1, :points => [:point1], :exec_proc => lambda {|a1, a2| arg1 = a1; arg2 = a2})
|
60
60
|
arg1.should == nil
|
61
61
|
arg2.should == nil
|
62
|
-
Client.
|
62
|
+
Client.call_hooks(:point1, 'foo', 'bar')
|
63
63
|
arg1.should == 'foo'
|
64
64
|
arg2.should == 'bar'
|
65
65
|
end
|
@@ -180,7 +180,7 @@ module Termtter
|
|
180
180
|
Client.should_receive(:load_config)
|
181
181
|
Termtter::API.should_receive(:setup)
|
182
182
|
Client.should_receive(:post_config_load)
|
183
|
-
Client.should_receive(:
|
183
|
+
Client.should_receive(:call_hooks)
|
184
184
|
Client.should_receive(:setup_update_timeline_task)
|
185
185
|
Client.should_receive(:start_input_thread)
|
186
186
|
Client.run
|
@@ -81,18 +81,18 @@ module Termtter
|
|
81
81
|
lambda { Command.new(:aliases => ['u']) }.should raise_error(ArgumentError)
|
82
82
|
end
|
83
83
|
|
84
|
-
it 'should call exec_proc when call method "
|
85
|
-
@command.
|
86
|
-
@command.
|
87
|
-
@command.
|
88
|
-
@command.
|
84
|
+
it 'should call exec_proc when call method "call"' do
|
85
|
+
@command.call('test').should == 'test'
|
86
|
+
@command.call(' test').should == ' test'
|
87
|
+
@command.call(' test ').should == ' test '
|
88
|
+
@command.call('test test').should == 'test test'
|
89
89
|
end
|
90
90
|
|
91
|
-
it 'should raise ArgumentError at
|
92
|
-
lambda { @command.
|
93
|
-
lambda { @command.
|
94
|
-
lambda { @command.
|
95
|
-
lambda { @command.
|
91
|
+
it 'should raise ArgumentError at call' do
|
92
|
+
lambda { @command.call(nil) }.should_not raise_error(ArgumentError)
|
93
|
+
lambda { @command.call('foo') }.should_not raise_error(ArgumentError)
|
94
|
+
lambda { @command.call(false) }.should raise_error(ArgumentError)
|
95
|
+
lambda { @command.call(Array.new) }.should raise_error(ArgumentError)
|
96
96
|
end
|
97
97
|
end
|
98
98
|
end
|
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.0.
|
4
|
+
version: 1.0.5
|
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-03-
|
13
|
+
date: 2009-03-22 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -51,7 +51,7 @@ dependencies:
|
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.6.3
|
55
55
|
version:
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: sqlite3-ruby
|
@@ -74,6 +74,7 @@ extra_rdoc_files:
|
|
74
74
|
- README.rdoc
|
75
75
|
- History.txt
|
76
76
|
files:
|
77
|
+
- lib/plugins/addspace.rb
|
77
78
|
- lib/plugins/april_fool.rb
|
78
79
|
- lib/plugins/bomb.rb
|
79
80
|
- lib/plugins/clear.rb
|