tw 0.2.4 → 0.2.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.
@@ -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