termtter 1.4.0 → 1.5.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 CHANGED
@@ -1,20 +1,18 @@
1
- = termtter
2
-
3
- http://termtter.org/
4
-
5
- == DESCRIPTION:
1
+ = Termtter
6
2
 
7
3
  Termtter is a terminal based Twitter client.
8
4
 
9
- == FEATURES/PROBLEMS:
5
+ For more information, see http://termtter.org/ and http://lingr.com/room/termtter
10
6
 
11
- == SYNOPSIS:
7
+ == INSTALL:
8
+
9
+ % sudo gem install termtter
12
10
 
13
- === Run:
11
+ == Run:
14
12
 
15
13
  % termtter
16
14
 
17
- === Some Termtter Commands:
15
+ == Commands:
18
16
 
19
17
  Show help
20
18
 
@@ -32,17 +30,6 @@ Search
32
30
 
33
31
  > search termtter
34
32
 
35
- == REQUIREMENTS:
36
-
37
- * json_pure or json
38
- * termcolor
39
- * rubytter
40
- * highline
41
-
42
- == INSTALL:
43
-
44
- % sudo gem install termtter
45
-
46
33
  == CONFIGURATION:
47
34
 
48
35
  If you would like to use proxy server, add configurations like this:
@@ -61,15 +48,6 @@ You can to load plugins in this way:
61
48
 
62
49
  To update the config, just restart your termtter proccess.
63
50
 
64
- == FORUM:
65
-
66
- http://groups.google.co.jp/group/termtter
67
-
68
- == TODO:
69
-
70
- - Enhance the document and spec
71
- - Improve the UI(a status view, etc...)
72
-
73
51
  == ADVANCED USAGE:
74
52
 
75
53
  t.plug 'curry'
@@ -90,6 +68,18 @@ You can also type `<` as curry.
90
68
  > < u
91
69
  u >
92
70
 
71
+ == REQUIREMENTS:
72
+
73
+ * json_pure or json
74
+ * termcolor
75
+ * rubytter
76
+ * highline
77
+
78
+ == TODO:
79
+
80
+ - Enhance the document and spec
81
+ - Improve the UI(a status view, etc...)
82
+
93
83
  == LICENSE:
94
84
 
95
85
  (The MIT License)
@@ -0,0 +1,6 @@
1
+ module Termtter::Client
2
+ register_command(:eval, :help => ['eval EXPR', 'evaluate expression']) do |arg|
3
+ result = eval(arg) unless arg.empty?
4
+ puts "=> #{result.inspect}"
5
+ end
6
+ end
@@ -139,20 +139,27 @@ module Termtter::Client
139
139
  register_command(
140
140
  :name => :list, :aliases => [:l],
141
141
  :exec_proc => lambda {|arg|
142
+ if arg =~ /\-([\d]+)/
143
+ options = {:count => $1}
144
+ arg = arg.gsub(/\-([\d]+)/, '')
145
+ else
146
+ options = {}
147
+ end
148
+
142
149
  if arg.empty?
143
150
  event = :list_friends_timeline
144
- statuses = Termtter::API.twitter.friends_timeline
151
+ statuses = Termtter::API.twitter.friends_timeline(options)
145
152
  else
146
153
  event = :list_user_timeline
147
154
  statuses = []
148
155
  Array(arg.split).each do |user|
149
156
  user_name = normalize_as_user_name(user)
150
- statuses += Termtter::API.twitter.user_timeline(user_name)
157
+ statuses += Termtter::API.twitter.user_timeline(user_name, options)
151
158
  end
152
159
  end
153
160
  output(statuses, event)
154
161
  },
155
- :help => ["list,l [USERNAME]", "List the posts"]
162
+ :help => ["list,l [USERNAME] [-COUNT]", "List the posts"]
156
163
  )
157
164
 
158
165
  class SearchEvent; attr_reader :query; def initialize(query); @query = query end; end
@@ -12,7 +12,7 @@ config.plugins.stdout.set_default(
12
12
  )
13
13
  config.plugins.stdout.set_default(:time_format_today, '%H:%M:%S')
14
14
  config.plugins.stdout.set_default(:time_format_not_today, '%y/%m/%d %H:%M')
15
- config.plugins.stdout.set_default(:enable_pager, true)
15
+ config.plugins.stdout.set_default(:enable_pager, false)
16
16
  config.plugins.stdout.set_default(:pager, 'less -R -f +G')
17
17
  config.plugins.stdout.set_default(:window_height, 50)
18
18
  config.plugins.stdout.set_default(:typable_ids, ('aa'..'zz').to_a)
@@ -74,10 +74,12 @@ class TermtterIrcGateway < Net::IRC::Server::Session
74
74
 
75
75
  def on_message(m)
76
76
  termtter_command = m.command.downcase + ' ' + m.params.join(' ')
77
- unless Termtter::Client.find_commands(termtter_command).empty?
78
- post '#termtter', NOTICE, main_channel, '> ' + termtter_command
79
- Termtter::Client.call_commands(termtter_command)
80
- end
77
+ return if Termtter::Client.find_commands(termtter_command).empty?
78
+ post '#termtter', NOTICE, main_channel, '> ' + termtter_command
79
+ Termtter::Client.call_commands(termtter_command)
80
+ rescue Exception => e
81
+ post '#termtter', NOTICE, main_channel, "#{e.class.to_s}: #{e.message}"
82
+ Termtter::Client.handle_error(e)
81
83
  end
82
84
 
83
85
  def on_user(m)
@@ -92,6 +94,9 @@ class TermtterIrcGateway < Net::IRC::Server::Session
92
94
  target, message = *m.params
93
95
  Termtter::Client.call_commands('update ' + message)
94
96
  post @prefix, TOPIC, main_channel, message
97
+ rescue Exception => e
98
+ post '#termtter', NOTICE, main_channel, "#{e.class.to_s}: #{e.message}"
99
+ Termtter::Client.handle_error(e)
95
100
  end
96
101
 
97
102
  def log(str)
data/lib/termtter.rb CHANGED
@@ -14,7 +14,8 @@ require 'net/https'
14
14
  require 'open-uri'
15
15
  require 'optparse'
16
16
  require 'readline'
17
- require 'oauth'
17
+ gem 'rubytter', '>= 0.9.2'
18
+ require 'rubytter'
18
19
 
19
20
  require 'termtter/config'
20
21
  require 'termtter/version'
@@ -37,7 +38,4 @@ module Termtter
37
38
  config.system.set_default :conf_file, CONF_DIR + '/config'
38
39
  CONF_FILE = config.system.conf_file
39
40
  $:.unshift(Termtter::CONF_DIR)
40
-
41
- CONSUMER_KEY = 'O80mRgLxHgpzB5yVOnxmiA'
42
- CONSUMER_SECRET = 'jylXMjnIbfaNKpEQjgcVeZWJFTaKXFnj1RA4qTeEM'
43
41
  end
data/lib/termtter/api.rb CHANGED
@@ -1,6 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
- gem 'rubytter', '>= 0.6.5'
3
- require 'rubytter'
4
2
 
5
3
  config.set_default(:host, 'twitter.com')
6
4
  config.proxy.set_default(:port, '8080')
@@ -16,14 +14,11 @@ module Termtter
16
14
  attr_reader :connection, :twitter
17
15
  def setup
18
16
  @connection = Connection.new
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
17
+
18
+ ui = create_highline
19
+ config.user_name = ui.ask('Username: ') if config.user_name.empty?
20
+ config.password = ui.ask('Password: ') { |q| q.echo = false} if config.password.empty?
21
+ @twitter = Rubytter.new(config.user_name, config.password, twitter_option)
27
22
  end
28
23
 
29
24
  def restore_user
@@ -16,7 +16,7 @@ module Termtter
16
16
  @task_manager = Termtter::TaskManager.new
17
17
 
18
18
  config.set_default(:logger, nil)
19
- config.set_default(:update_interval, 300)
19
+ config.set_default(:update_interval, 120)
20
20
  config.set_default(:prompt, '> ')
21
21
  config.set_default(:devel, false)
22
22
 
@@ -297,7 +297,6 @@ module Termtter
297
297
 
298
298
  def load_plugins
299
299
  plug 'defaults'
300
- plug 'devel' if config.devel
301
300
  plug config.system.load_plugins
302
301
  end
303
302
 
@@ -351,7 +350,13 @@ module Termtter
351
350
  else
352
351
  "\"#{message}".strip + "\" [N/y] "
353
352
  end
354
- result = !!(/^y?$/i =~ Readline.readline(prompt, false))
353
+ readline = Readline.readline(prompt, false)
354
+ result =
355
+ if !!(/^$/ =~ readline)
356
+ default_yes
357
+ else
358
+ !!(/^y/i =~ readline)
359
+ end
355
360
 
356
361
  if result && block
357
362
  block.call
@@ -5,32 +5,9 @@ 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
-
20
8
  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
-
29
9
  ui = create_highline
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
10
+ user_name = ui.ask('your twitter user name: ')
34
11
 
35
12
  plugins = Dir.glob(File.expand_path(File.dirname(__FILE__) + "/../plugins/*.rb")).map {|f|
36
13
  f.match(%r|lib/plugins/(.*?).rb$|)[1]
@@ -46,10 +23,6 @@ module Termtter
46
23
  }
47
24
 
48
25
  puts "generated: ~/.termtter/config"
49
- puts "enjoy!"
50
- rescue OAuth::Unauthorized
51
- puts 'failed to authentication!'
52
- exit 1
53
26
  end
54
27
  end
55
28
  end
@@ -1,8 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- config.access_token = '<%= token %>'
4
- config.access_token_secret = '<%= secret %>'
3
+ config.user_name = '<%= user_name %>'
5
4
  #config.update_interval = 120
5
+ #config.enable_ssl = true
6
6
  #config.proxy.host = 'proxy host'
7
7
  #config.proxy.port = '8080'
8
8
  #config.proxy.user_name = 'proxy user'
@@ -157,3 +157,14 @@ def create_highline
157
157
  end
158
158
  HighLine.new($stdin)
159
159
  end
160
+
161
+ def open_brawser(url)
162
+ case RUBY_PLATFORM
163
+ when /linux/
164
+ system 'firefox', url
165
+ when /mswin(?!ce)|mingw|bccwin/
166
+ system 'explorer', url
167
+ else
168
+ system 'open', url
169
+ end
170
+ end
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  module Termtter
3
- VERSION = '1.4.0'
3
+ VERSION = '1.5.0'
4
4
  end
@@ -9,6 +9,7 @@ describe Termtter::Client, 'when the plugin whois is loaded' do
9
9
  end
10
10
 
11
11
  it 'should be whois define' do # What does "be whois define" mean?
12
+ pending "This spec doesn't pass in Japan too"
12
13
  Termtter::Client.plug 'whois'
13
14
  name = 'jp-in-f104.google.com'
14
15
  ip = '66.249.89.104'
@@ -16,5 +17,10 @@ describe Termtter::Client, 'when the plugin whois is loaded' do
16
17
  whois?(name).should == ip
17
18
  whois?(ip).should == name
18
19
  # FIXME: This spec doesn't pass in Canada
20
+ # 1)
21
+ # 'Termtter::Client when the plugin whois is loaded should be whois define' FAILED
22
+ # expected: "66.249.89.104",
23
+ # got: "no address for jp-in-f104.google.com" (using ==)
24
+ # ./spec/plugins/whois_spec.rb:16:
19
25
  end
20
26
  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.4.0
4
+ version: 1.5.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-10-18 00:00:00 +09:00
13
+ date: 2009-10-24 00:00:00 +09:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -90,6 +90,7 @@ files:
90
90
  - lib/plugins/defaults/alias.rb
91
91
  - lib/plugins/defaults/auto_reload.rb
92
92
  - lib/plugins/defaults/command_line.rb
93
+ - lib/plugins/defaults/eval.rb
93
94
  - lib/plugins/defaults/exec.rb
94
95
  - lib/plugins/defaults/fib.rb
95
96
  - lib/plugins/defaults/retweet.rb
@@ -97,7 +98,6 @@ files:
97
98
  - lib/plugins/defaults/standard_completion.rb
98
99
  - lib/plugins/defaults/stdout.rb
99
100
  - lib/plugins/defaults.rb
100
- - lib/plugins/devel.rb
101
101
  - lib/plugins/en2ja.rb
102
102
  - lib/plugins/english.rb
103
103
  - lib/plugins/erb.rb
@@ -258,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
258
258
  requirements: []
259
259
 
260
260
  rubyforge_project: termtter
261
- rubygems_version: 1.3.4
261
+ rubygems_version: 1.3.5
262
262
  signing_key:
263
263
  specification_version: 3
264
264
  summary: Terminal based Twitter client.
data/lib/plugins/devel.rb DELETED
@@ -1,18 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- begin
4
- require 'ruby-debug'
5
- rescue LoadError
6
- end
7
-
8
- module Termtter::Client
9
- register_command(
10
- :name => :eval,
11
- :aliases => [],
12
- :exec_proc => lambda {|arg|
13
- result = eval(arg) unless arg.empty?
14
- puts "=> #{result.inspect}"
15
- },
16
- :help => ['eval EXPR', 'evaluate expression']
17
- )
18
- end