tw 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,8 @@
1
+ === 0.2.5 2012-10-10
2
+
3
+ * JSON print format : --format=json
4
+ * custom print format : --format="#{user} #{text} #{id} #{time}"
5
+
1
6
  === 0.2.4 2012-10-06
2
7
 
3
8
  * require json
@@ -15,7 +15,10 @@ lib/tw/client/auth.rb
15
15
  lib/tw/client/error.rb
16
16
  lib/tw/client/request.rb
17
17
  lib/tw/client/stream.rb
18
+ lib/tw/client/tweet.rb
18
19
  lib/tw/conf.rb
20
+ samples/README.md
21
+ samples/update_profile_image.rb
19
22
  script/console
20
23
  script/destroy
21
24
  script/generate
@@ -52,6 +52,11 @@ Switch Accounts
52
52
  % tw --user:default=user2
53
53
  set default user "@user2"
54
54
 
55
+ Format
56
+
57
+ % tw --format=json
58
+ % tw --stream --format="@#{user} #{text} - http://twitter.com/#{user}/#{id}"
59
+
55
60
 
56
61
  == LICENSE:
57
62
 
data/Rakefile CHANGED
@@ -18,10 +18,9 @@ $hoe = Hoe.spec 'tw' do
18
18
  ['twitter', '>= 4.0.0', '< 5.0.0'],
19
19
  ['userstream', '>= 1.2.0', '< 1.3.0'],
20
20
  ['json', '>= 1.7.5', '< 1.8.0'],
21
- ['args_parser', '>= 0.1.0'],
21
+ ['args_parser', '>= 0.1.1'],
22
22
  ['rainbow', '>= 1.1.4', '< 2.0.0'],
23
23
  ['parallel', '>= 0.5.18', '< 1.0.0']]
24
-
25
24
  end
26
25
 
27
26
  require 'newgem/tasks'
data/lib/tw.rb CHANGED
@@ -8,17 +8,19 @@ require 'user_stream'
8
8
  require 'yaml'
9
9
  require 'time'
10
10
  require 'cgi'
11
+ require 'json'
11
12
  require 'args_parser'
12
13
  require 'rainbow'
13
14
  require 'parallel'
14
15
  require 'tw/conf'
15
16
  require 'tw/client/auth'
16
17
  require 'tw/client/request'
18
+ require 'tw/client/tweet'
17
19
  require 'tw/client/stream'
18
20
  require 'tw/client/error'
19
21
 
20
22
  module Tw
21
- VERSION = '0.2.4'
23
+ VERSION = '0.2.5'
22
24
  class Conf
23
25
  REQUIRE_VERSION = '0.1.0'
24
26
  end
@@ -4,19 +4,19 @@ module Tw::App
4
4
 
5
5
  private
6
6
  def regist_cmds
7
- cmd :user do |v|
7
+ cmd :user do |v, opts|
8
8
  if v == true
9
9
  STDERR.puts 'e.g. tw "hello" --user=USERNAME'
10
10
  on_error
11
11
  end
12
12
  end
13
13
 
14
- cmd 'user:add' do |v|
14
+ cmd 'user:add' do |v, opts|
15
15
  Tw::Auth.regist_user
16
16
  on_exit
17
17
  end
18
18
 
19
- cmd 'user:list' do |v|
19
+ cmd 'user:list' do |v, opts|
20
20
  Tw::Conf['users'].keys.each do |name|
21
21
  puts name == Tw::Conf['default_user'] ? "* #{name}" : " #{name}"
22
22
  end
@@ -24,7 +24,7 @@ module Tw::App
24
24
  on_exit
25
25
  end
26
26
 
27
- cmd 'user:default' do |v|
27
+ cmd 'user:default' do |v, opts|
28
28
  if v.class == String
29
29
  Tw::Conf['default_user'] = v
30
30
  Tw::Conf.save
@@ -36,21 +36,21 @@ module Tw::App
36
36
  on_exit
37
37
  end
38
38
 
39
- cmd :timeline do |v|
39
+ cmd :timeline do |v, opts|
40
40
  unless v.class == String
41
41
  auth
42
- Render.display client.home_timeline
42
+ Render.display client.home_timeline, opts[:format]
43
43
  on_exit
44
44
  end
45
45
  end
46
46
 
47
- cmd :dm do |v|
47
+ cmd :dm do |v, opts|
48
48
  auth
49
- Render.display client.direct_messages
49
+ Render.display client.direct_messages, opts[:format]
50
50
  on_exit
51
51
  end
52
52
 
53
- cmd 'dm:to' do |to|
53
+ cmd 'dm:to' do |to, opts|
54
54
  message = @parser.argv.join(' ')
55
55
  len = message.split(//u).size
56
56
  if len > 140
@@ -69,10 +69,10 @@ module Tw::App
69
69
  on_exit
70
70
  end
71
71
 
72
- cmd :search do |v|
72
+ cmd :search do |v, opts|
73
73
  if v.class == String
74
74
  auth
75
- Render.display client.search v
75
+ Render.display client.search(v), opts[:format]
76
76
  on_exit
77
77
  else
78
78
  STDERR.puts "e.g. tw --search=ruby"
@@ -80,13 +80,13 @@ module Tw::App
80
80
  end
81
81
  end
82
82
 
83
- cmd :stream do |v|
83
+ cmd :stream do |v, opts|
84
84
  stream = Tw::Client::Stream.new @parser.has_param?(:user) ? @parser[:user] : nil
85
85
  puts "-- waiting stream.."
86
86
  loop do
87
87
  begin
88
88
  stream.user_stream do |s|
89
- Render.display s
89
+ Render.display s, opts[:format]
90
90
  end
91
91
  rescue Timeout::Error, SocketError => e
92
92
  sleep 5
@@ -99,7 +99,7 @@ module Tw::App
99
99
  on_exit
100
100
  end
101
101
 
102
- cmd 'stream:filter' do |v|
102
+ cmd 'stream:filter' do |v, opts|
103
103
  unless v.class == String
104
104
  STDERR.puts "e.g. tw --stream:filter=ruby,java"
105
105
  on_error
@@ -110,7 +110,7 @@ module Tw::App
110
110
  loop do
111
111
  begin
112
112
  stream.filter track_words do |s|
113
- Render.display s
113
+ Render.display s, opts[:format]
114
114
  end
115
115
  rescue Timeout::Error, SocketError => e
116
116
  sleep 5
@@ -124,7 +124,7 @@ module Tw::App
124
124
  end
125
125
  end
126
126
 
127
- cmd :pipe do |v|
127
+ cmd :pipe do |v, opts|
128
128
  auth
129
129
  STDIN.read.split(/[\r\n]+/).each do |line|
130
130
  line.split(/(.{140})/u).select{|m|m.size>0}.each do |message|
@@ -135,7 +135,7 @@ module Tw::App
135
135
  on_exit
136
136
  end
137
137
 
138
- cmd :version do |v|
138
+ cmd :version do |v, opts|
139
139
  puts "tw version #{Tw::VERSION}"
140
140
  on_exit
141
141
  end
@@ -52,6 +52,7 @@ module Tw::App
52
52
  arg :search, 'search public timeline', :alias => :s
53
53
  arg :stream, 'show user stream', :alias => :st
54
54
  arg :pipe, 'pipe tweet'
55
+ arg :format, 'output format', :default => 'text'
55
56
  arg :version, 'show version', :alias => :v
56
57
  arg :help, 'show help', :alias => :h
57
58
 
@@ -83,6 +84,8 @@ module Tw::App
83
84
  STDERR.puts " tw --stream"
84
85
  STDERR.puts " tw --stream:filter=ruby,java"
85
86
  STDERR.puts " tw --dm:to=username \"hello!\""
87
+ STDERR.puts " tw --format=json"
88
+ STDERR.puts ' tw --format="@#{user} #{text} - http://twitter.com/#{user}/#{id}"'
86
89
  on_exit
87
90
  end
88
91
 
@@ -90,12 +93,12 @@ module Tw::App
90
93
 
91
94
  cmds.each do |name, cmd|
92
95
  next unless @parser[name]
93
- cmd.call @parser[name]
96
+ cmd.call @parser[name], @parser
94
97
  end
95
98
 
96
99
  auth
97
100
  if @parser.argv.size < 1
98
- Render.display client.mentions
101
+ Render.display client.mentions, @parser[:format]
99
102
  elsif all_requests?(@parser.argv)
100
103
  Render.display Parallel.map(@parser.argv, :in_threads => @parser.argv.size){|arg|
101
104
  if user = username?(arg)
@@ -104,7 +107,7 @@ module Tw::App
104
107
  res = client.list_timeline(user, list)
105
108
  end
106
109
  res
107
- }
110
+ }, @parser[:format]
108
111
  else
109
112
  message = @parser.argv.join(' ')
110
113
  if (len = message.split(//u).size) > 140
@@ -7,14 +7,21 @@ module Tw::App
7
7
  return colors[n%colors.size]
8
8
  end
9
9
 
10
- def self.display(arr)
10
+ def self.display(arr, format)
11
11
  arr = [arr] unless arr.kind_of? Array
12
12
  arr.flatten.sort{|a,b|
13
- a[:id] <=> b[:id]
13
+ a.id <=> b.id
14
14
  }.uniq.each{|m|
15
- user = m[:user].kind_of?(Hash) ? "@#{m[:user][:from]} > @#{m[:user][:to]}" : "@#{m[:user]}"
16
- line = "#{m[:time].strftime '[%m/%d %a] (%H:%M:%S)'} #{user} : #{CGI.unescapeHTML m[:text]}"
17
- puts line.colorize(/@[a-zA-Z0-9_]+/)
15
+ puts case format
16
+ when 'text'
17
+ user = m.user.kind_of?(Hash) ? "@#{m.user[:from]} > @#{m.user[:to]}" : "@#{m.user}"
18
+ line = "#{m.time.strftime '[%m/%d %a] (%H:%M:%S)'} #{user} : #{CGI.unescapeHTML m.text}"
19
+ line.colorize(/@[a-zA-Z0-9_]+/)
20
+ when 'json'
21
+ m.to_json
22
+ else
23
+ m.to_s format
24
+ end
18
25
  }
19
26
  end
20
27
  end
@@ -4,77 +4,63 @@ module Tw
4
4
 
5
5
  def mentions
6
6
  Twitter.mentions.map{|m|
7
- {
8
- :id => m.id,
9
- :user => m.user.screen_name,
10
- :text => m.text,
11
- :time => m.created_at
12
- }
7
+ Tw::Tweet.new(:id => m.id,
8
+ :user => m.user.screen_name,
9
+ :text => m.text,
10
+ :time => m.created_at)
13
11
  }
14
12
  end
15
13
 
16
14
  def search(word)
17
15
  Twitter.search(word).results.map{|m|
18
- {
19
- :id => m.id,
20
- :user => m.from_user,
21
- :text => m.text,
22
- :time => m.created_at
23
- }
16
+ Tw::Tweet.new(:id => m.id,
17
+ :user => m.from_user,
18
+ :text => m.text,
19
+ :time => m.created_at)
24
20
  }
25
21
  end
26
22
 
27
23
  def home_timeline
28
24
  Twitter.home_timeline.map{|m|
29
- {
30
- :id => m.id,
31
- :user => m.user.screen_name,
32
- :text => m.text,
33
- :time => m.created_at
34
- }
25
+ Tw::Tweet.new(:id => m.id,
26
+ :user => m.user.screen_name,
27
+ :text => m.text,
28
+ :time => m.created_at)
35
29
  }
36
30
  end
37
31
 
38
32
  def user_timeline(user)
39
33
  Twitter.user_timeline(user).map{|m|
40
- {
41
- :id => m.id,
42
- :user => m.user.screen_name,
43
- :text => m.text,
44
- :time => m.created_at
45
- }
34
+ Tw::Tweet.new(:id => m.id,
35
+ :user => m.user.screen_name,
36
+ :text => m.text,
37
+ :time => m.created_at)
46
38
  }
47
39
  end
48
40
 
49
41
  def list_timeline(user,list)
50
42
  Twitter.list_timeline(user, list).map{|m|
51
- {
52
- :id => m.id,
53
- :user => m.user.screen_name,
54
- :text => m.text,
55
- :time => m.created_at
56
- }
43
+ Tw::Tweet.new(:id => m.id,
44
+ :user => m.user.screen_name,
45
+ :text => m.text,
46
+ :time => m.created_at)
57
47
  }
58
48
  end
59
49
 
60
50
  def direct_messages
61
51
  [Twitter.direct_messages.map{|m|
62
- {
63
- :id => m.id,
64
- :user => m.sender.screen_name,
65
- :text => m.text,
66
- :time => m.created_at
67
- }
52
+ Tw::Tweet.new(:id => m.id,
53
+ :user => m.sender.screen_name,
54
+ :text => m.text,
55
+ :time => m.created_at)
68
56
  }, Twitter.direct_messages_sent.map{|m|
69
- {
70
- :id => m.id,
71
- :user => {
72
- :from => m.sender.screen_name,
73
- :to => m.recipient.screen_name
74
- },
75
- :text => m.text,
76
- :time => m.created_at
77
- }
57
+ Tw::Tweet.new(:id => m.id,
58
+ :user => {
59
+ :from => m.sender.screen_name,
60
+ :to => m.recipient.screen_name
61
+ },
62
+ :text => m.text,
63
+ :time => m.created_at)
78
64
  }].flatten
79
65
  end
80
66
 
@@ -34,12 +34,10 @@ module Tw
34
34
  private
35
35
  def tweet?(chunk)
36
36
  return false unless chunk.user and chunk.user.screen_name and chunk.text and chunk.created_at and chunk.id
37
- {
38
- :id => chunk.id,
39
- :user => chunk.user.screen_name,
40
- :text => chunk.text,
41
- :time => (Time.parse chunk.created_at)
42
- }
37
+ Tw::Tweet.new(:id => chunk.id,
38
+ :user => chunk.user.screen_name,
39
+ :text => chunk.text,
40
+ :time => (Time.parse chunk.created_at))
43
41
  end
44
42
 
45
43
  end
@@ -0,0 +1,25 @@
1
+ module Tw
2
+ class Tweet
3
+ attr_reader :id, :user, :text, :time
4
+
5
+ def initialize(opts)
6
+ @id = opts[:id]
7
+ @user = opts[:user]
8
+ @text = opts[:text]
9
+ @time = opts[:time]
10
+ end
11
+
12
+ def to_json(*a)
13
+ {
14
+ :id => @id,
15
+ :user => @user,
16
+ :text => @text,
17
+ :time => @time
18
+ }.to_json(*a)
19
+ end
20
+
21
+ def to_s(format)
22
+ self.instance_eval "\"#{format}\""
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,7 @@
1
+ # tw samples
2
+
3
+ ## Use Tw as front-end of twitter auth
4
+
5
+ % tw --user:add
6
+ % ruby upload_profile_image.rb image.jpg
7
+ % ruby upload_profile_image.rb image.jpg shokai
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'tw'
4
+
5
+ if ARGV.empty?
6
+ STDERR.puts "ruby #{$0} image.jpg"
7
+ STDERR.puts "ruby #{$0} image.jpg USERNAME"
8
+ exit 1
9
+ end
10
+
11
+ icon, user = ARGV
12
+
13
+ client = Tw::Client.new
14
+ client.auth user
15
+
16
+ File.open icon do |f|
17
+ puts 'upload success' if Twitter.update_profile_image f
18
+ end
metadata CHANGED
@@ -1,223 +1,240 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: tw
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.4
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 5
10
+ version: 0.2.5
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Sho Hashimoto
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-10-05 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: oauth
16
- requirement: !ruby/object:Gem::Requirement
17
+
18
+ date: 2012-10-09 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
17
23
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 1
28
+ segments:
29
+ - 0
30
+ - 4
31
+ - 7
21
32
  version: 0.4.7
22
33
  - - <
23
- - !ruby/object:Gem::Version
34
+ - !ruby/object:Gem::Version
35
+ hash: 23
36
+ segments:
37
+ - 1
38
+ - 0
39
+ - 0
24
40
  version: 1.0.0
25
41
  type: :runtime
42
+ name: oauth
43
+ version_requirements: *id001
44
+ - !ruby/object:Gem::Dependency
26
45
  prerelease: false
27
- version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: 0.4.7
33
- - - <
34
- - !ruby/object:Gem::Version
35
- version: 1.0.0
36
- - !ruby/object:Gem::Dependency
37
- name: twitter
38
- requirement: !ruby/object:Gem::Requirement
46
+ requirement: &id002 !ruby/object:Gem::Requirement
39
47
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ hash: 63
52
+ segments:
53
+ - 4
54
+ - 0
55
+ - 0
43
56
  version: 4.0.0
44
57
  - - <
45
- - !ruby/object:Gem::Version
58
+ - !ruby/object:Gem::Version
59
+ hash: 55
60
+ segments:
61
+ - 5
62
+ - 0
63
+ - 0
46
64
  version: 5.0.0
47
65
  type: :runtime
66
+ name: twitter
67
+ version_requirements: *id002
68
+ - !ruby/object:Gem::Dependency
48
69
  prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: 4.0.0
55
- - - <
56
- - !ruby/object:Gem::Version
57
- version: 5.0.0
58
- - !ruby/object:Gem::Dependency
59
- name: userstream
60
- requirement: !ruby/object:Gem::Requirement
70
+ requirement: &id003 !ruby/object:Gem::Requirement
61
71
  none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 31
76
+ segments:
77
+ - 1
78
+ - 2
79
+ - 0
65
80
  version: 1.2.0
66
81
  - - <
67
- - !ruby/object:Gem::Version
82
+ - !ruby/object:Gem::Version
83
+ hash: 27
84
+ segments:
85
+ - 1
86
+ - 3
87
+ - 0
68
88
  version: 1.3.0
69
89
  type: :runtime
90
+ name: userstream
91
+ version_requirements: *id003
92
+ - !ruby/object:Gem::Dependency
70
93
  prerelease: false
71
- version_requirements: !ruby/object:Gem::Requirement
94
+ requirement: &id004 !ruby/object:Gem::Requirement
72
95
  none: false
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
76
- version: 1.2.0
77
- - - <
78
- - !ruby/object:Gem::Version
79
- version: 1.3.0
80
- - !ruby/object:Gem::Dependency
81
- name: json
82
- requirement: !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 1
100
+ segments:
101
+ - 1
102
+ - 7
103
+ - 5
87
104
  version: 1.7.5
88
105
  - - <
89
- - !ruby/object:Gem::Version
106
+ - !ruby/object:Gem::Version
107
+ hash: 55
108
+ segments:
109
+ - 1
110
+ - 8
111
+ - 0
90
112
  version: 1.8.0
91
113
  type: :runtime
114
+ name: json
115
+ version_requirements: *id004
116
+ - !ruby/object:Gem::Dependency
92
117
  prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
118
+ requirement: &id005 !ruby/object:Gem::Requirement
94
119
  none: false
95
- requirements:
96
- - - ! '>='
97
- - !ruby/object:Gem::Version
98
- version: 1.7.5
99
- - - <
100
- - !ruby/object:Gem::Version
101
- version: 1.8.0
102
- - !ruby/object:Gem::Dependency
103
- name: args_parser
104
- requirement: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: 0.1.0
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ hash: 25
124
+ segments:
125
+ - 0
126
+ - 1
127
+ - 1
128
+ version: 0.1.1
110
129
  type: :runtime
130
+ name: args_parser
131
+ version_requirements: *id005
132
+ - !ruby/object:Gem::Dependency
111
133
  prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
134
+ requirement: &id006 !ruby/object:Gem::Requirement
113
135
  none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: 0.1.0
118
- - !ruby/object:Gem::Dependency
119
- name: rainbow
120
- requirement: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ hash: 27
140
+ segments:
141
+ - 1
142
+ - 1
143
+ - 4
125
144
  version: 1.1.4
126
145
  - - <
127
- - !ruby/object:Gem::Version
146
+ - !ruby/object:Gem::Version
147
+ hash: 15
148
+ segments:
149
+ - 2
150
+ - 0
151
+ - 0
128
152
  version: 2.0.0
129
153
  type: :runtime
154
+ name: rainbow
155
+ version_requirements: *id006
156
+ - !ruby/object:Gem::Dependency
130
157
  prerelease: false
131
- version_requirements: !ruby/object:Gem::Requirement
132
- none: false
133
- requirements:
134
- - - ! '>='
135
- - !ruby/object:Gem::Version
136
- version: 1.1.4
137
- - - <
138
- - !ruby/object:Gem::Version
139
- version: 2.0.0
140
- - !ruby/object:Gem::Dependency
141
- name: parallel
142
- requirement: !ruby/object:Gem::Requirement
158
+ requirement: &id007 !ruby/object:Gem::Requirement
143
159
  none: false
144
- requirements:
145
- - - ! '>='
146
- - !ruby/object:Gem::Version
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ hash: 47
164
+ segments:
165
+ - 0
166
+ - 5
167
+ - 18
147
168
  version: 0.5.18
148
169
  - - <
149
- - !ruby/object:Gem::Version
170
+ - !ruby/object:Gem::Version
171
+ hash: 23
172
+ segments:
173
+ - 1
174
+ - 0
175
+ - 0
150
176
  version: 1.0.0
151
177
  type: :runtime
178
+ name: parallel
179
+ version_requirements: *id007
180
+ - !ruby/object:Gem::Dependency
152
181
  prerelease: false
153
- version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
- requirements:
156
- - - ! '>='
157
- - !ruby/object:Gem::Version
158
- version: 0.5.18
159
- - - <
160
- - !ruby/object:Gem::Version
161
- version: 1.0.0
162
- - !ruby/object:Gem::Dependency
163
- name: rdoc
164
- requirement: !ruby/object:Gem::Requirement
182
+ requirement: &id008 !ruby/object:Gem::Requirement
165
183
  none: false
166
- requirements:
184
+ requirements:
167
185
  - - ~>
168
- - !ruby/object:Gem::Version
169
- version: '3.10'
186
+ - !ruby/object:Gem::Version
187
+ hash: 19
188
+ segments:
189
+ - 3
190
+ - 10
191
+ version: "3.10"
170
192
  type: :development
193
+ name: rdoc
194
+ version_requirements: *id008
195
+ - !ruby/object:Gem::Dependency
171
196
  prerelease: false
172
- version_requirements: !ruby/object:Gem::Requirement
173
- none: false
174
- requirements:
175
- - - ~>
176
- - !ruby/object:Gem::Version
177
- version: '3.10'
178
- - !ruby/object:Gem::Dependency
179
- name: newgem
180
- requirement: !ruby/object:Gem::Requirement
197
+ requirement: &id009 !ruby/object:Gem::Requirement
181
198
  none: false
182
- requirements:
183
- - - ! '>='
184
- - !ruby/object:Gem::Version
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ hash: 5
203
+ segments:
204
+ - 1
205
+ - 5
206
+ - 3
185
207
  version: 1.5.3
186
208
  type: :development
209
+ name: newgem
210
+ version_requirements: *id009
211
+ - !ruby/object:Gem::Dependency
187
212
  prerelease: false
188
- version_requirements: !ruby/object:Gem::Requirement
213
+ requirement: &id010 !ruby/object:Gem::Requirement
189
214
  none: false
190
- requirements:
191
- - - ! '>='
192
- - !ruby/object:Gem::Version
193
- version: 1.5.3
194
- - !ruby/object:Gem::Dependency
195
- name: hoe
196
- requirement: !ruby/object:Gem::Requirement
197
- none: false
198
- requirements:
215
+ requirements:
199
216
  - - ~>
200
- - !ruby/object:Gem::Version
201
- version: '3.1'
217
+ - !ruby/object:Gem::Version
218
+ hash: 5
219
+ segments:
220
+ - 3
221
+ - 1
222
+ version: "3.1"
202
223
  type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- none: false
206
- requirements:
207
- - - ~>
208
- - !ruby/object:Gem::Version
209
- version: '3.1'
210
- description: ! '* twitter client.'
211
- email:
224
+ name: hoe
225
+ version_requirements: *id010
226
+ description: "* twitter client."
227
+ email:
212
228
  - hashimoto@shokai.org
213
- executables:
229
+ executables:
214
230
  - tw
215
231
  extensions: []
216
- extra_rdoc_files:
232
+
233
+ extra_rdoc_files:
217
234
  - History.txt
218
235
  - Manifest.txt
219
236
  - README.rdoc
220
- files:
237
+ files:
221
238
  - Gemfile
222
239
  - Gemfile.lock
223
240
  - History.txt
@@ -235,7 +252,10 @@ files:
235
252
  - lib/tw/client/error.rb
236
253
  - lib/tw/client/request.rb
237
254
  - lib/tw/client/stream.rb
255
+ - lib/tw/client/tweet.rb
238
256
  - lib/tw/conf.rb
257
+ - samples/README.md
258
+ - samples/update_profile_image.rb
239
259
  - script/console
240
260
  - script/destroy
241
261
  - script/generate
@@ -244,33 +264,38 @@ files:
244
264
  - .gemtest
245
265
  homepage: http://shokai.github.com/tw
246
266
  licenses: []
247
- post_install_message: ! '!! Installed "tw" command. => http://shokai.github.com/tw'
248
- rdoc_options:
267
+
268
+ post_install_message: "!! Installed \"tw\" command. => http://shokai.github.com/tw"
269
+ rdoc_options:
249
270
  - --main
250
271
  - README.rdoc
251
- require_paths:
272
+ require_paths:
252
273
  - lib
253
- required_ruby_version: !ruby/object:Gem::Requirement
274
+ required_ruby_version: !ruby/object:Gem::Requirement
254
275
  none: false
255
- requirements:
256
- - - ! '>='
257
- - !ruby/object:Gem::Version
258
- version: '0'
259
- segments:
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ hash: 3
280
+ segments:
260
281
  - 0
261
- hash: 4135392877753416744
262
- required_rubygems_version: !ruby/object:Gem::Requirement
282
+ version: "0"
283
+ required_rubygems_version: !ruby/object:Gem::Requirement
263
284
  none: false
264
- requirements:
265
- - - ! '>='
266
- - !ruby/object:Gem::Version
267
- version: '0'
285
+ requirements:
286
+ - - ">="
287
+ - !ruby/object:Gem::Version
288
+ hash: 3
289
+ segments:
290
+ - 0
291
+ version: "0"
268
292
  requirements: []
293
+
269
294
  rubyforge_project: tw
270
295
  rubygems_version: 1.8.24
271
296
  signing_key:
272
297
  specification_version: 3
273
- summary: ! '* twitter client.'
274
- test_files:
298
+ summary: "* twitter client."
299
+ test_files:
275
300
  - test/test_helper.rb
276
301
  - test/test_tw.rb