jugyo-termtter 0.8.14 → 1.0.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 +8 -8
- data/Rakefile +3 -5
- data/lib/{plugin → plugins}/april_fool.rb +0 -0
- data/lib/plugins/bomb.rb +42 -0
- data/lib/{plugin → plugins}/clear.rb +0 -0
- data/lib/{plugin → plugins}/confirm.rb +0 -0
- data/lib/{plugin → plugins}/cool.rb +0 -0
- data/lib/{plugin → plugins}/devel.rb +0 -0
- data/lib/{filter → plugins}/en2ja.rb +1 -1
- data/lib/plugins/english.rb +25 -0
- data/lib/{plugin → plugins}/erb.rb +0 -0
- data/lib/{filter → plugins}/expand-tinyurl.rb +6 -6
- data/lib/plugins/favorite.rb +63 -0
- data/lib/plugins/fib.rb +28 -0
- data/lib/{filter/fib.rb → plugins/fib_filter.rb} +1 -2
- data/lib/{plugin → plugins}/filter.rb +0 -0
- data/lib/{plugin → plugins}/graduatter.rb +1 -2
- data/lib/{plugin → plugins}/grass.rb +2 -2
- data/lib/{plugin → plugins}/group.rb +9 -9
- data/lib/{plugin → plugins}/growl.rb +11 -12
- data/lib/{plugin → plugins}/hatebu.rb +5 -5
- data/lib/{plugin → plugins}/history.rb +13 -13
- data/lib/plugins/ignore.rb +19 -0
- data/lib/plugins/keyword.rb +18 -0
- data/lib/{plugin → plugins}/log.rb +18 -12
- data/lib/{plugin → plugins}/me.rb +1 -2
- data/lib/{plugin → plugins}/modify_arg_hook_sample.rb +0 -0
- data/lib/{plugin → plugins}/msagent.rb +1 -1
- data/lib/plugins/multi_reply.rb +27 -0
- data/lib/{plugin → plugins}/notify-send.rb +1 -1
- data/lib/{plugin → plugins}/otsune.rb +0 -0
- data/lib/plugins/outputz.rb +33 -0
- data/lib/{plugin → plugins}/pause.rb +0 -0
- data/lib/{plugin → plugins}/plugin.rb +0 -0
- data/lib/{plugin → plugins}/post_exec_hook_sample.rb +0 -0
- data/lib/{plugin → plugins}/pre_exec_hook_sample.rb +0 -0
- data/lib/{plugin → plugins}/primes.rb +9 -2
- data/lib/plugins/quicklook.rb +41 -0
- data/lib/{plugin → plugins}/random.rb +0 -0
- data/lib/{plugin → plugins}/reblog.rb +3 -3
- data/lib/{plugin → plugins}/reload.rb +0 -0
- data/lib/{filter → plugins}/reply.rb +0 -0
- data/lib/{filter → plugins}/reverse.rb +1 -1
- data/lib/{plugin → plugins}/say.rb +1 -1
- data/lib/{plugin → plugins}/scrape.rb +4 -4
- data/lib/plugins/screen-notify.rb +13 -0
- data/lib/plugins/screen.rb +24 -0
- data/lib/{plugin → plugins}/shell.rb +0 -0
- data/lib/{plugin → plugins}/sl.rb +4 -4
- data/lib/plugins/spam.rb +13 -0
- data/lib/{plugin → plugins}/standard_plugins.rb +72 -18
- data/lib/plugins/stdout.rb +80 -0
- data/lib/plugins/storage/DB.rb +37 -0
- data/lib/plugins/storage/status.rb +48 -0
- data/lib/plugins/storage/status_mook.rb +30 -0
- data/lib/plugins/storage.rb +47 -0
- data/lib/plugins/system_status.rb +33 -0
- data/lib/{plugin → plugins}/translation.rb +15 -5
- data/lib/{plugin → plugins}/update_editor.rb +6 -6
- data/lib/plugins/uri-open.rb +64 -0
- data/lib/{filter → plugins}/url_addspace.rb +0 -0
- data/lib/{plugin → plugins}/wassr_post.rb +1 -1
- data/lib/{plugin → plugins}/yhara.rb +1 -1
- data/lib/plugins/yhara_filter.rb +8 -0
- data/lib/plugins/yonda.rb +21 -0
- data/lib/termtter/api.rb +28 -2
- data/lib/termtter/client.rb +90 -102
- data/lib/termtter/command.rb +32 -31
- data/lib/termtter/config.rb +64 -0
- data/lib/termtter/connection.rb +9 -7
- data/lib/termtter/hook.rb +11 -2
- data/lib/termtter/optparse.rb +14 -0
- data/lib/termtter/version.rb +1 -1
- data/lib/termtter.rb +19 -22
- data/spec/plugin/english_spec.rb +19 -0
- data/spec/plugin/favorite_spec.rb +10 -0
- data/spec/plugin/fib_spec.rb +1 -2
- data/spec/plugin/pause_spec.rb +8 -0
- data/spec/plugin/plugin_spec.rb +1 -1
- data/spec/plugin/primes_spec.rb +15 -0
- data/spec/plugin/sl_spec.rb +8 -0
- data/spec/plugin/spam_spec.rb +0 -13
- data/spec/plugin/standard_plugins_spec.rb +0 -7
- data/spec/plugin/storage/DB_spec.rb +12 -0
- data/spec/plugin/storage/status_spec.rb +24 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/termtter/client_spec.rb +63 -1
- data/spec/termtter/command_spec.rb +6 -68
- data/spec/termtter/config_spec.rb +111 -0
- data/spec/termtter/hook_spec.rb +69 -0
- data/spec/termtter_spec.rb +22 -34
- metadata +81 -72
- data/lib/filter/english.rb +0 -8
- data/lib/filter/ignore.rb +0 -19
- data/lib/filter/yhara.rb +0 -20
- data/lib/plugin/bomb.rb +0 -29
- data/lib/plugin/english.rb +0 -59
- data/lib/plugin/favorite.rb +0 -75
- data/lib/plugin/fib.rb +0 -8
- data/lib/plugin/follow.rb +0 -60
- data/lib/plugin/keyword.rb +0 -18
- data/lib/plugin/multi_reply.rb +0 -36
- data/lib/plugin/outputz.rb +0 -35
- data/lib/plugin/quicklook.rb +0 -38
- data/lib/plugin/screen.rb +0 -24
- data/lib/plugin/spam.rb +0 -9
- data/lib/plugin/stdout.rb +0 -63
- data/lib/plugin/system_status.rb +0 -33
- data/lib/plugin/uri-open.rb +0 -69
- data/lib/plugin/yonda.rb +0 -20
- data/lib/termtter/status.rb +0 -26
- data/lib/termtter/twitter.rb +0 -188
- data/lib/termtter/user.rb +0 -13
- data/spec/termtter/user_spec.rb +0 -27
- data/test/test_termtter.rb +0 -86
data/lib/plugin/english.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'erb'
|
4
|
-
|
5
|
-
module Termtter
|
6
|
-
Client.clear_hooks # FIXME: not to clear all but to clear just stdout.rb
|
7
|
-
|
8
|
-
configatron.set_default(
|
9
|
-
:timeline_format,
|
10
|
-
'<%= color(time, 90) %> <%= color(status, status_color) %> <%= color(id, 90) %>')
|
11
|
-
|
12
|
-
def color(str, num)
|
13
|
-
"\e[#{num}m#{str}\e[0m"
|
14
|
-
end
|
15
|
-
|
16
|
-
# FIXME: The code below is a copy from stdout.rb so it's not DRY. DRY it.
|
17
|
-
|
18
|
-
Client.add_hook do |statuses, event|
|
19
|
-
colors = %w(0 31 32 33 34 35 36 91 92 93 94 95 96)
|
20
|
-
|
21
|
-
case event
|
22
|
-
when :update_friends_timeline, :list_friends_timeline, :list_user_timeline, :show, :replies
|
23
|
-
unless statuses.empty?
|
24
|
-
statuses.reverse! if event == :update_friends_timeline
|
25
|
-
statuses.each do |s|
|
26
|
-
text = s.text.gsub("\n", '')
|
27
|
-
next unless Status.english?(text) # if you substitute "if" for "unless", this script will be "japanese.rb"
|
28
|
-
status_color = colors[s.user_screen_name.hash % colors.size]
|
29
|
-
status = "#{s.user_screen_name}: #{text}"
|
30
|
-
if s.in_reply_to_status_id
|
31
|
-
status += " (reply to #{s.in_reply_to_status_id})"
|
32
|
-
end
|
33
|
-
|
34
|
-
time_format = case event
|
35
|
-
when :update_friends_timeline, :list_friends_timeline
|
36
|
-
'%H:%M:%S'
|
37
|
-
else
|
38
|
-
'%m-%d %H:%M'
|
39
|
-
end
|
40
|
-
time = "(#{s.created_at.strftime(time_format)})"
|
41
|
-
|
42
|
-
id = s.id
|
43
|
-
|
44
|
-
puts ERB.new(configatron.timeline_format).result(binding)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
when :search
|
48
|
-
statuses.each do |s|
|
49
|
-
text = s.text.gsub("\n", '')
|
50
|
-
status_color = colors[s.user_screen_name.hash % colors.size]
|
51
|
-
|
52
|
-
status = "#{s.user_screen_name}: #{text}"
|
53
|
-
time = "(#{s.created_at.strftime('%m-%d %H:%M')})"
|
54
|
-
id = s.id
|
55
|
-
puts ERB.new(configatron.timeline_format).result(binding)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
data/lib/plugin/favorite.rb
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
module Termtter::Client
|
4
|
-
add_help 'favorite,fav ID', 'Favorite a status'
|
5
|
-
|
6
|
-
add_command %r'^(?:favorite|fav)\s+(\d+)\s*$' do |m, t|
|
7
|
-
id = m[1]
|
8
|
-
res = t.favorite(id)
|
9
|
-
if res.code == '200'
|
10
|
-
puts "Favorited status ##{id}"
|
11
|
-
else
|
12
|
-
puts "Failed: #{res}"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
add_help 'favorite,fav USER', 'Favorite last status on the user'
|
17
|
-
|
18
|
-
add_command %r'^(?:favorite|fav)\s+@(.+)\s*$' do |m, t|
|
19
|
-
user = m[1].strip
|
20
|
-
statuses = t.get_user_timeline(user)
|
21
|
-
unless statuses.empty?
|
22
|
-
id = statuses[0].id
|
23
|
-
text = statuses[0].text
|
24
|
-
res = t.favorite(id)
|
25
|
-
if res.code == '200'
|
26
|
-
puts %Q(Favorited last status ##{id} on user @#{user}: "#{text}")
|
27
|
-
else
|
28
|
-
puts "Failed: #{res}"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
if public_storage[:log]
|
34
|
-
add_help 'favorite,fav /WORD', 'Favorite a status by searching'
|
35
|
-
|
36
|
-
add_command %r'^(?:favorite|fav)\s+/(.+)$' do |m, t|
|
37
|
-
pat = Regexp.new(m[1])
|
38
|
-
statuses = public_storage[:log].select {|s| pat =~ s.text }
|
39
|
-
if statuses.size == 1
|
40
|
-
status = statuses.first
|
41
|
-
res = t.favorite(status.id)
|
42
|
-
if res.code == '200'
|
43
|
-
puts %Q(Favorited "#{status.user_screen_name}: #{status.text}")
|
44
|
-
else
|
45
|
-
puts "Failed: #{res}"
|
46
|
-
end
|
47
|
-
else
|
48
|
-
puts "#{pat} does not match single status"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
add_completion do |input|
|
54
|
-
case input
|
55
|
-
when /^(favorite|fav)\s+@(.*)/
|
56
|
-
find_user_candidates $2, "#{$1} @%s"
|
57
|
-
when /^(favorite|fav)\s+(\d*)/
|
58
|
-
find_status_id_candidates $2, "#{$1} %s"
|
59
|
-
else
|
60
|
-
%w(favorite).grep(/^#{Regexp.quote input}/)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
module Termtter
|
66
|
-
class Twitter
|
67
|
-
def favorite(id)
|
68
|
-
uri = "#{@connection.protocol}://twitter.com/favourings/create/#{id}.json"
|
69
|
-
|
70
|
-
@connection.start('twitter.com', @connection.port) do |http|
|
71
|
-
http.request(post_request(uri))
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
data/lib/plugin/fib.rb
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
def fib(n)i=0;j=1;n.times{j=i+i=j};i end
|
4
|
-
module Termtter::Client
|
5
|
-
add_command /^fib\s+(\d+)/ do|m,t|t.update_status x="fib(#{n=m[1].to_i}) = #{fib n}"
|
6
|
-
puts"=> #{x}"end
|
7
|
-
add_command /^fibyou\s(\w+)\s(\d+)/ do|m,t|puts"=> #{t.update_status("@#{m[1]} fib(#{n=m[2].to_i}) = #{fib n}")}"end end
|
8
|
-
# TODO: use add_macro
|
data/lib/plugin/follow.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
module Termtter::Client
|
4
|
-
register_command(
|
5
|
-
:name => :follow, :aliases => [],
|
6
|
-
:exec_proc => lambda {|args|
|
7
|
-
args.split(' ').each do |arg|
|
8
|
-
if arg =~ /^(\w+)/
|
9
|
-
res = Termtter::API::twitter.social($1.strip, :follow)
|
10
|
-
if res.code == '200'
|
11
|
-
puts "Followed user @#{$1}"
|
12
|
-
else
|
13
|
-
puts "Failed: #{res}"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
},
|
18
|
-
:completion_proc => lambda {|cmd, args|
|
19
|
-
find_user_candidates args, "#{cmd} %s"
|
20
|
-
},
|
21
|
-
:help => ['follow USER', 'Follow user']
|
22
|
-
)
|
23
|
-
|
24
|
-
register_command(
|
25
|
-
:name => :leave, :aliases => [],
|
26
|
-
:exec_proc => lambda {|args|
|
27
|
-
args.split(' ').each do |arg|
|
28
|
-
if arg =~ /^(\w+)/
|
29
|
-
res = Termtter::API::twitter.social($1.strip, :leave)
|
30
|
-
if res.code == '200'
|
31
|
-
puts "Leaved user @#{$1}"
|
32
|
-
else
|
33
|
-
puts "Failed: #{res}"
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
},
|
38
|
-
:completion_proc => lambda {|cmd, args|
|
39
|
-
find_user_candidates args, "#{cmd} %s"
|
40
|
-
},
|
41
|
-
:help => ['leave USER', 'Leave user']
|
42
|
-
)
|
43
|
-
end
|
44
|
-
|
45
|
-
module Termtter
|
46
|
-
class Twitter
|
47
|
-
def social(user, type)
|
48
|
-
type =
|
49
|
-
case type.to_sym
|
50
|
-
when :follow then 'create'
|
51
|
-
when :leave then 'destroy'
|
52
|
-
end
|
53
|
-
uri = "#{@connection.protocol}://twitter.com/friendships/#{type}/#{user}.json"
|
54
|
-
|
55
|
-
@connection.start('twitter.com', @connection.port) do |http|
|
56
|
-
http.request(post_request(uri))
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
data/lib/plugin/keyword.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
configatron.set_default('plugins.keyword.keywords', [])
|
4
|
-
|
5
|
-
module Termtter
|
6
|
-
class Status
|
7
|
-
def has_keyword?
|
8
|
-
configatron.plugins.keyword.keywords.find { |k| k === self.text }
|
9
|
-
end
|
10
|
-
alias :has_keyword :has_keyword?
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
# keyword.rb
|
15
|
-
# provides a keyword watching method
|
16
|
-
# example config
|
17
|
-
# configatron.plugins.stdout.timeline_format = '<%= color(time, 90) %> <%= color(status, s.has_keyword ? 4 : status_color) %> <%= color(id, 90) %>'
|
18
|
-
# configatron.plugins.keyword.keywords = [ /motemen/ ]
|
data/lib/plugin/multi_reply.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
module Termtter::Client
|
4
|
-
add_help 'multi_reply, mp TEXT', 'reply to multi user'
|
5
|
-
add_command /^(multi_reply|mr)\s+(.*)/ do |m, t|
|
6
|
-
text = ERB.new(m[2]).result(binding).gsub(/\n/, ' ')
|
7
|
-
unless text.empty?
|
8
|
-
#targets, _, msg = text.match /(@(.+))*\s+(.+)/
|
9
|
-
#targets.split(/\s+/).
|
10
|
-
# map {|u| "#{u} #{msg}" }.
|
11
|
-
# each do |post|
|
12
|
-
# t.update_status(post)
|
13
|
-
# puts "=> #{post}"
|
14
|
-
# end
|
15
|
-
/(@(.+))*\s+(.+)/ =~ text
|
16
|
-
if $1
|
17
|
-
msg = $3
|
18
|
-
text = $1.split(/\s+/).map {|u| "#{u} #{msg}" }
|
19
|
-
end
|
20
|
-
Array(text).each do |post|
|
21
|
-
t.update_status(post)
|
22
|
-
puts "=> #{post}"
|
23
|
-
end
|
24
|
-
#
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
add_completion do |input|
|
29
|
-
case input
|
30
|
-
when /^(multi_reply|mr)\s+(.*)@([^\s]*)$/
|
31
|
-
find_user_candidates $3, "#{$1} #{$2}@%s"
|
32
|
-
else
|
33
|
-
%w[ mreply mp ].grep(/^#{Regexp.quote input}/)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
data/lib/plugin/outputz.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
|
4
|
-
module Termtter::Client
|
5
|
-
configatron.plugins.outputz.set_default(:uri, 'termtter://twitter.com/status/update')
|
6
|
-
|
7
|
-
key = configatron.plugins.outputz.secret_key
|
8
|
-
if key.instance_of? Configatron::Store
|
9
|
-
puts 'Need your secret key'
|
10
|
-
puts 'please set configatron.plugins.outputz.secret_key'
|
11
|
-
else
|
12
|
-
add_command /^(update|u)\s+(.*)/ do |m, t|
|
13
|
-
text = ERB.new(m[2]).result(binding).gsub(/\n/, ' ')
|
14
|
-
unless text.empty?
|
15
|
-
t.update_status(text)
|
16
|
-
puts "=> #{text}"
|
17
|
-
end
|
18
|
-
t.instance_variable_get('@connection').
|
19
|
-
start('outputz.com', 80) do |http|
|
20
|
-
key = CGI.escape key
|
21
|
-
uri = CGI.escape configatron.plugins.outputz.uri
|
22
|
-
size = text.split(//).size
|
23
|
-
http.post('/api/post', "key=#{key}&uri=#{uri}&size=#{size}")
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# outputz.rb
|
30
|
-
# a plugin that report to outputz your post
|
31
|
-
#
|
32
|
-
# settings (note: must this order)
|
33
|
-
# configatron.plugins.outputz.secret_key = 'your secret key'
|
34
|
-
# plugin 'outputz'
|
35
|
-
|
data/lib/plugin/quicklook.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'uri'
|
4
|
-
require 'open-uri'
|
5
|
-
require 'pathname'
|
6
|
-
require 'tmpdir'
|
7
|
-
|
8
|
-
configatron.plugins.quicklook.set_default(:quicklook_tmpdir, "#{Dir.tmpdir}/termtter-quicklook-tmpdir")
|
9
|
-
tmpdir = Pathname.new(configatron.plugins.quicklook.quicklook_tmpdir)
|
10
|
-
tmpdir.mkdir unless tmpdir.exist?
|
11
|
-
|
12
|
-
def quicklook(url)
|
13
|
-
tmpdir = Pathname.new(configatron.plugins.quicklook.quicklook_tmpdir)
|
14
|
-
path = tmpdir + Pathname.new(url).basename
|
15
|
-
|
16
|
-
Thread.new do
|
17
|
-
open(path, 'w') do |f|
|
18
|
-
f.write(open(url).read)
|
19
|
-
end
|
20
|
-
system("qlmanage -p #{path} > /dev/null 2>&1")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
module Termtter::Client
|
25
|
-
add_command %r'^(?:quicklook|ql)\s+(\w+)$' do |m,t|
|
26
|
-
id = m[1]
|
27
|
-
status = t.show(id).first
|
28
|
-
|
29
|
-
if (status)
|
30
|
-
uris = URI.regexp.match(status.text).to_a
|
31
|
-
quicklook(uris.first) unless uris.empty?
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# quicklook.rb
|
37
|
-
# TODO:
|
38
|
-
# Close quicklook window automatically.
|
data/lib/plugin/screen.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
module Termtter
|
4
|
-
module Plugin
|
5
|
-
module Screen
|
6
|
-
def self.set_title(title)
|
7
|
-
print "\033k#{title}\033\\"
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
# Add below to your ~/.termtter
|
14
|
-
#
|
15
|
-
# require 'plugin/yonda'
|
16
|
-
# require 'plugin/screen'
|
17
|
-
# module Termtter::Client
|
18
|
-
# add_hook do |statuses, event|
|
19
|
-
# case event
|
20
|
-
# when :update_friends_timeline, :plugin_yonda_yonda
|
21
|
-
# Termtter::Plugin::Screen::set_title("termtter(#{public_storage[:unread_count]})")
|
22
|
-
# end
|
23
|
-
# end
|
24
|
-
# end
|
data/lib/plugin/spam.rb
DELETED
data/lib/plugin/stdout.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'termcolor'
|
4
|
-
require 'erb'
|
5
|
-
|
6
|
-
configatron.plugins.stdout.set_default(
|
7
|
-
:colors,
|
8
|
-
[:none, :red, :green, :yellow, :blue, :magenta, :cyan])
|
9
|
-
configatron.plugins.stdout.set_default(
|
10
|
-
:timeline_format,
|
11
|
-
'<90><%=time%></90> <<%=status_color%>><%=status%></<%=status_color%>> <90><%=id%></90>')
|
12
|
-
|
13
|
-
$highline = HighLine.new
|
14
|
-
|
15
|
-
def color(str, value)
|
16
|
-
return str if value == :none
|
17
|
-
case value
|
18
|
-
when String, Symbol
|
19
|
-
$highline.color(str, value)
|
20
|
-
else
|
21
|
-
"\e[#{value}m#{str}\e[0m"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
module Termtter::Client
|
26
|
-
|
27
|
-
def self.print_statuses(statuses, sort = true, time_format = '%H:%M:%S')
|
28
|
-
(sort ? statuses.sort_by{ |s| s.id} : statuses).each do |s|
|
29
|
-
text = s.text
|
30
|
-
status_color = configatron.plugins.stdout.colors[s.user_screen_name.hash % configatron.plugins.stdout.colors.size]
|
31
|
-
status = "#{s.user_screen_name}: #{text}"
|
32
|
-
if s.in_reply_to_status_id
|
33
|
-
status += " (reply to #{s.in_reply_to_status_id})"
|
34
|
-
end
|
35
|
-
|
36
|
-
time = "(#{s.created_at.strftime(time_format)})"
|
37
|
-
id = s.id
|
38
|
-
erbed_text = ERB.new(configatron.plugins.stdout.timeline_format).result(binding)
|
39
|
-
puts TermColor.parse(erbed_text)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.print_statuses_with_date(statuses, sort = true)
|
44
|
-
print_statuses(statuses, sort, '%m-%d %H:%M')
|
45
|
-
end
|
46
|
-
|
47
|
-
add_hook do |statuses, event|
|
48
|
-
next if statuses.empty?
|
49
|
-
|
50
|
-
case event
|
51
|
-
when :update_friends_timeline, :list_friends_timeline
|
52
|
-
print_statuses(statuses)
|
53
|
-
when :search, :list_user_timeline, :show, :replies
|
54
|
-
print_statuses_with_date(statuses)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
# stdout.rb
|
60
|
-
# output statuses to stdout
|
61
|
-
# example config
|
62
|
-
# configatron.plugins.stdout.colors = [:none, :red, :green, :yellow, :blue, :magenta, :cyan]
|
63
|
-
# configatron.plugins.stdout.timeline_format = '<90><%=time%></90> <<%=status_color%>><%=status%></<%=status_color%>> <90><%=id%></90>'
|
data/lib/plugin/system_status.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'erb'
|
4
|
-
|
5
|
-
configatron.plugins.system_status.set_default(:default_status_proc, lambda { Time.now.strftime("%x %X") })
|
6
|
-
configatron.plugins.system_status.set_default(:interval, 1)
|
7
|
-
configatron.plugins.system_status.set_default(:default_color, :on_blue)
|
8
|
-
configatron.plugins.system_status.set_default(:format, '<%= status %>')
|
9
|
-
|
10
|
-
def out_put_status(status, color)
|
11
|
-
formatted_status = ERB.new(configatron.plugins.system_status.format).result(binding)
|
12
|
-
colored_status = color(formatted_status, color)
|
13
|
-
print "\e[s\e[1000G\e[#{status.size - 1}D#{colored_status}\e[u"
|
14
|
-
$stdout.flush
|
15
|
-
end
|
16
|
-
|
17
|
-
module Termtter::Client
|
18
|
-
add_task(:name => :system_status, :interval => configatron.plugins.system_status.interval) do
|
19
|
-
status = (@@task_manager.get_task(:update_timeline).exec_at - Time.now).to_i.to_s
|
20
|
-
color = public_storage[:system_status_color] ||
|
21
|
-
configatron.plugins.system_status.default_color
|
22
|
-
out_put_status(status, color)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# system_status.rb
|
27
|
-
# show system status on left side.
|
28
|
-
# output public_storage[:system_status] or Time.now.strftime("%x %X") if nil
|
29
|
-
# example config
|
30
|
-
# configatron.plugins.system_status.default_status_proc = lambda { Time.now.strftime("%x %X") }
|
31
|
-
# configatron.plugins.system_status.interval = 1
|
32
|
-
# configatron.plugins.system_status.default_color = :on_blue
|
33
|
-
# configatron.plugins.system_status.format = '<%= status %>'
|
data/lib/plugin/uri-open.rb
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
module Termtter::Client
|
4
|
-
public_storage[:uris] = []
|
5
|
-
|
6
|
-
add_hook do |statuses, event, t|
|
7
|
-
if !statuses.empty? && event == :update_friends_timeline
|
8
|
-
statuses.each do |s|
|
9
|
-
public_storage[:uris] += s.text.scan(%r|https?://[^\s]+|)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.open_uri(uri)
|
15
|
-
unless configatron.plugins.uri_open.browser.nil?
|
16
|
-
system configatron.plugins.uri_open.browser, uri
|
17
|
-
else
|
18
|
-
case RUBY_PLATFORM
|
19
|
-
when /linux/
|
20
|
-
system 'firefox', uri
|
21
|
-
when /mswin(?!ce)|mingw|bccwin/
|
22
|
-
system 'explorer', uri
|
23
|
-
else
|
24
|
-
system 'open', uri
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
add_command /^uri-open\s*$/ do |m, t|
|
30
|
-
public_storage[:uris].each do |uri|
|
31
|
-
open_uri(uri)
|
32
|
-
end
|
33
|
-
public_storage[:uris].clear
|
34
|
-
end
|
35
|
-
|
36
|
-
add_command /^uri-open\s+(\d+)$/ do |m, t|
|
37
|
-
if m[1]
|
38
|
-
index = m[1].to_i
|
39
|
-
open_uri(public_storage[:uris][index])
|
40
|
-
public_storage[:uris].delete_at(index)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
add_command /^uri-open\s+list\s*$/ do |m, t|
|
45
|
-
public_storage[:uris].each_with_index do |uri, index|
|
46
|
-
puts "#{index}: #{uri}"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
add_command /^uri-open\s+delete\s+(\d+)$/ do |m, t|
|
51
|
-
public_storage[:uris].delete_at(m[1].to_i) if m[1]
|
52
|
-
end
|
53
|
-
|
54
|
-
add_command /^uri-open\s+clear\s*$/ do |m, t|
|
55
|
-
public_storage[:uris].clear
|
56
|
-
puts "clear uris"
|
57
|
-
end
|
58
|
-
|
59
|
-
add_completion do |input|
|
60
|
-
['uri-open ', 'uri-open list', 'uri-open delete', 'uri-open clear'].grep(/^#{Regexp.quote input}/)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
# ~/.termtter
|
64
|
-
# plugin 'uri-open'
|
65
|
-
#
|
66
|
-
# see also: http://ujihisa.nowa.jp/entry/c3dd00c4e0
|
67
|
-
#
|
68
|
-
# KNOWN BUG
|
69
|
-
# * In Debian, exit or C-c in the termtter kills your firefox.
|
data/lib/plugin/yonda.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
module Termtter::Client
|
4
|
-
register_command(
|
5
|
-
:name => :yonda, :aliases => [:y],
|
6
|
-
:exec_proc => proc{|arg|
|
7
|
-
public_storage[:unread_count] = 0
|
8
|
-
print "\033[2J\033[H" # FIXME
|
9
|
-
call_hooks [], :plugin_yonda_yonda
|
10
|
-
},
|
11
|
-
:help => ['yonda,y', 'Mark as read']
|
12
|
-
)
|
13
|
-
|
14
|
-
add_hook do |statuses, event|
|
15
|
-
case event
|
16
|
-
when :update_friends_timeline
|
17
|
-
public_storage[:unread_count] += statuses.size
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/lib/termtter/status.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
module Termtter
|
4
|
-
class Status
|
5
|
-
%w(
|
6
|
-
id text created_at truncated
|
7
|
-
in_reply_to_status_id in_reply_to_user_id in_reply_to_screen_name
|
8
|
-
user_id user_name user_screen_name user_url user_profile_image_url
|
9
|
-
).each do |attr|
|
10
|
-
attr_accessor attr.to_sym
|
11
|
-
end
|
12
|
-
|
13
|
-
def eql?(other); self.id == other.id end
|
14
|
-
def hash; self.id end
|
15
|
-
|
16
|
-
def english?
|
17
|
-
self.class.english?(self.text)
|
18
|
-
end
|
19
|
-
|
20
|
-
# english? :: String -> Boolean
|
21
|
-
def self.english?(message)
|
22
|
-
/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+/ !~ message
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|