t 1.7.1 → 1.7.2

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -5,12 +5,14 @@
5
5
  [![Gem Version](https://badge.fury.io/rb/t.png)][gem]
6
6
  [![Build Status](https://secure.travis-ci.org/sferik/t.png?branch=master)][travis]
7
7
  [![Dependency Status](https://gemnasium.com/sferik/t.png?travis)][gemnasium]
8
+ [![Coverage Status](https://coveralls.io/repos/sferik/t/badge.png?branch=master)][coveralls]
8
9
  [![Pledgie](http://www.pledgie.com/campaigns/17330.png)][pledgie]
9
10
  [![Flattr](http://api.flattr.com/button/flattr-badge-large.png)][flattr]
10
11
 
11
12
  [gem]: https://rubygems.org/gems/t
12
13
  [travis]: http://travis-ci.org/sferik/t
13
14
  [gemnasium]: https://gemnasium.com/sferik/t
15
+ [coveralls]: https://coveralls.io/r/sferik/t
14
16
  [pledgie]: http://www.pledgie.com/campaigns/17330
15
17
  [flattr]: http://flattr.com/thing/815001/sferikt-on-GitHub
16
18
 
@@ -63,7 +65,7 @@ previously registered a Twitter application, it should be listed at
63
65
  to set your application's Access Level to "Read, Write and Access direct
64
66
  messages", otherwise you'll receive an error that looks like this:
65
67
 
66
- Read-only application cannot POST
68
+ Error processing your OAuth request: Read-only application cannot POST
67
69
 
68
70
  Now, you're ready to authorize a Twitter account with your application. To
69
71
  proceed, type the following command at the prompt and follow the instructions:
@@ -249,15 +251,14 @@ used by `t`:
249
251
  ![List](https://github.com/sferik/t/raw/master/screenshots/list.png)
250
252
 
251
253
  ## Shell completion
252
- If you're running [Zsh][], you can source the [bundled completion
253
- file][completion] to get shell completion for `t` commands, subcommands, and
254
+ If you're running Zsh, you can source one of the [bundled completion
255
+ files][completion] to get shell completion for `t` commands, subcommands, and
254
256
  flags.
255
257
 
256
258
  Don't run Zsh? Why not [contribute][] completion support for your favorite
257
259
  shell?
258
260
 
259
- [zsh]: http://zsh.org
260
- [completion]: etc/t-completion.zsh
261
+ [completion]: etc
261
262
  [contribute]: CONTRIBUTING.md
262
263
 
263
264
  ## History
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ Bundler::GemHelper.install_tasks
4
4
  require 'rspec/core/rake_task'
5
5
  RSpec::Core::RakeTask.new(:spec)
6
6
 
7
- import 'tasks/zsh.rake'
7
+ Dir.glob('tasks/*.rake').each { |r| import r }
8
8
 
9
9
  task :release => 'completion:zsh'
10
10
  task :test => :spec
data/bin/t CHANGED
@@ -10,7 +10,9 @@ require 'twitter'
10
10
 
11
11
  # Output message to $stderr, prefixed with the program name
12
12
  def pute(*args)
13
- args.first.insert(0, "#{$0}: ")
13
+ first = args.shift.dup
14
+ first.insert(0, "#{$0}: ")
15
+ args.unshift(first)
14
16
  $stderr.puts(*args)
15
17
  end
16
18
 
@@ -27,8 +29,20 @@ rescue Twitter::Error::TooManyRequests => error
27
29
  "The rate limit for this request will reset in #{error.rate_limit.reset_in} seconds.",
28
30
  "While you wait, consider making a polite request for Twitter to increase the API rate limit at https://dev.twitter.com/discussions/10644"
29
31
  exit 1
30
- rescue Twitter::Error::Unauthorized => error
31
- pute error.message, "Run `t authorize` to authorize."
32
+ rescue Twitter::Error::BadRequest => error
33
+ pute error.message,
34
+ "Run `t authorize` to authorize."
35
+ exit 1
36
+ rescue Twitter::Error::Forbidden, Twitter::Error::Unauthorized => error
37
+ pute error.message
38
+ if error.message == "Error processing your OAuth request: Read-only application cannot POST" ||
39
+ error.message == "This application is not allowed to access or delete your direct messages"
40
+ $stderr.puts(%q(Make sure to set your Twitter application's Access Level to "Read, Write and Access direct messages".))
41
+ require 'thor'
42
+ Thor::Shell::Basic.new.ask "Press [Enter] to open the Twitter Developer site."
43
+ require 'launchy'
44
+ Launchy.open("https://dev.twitter.com/apps") { |u,o,e| $stderr.puts "Manually open #{u}" }
45
+ end
32
46
  exit 1
33
47
  rescue Twitter::Error => error
34
48
  pute error.message
@@ -29,7 +29,7 @@ module T
29
29
  check_unknown_options!
30
30
 
31
31
  class_option "host", :aliases => "-H", :type => :string, :default => T::Requestable::DEFAULT_HOST, :desc => "Twitter API server"
32
- class_option "color", :type => :string, :default => "auto", :desc => "Control how color is used in output."
32
+ class_option "color", :aliases => "-C", :type => :string, :enum => %w(auto never), :default => "auto", :desc => "Control how color is used in output"
33
33
  class_option "no-ssl", :aliases => "-U", :type => :boolean, :default => false, :desc => "Disable SSL"
34
34
  class_option "profile", :aliases => "-P", :type => :string, :default => File.join(File.expand_path("~"), T::RCFile::FILE_NAME), :desc => "Path to RC file", :banner => "FILE"
35
35
 
@@ -79,7 +79,7 @@ module T
79
79
  say
80
80
  end
81
81
  require 'launchy'
82
- Launchy.open("https://dev.twitter.com/apps", :dry_run => options['display-url'])
82
+ open_or_print( "https://dev.twitter.com/apps", :dry_run => options['display-url'] )
83
83
  key = ask "Enter your consumer key:"
84
84
  secret = ask "Enter your consumer secret:"
85
85
  consumer = OAuth::Consumer.new(key, secret, :site => base_url)
@@ -94,7 +94,7 @@ module T
94
94
  say
95
95
  ask "Press [Enter] to open the Twitter app authorization page."
96
96
  say
97
- Launchy.open(url, :dry_run => options['display-url'])
97
+ open_or_print(url, :dry_run => options['display-url'])
98
98
  pin = ask "Enter the supplied PIN:"
99
99
  access_token = request_token.get_access_token(:oauth_verifier => pin.chomp)
100
100
  oauth_response = access_token.get('/1.1/account/verify_credentials.json?include_entities=false&skip_status=true')
@@ -510,13 +510,13 @@ module T
510
510
  require 'launchy'
511
511
  if options['id']
512
512
  user = client.user(user.to_i)
513
- Launchy.open("https://twitter.com/#{user.screen_name}", :dry_run => options['display-url'])
513
+ open_or_print("https://twitter.com/#{user.screen_name}", :dry_run => options['display-url'])
514
514
  elsif options['status']
515
515
  status = client.status(user.to_i, :include_my_retweet => false)
516
- Launchy.open("https://twitter.com/#{status.from_user}/status/#{status.id}", :dry_run => options['display-url'])
516
+ open_or_print("https://twitter.com/#{status.from_user}/status/#{status.id}", :dry_run => options['display-url'])
517
517
  else
518
518
  require 't/core_ext/string'
519
- Launchy.open("https://twitter.com/#{user.strip_ats}", :dry_run => options['display-url'])
519
+ open_or_print("https://twitter.com/#{user.strip_ats}", :dry_run => options['display-url'])
520
520
  end
521
521
  end
522
522
 
@@ -651,6 +651,7 @@ module T
651
651
  method_option "exclude", :aliases => "-e", :type => :string, :enum => %w(replies retweets), :desc => "Exclude certain types of Tweets from the results.", :banner => "TYPE"
652
652
  method_option "id", :aliases => "-i", :type => :boolean, :default => false, :desc => "Specify user via ID instead of screen name."
653
653
  method_option "long", :aliases => "-l", :type => :boolean, :default => false, :desc => "Output in long format."
654
+ method_option "max_id", :aliases => "-m", :type => :numeric, :desc => "Returns only the results with an ID less than the specified ID."
654
655
  method_option "number", :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS, :desc => "Limit the number of results."
655
656
  method_option "reverse", :aliases => "-r", :type => :boolean, :default => false, :desc => "Reverse the order of the sort."
656
657
  method_option "since_id", :aliases => "-s", :type => :numeric, :desc => "Returns only the results with an ID greater than the specified ID."
@@ -659,6 +660,7 @@ module T
659
660
  opts = {}
660
661
  opts[:exclude_replies] = true if options['exclude'] == 'replies'
661
662
  opts[:include_rts] = false if options['exclude'] == 'retweets'
663
+ opts[:max_id] = options['max_id'] if options['max_id']
662
664
  opts[:since_id] = options['since_id'] if options['since_id']
663
665
  if user
664
666
  require 't/core_ext/string'
@@ -11,11 +11,6 @@ module T
11
11
 
12
12
  check_unknown_options!
13
13
 
14
- class_option "host", :aliases => "-H", :type => :string, :default => T::Requestable::DEFAULT_HOST, :desc => "Twitter API server"
15
- class_option "no-color", :aliases => "-N", :type => :boolean, :desc => "Disable colorization in output"
16
- class_option "no-ssl", :aliases => "-U", :type => :boolean, :default => false, :desc => "Disable SSL"
17
- class_option "profile", :aliases => "-P", :type => :string, :default => File.join(File.expand_path("~"), T::RCFile::FILE_NAME), :desc => "Path to RC file", :banner => "FILE"
18
-
19
14
  def initialize(*)
20
15
  @rcfile = T::RCFile.instance
21
16
  super
@@ -19,11 +19,6 @@ module T
19
19
 
20
20
  check_unknown_options!
21
21
 
22
- class_option "host", :aliases => "-H", :type => :string, :default => T::Requestable::DEFAULT_HOST, :desc => "Twitter API server"
23
- class_option "no-color", :aliases => "-N", :type => :boolean, :desc => "Disable colorization in output"
24
- class_option "no-ssl", :aliases => "-U", :type => :boolean, :default => false, :desc => "Disable SSL"
25
- class_option "profile", :aliases => "-P", :type => :string, :default => File.join(File.expand_path("~"), T::RCFile::FILE_NAME), :desc => "Path to RC file", :banner => "FILE"
26
-
27
22
  def initialize(*)
28
23
  @rcfile = T::RCFile.instance
29
24
  super
@@ -2,7 +2,7 @@ module T
2
2
  module Printable
3
3
  LIST_HEADINGS = ["ID", "Created at", "Screen name", "Slug", "Members", "Subscribers", "Mode", "Description"]
4
4
  TWEET_HEADINGS = ["ID", "Posted at", "Screen name", "Text"]
5
- USER_HEADINGS = ["ID", "Since", "Last tweeted at", "Tweets", "Favorites", "Listed", "Following", "Followers", "Screen name", "Name", "Verified", "Bio", "Status", "Location", "URL"]
5
+ USER_HEADINGS = ["ID", "Since", "Last tweeted at", "Tweets", "Favorites", "Listed", "Following", "Followers", "Screen name", "Name", "Verified", "Protected", "Bio", "Status", "Location", "URL"]
6
6
  MONTH_IN_SECONDS = 2592000
7
7
 
8
8
  private
@@ -16,7 +16,7 @@ module T
16
16
  end
17
17
 
18
18
  def build_long_user(user)
19
- [user.id, ls_formatted_time(user), ls_formatted_time(user.status), user.statuses_count, user.favourites_count, user.listed_count, user.friends_count, user.followers_count, "@#{user.screen_name}", user.name, user.verified? ? "Yes" : "No", user.status ? decode_full_text(user.status, options['decode_urls']).gsub(/\n+/, ' ') : nil, user.location, user.url]
19
+ [user.id, ls_formatted_time(user), ls_formatted_time(user.status), user.statuses_count, user.favourites_count, user.listed_count, user.friends_count, user.followers_count, "@#{user.screen_name}", user.name, user.verified? ? "Yes" : "No", user.protected? ? "Yes" : "No", user.description, user.status ? decode_full_text(user.status, options['decode_urls']).gsub(/\n+/, ' ') : nil, user.location, user.url]
20
20
  end
21
21
 
22
22
  def csv_formatted_time(object, key=:created_at)
@@ -51,7 +51,7 @@ module T
51
51
  def print_csv_user(user)
52
52
  require 'csv'
53
53
  require 'fastercsv' unless Array.new.respond_to?(:to_csv)
54
- say [user.id, csv_formatted_time(user), csv_formatted_time(user.status), user.statuses_count, user.favourites_count, user.listed_count, user.friends_count, user.followers_count, user.screen_name, user.name, user.verified?, user.description, user.status ? user.status.full_text : nil, user.location, user.url].to_csv
54
+ say [user.id, csv_formatted_time(user), csv_formatted_time(user.status), user.statuses_count, user.favourites_count, user.listed_count, user.friends_count, user.followers_count, user.screen_name, user.name, user.verified?, user.protected?, user.description, user.status ? user.status.full_text : nil, user.location, user.url].to_csv
55
55
  end
56
56
 
57
57
  def print_lists(lists)
@@ -113,14 +113,9 @@ module T
113
113
  end
114
114
 
115
115
  def print_message(from_user, message)
116
- if options['color'] == 'always'
116
+ case options['color']
117
+ when 'auto'
117
118
  say(" @#{from_user}", [:bold, :yellow])
118
- elsif options['color'] == 'auto'
119
- if $stdout.tty?
120
- say(" @#{from_user}", [:bold, :yellow])
121
- else
122
- say(" @#{from_user}")
123
- end
124
119
  else
125
120
  say(" @#{from_user}")
126
121
  end
@@ -18,11 +18,6 @@ module T
18
18
 
19
19
  check_unknown_options!
20
20
 
21
- class_option "host", :aliases => "-H", :type => :string, :default => T::Requestable::DEFAULT_HOST, :desc => "Twitter API server"
22
- class_option "no-color", :aliases => "-N", :type => :boolean, :desc => "Disable colorization in output"
23
- class_option "no-ssl", :aliases => "-U", :type => :boolean, :default => false, :desc => "Disable SSL"
24
- class_option "profile", :aliases => "-P", :type => :string, :default => File.join(File.expand_path("~"), T::RCFile::FILE_NAME), :desc => "Path to RC file", :banner => "FILE"
25
-
26
21
  def initialize(*)
27
22
  @rcfile = T::RCFile.instance
28
23
  super
@@ -173,6 +168,7 @@ module T
173
168
  method_option "exclude", :aliases => "-e", :type => :string, :enum => %w(replies retweets), :desc => "Exclude certain types of Tweets from the results.", :banner => "TYPE"
174
169
  method_option "id", :aliases => "-i", :type => :boolean, :default => false, :desc => "Specify user via ID instead of screen name."
175
170
  method_option "long", :aliases => "-l", :type => :boolean, :default => false, :desc => "Output in long format."
171
+ method_option "max_id", :aliases => "-m", :type => :numeric, :desc => "Returns only the results with an ID less than the specified ID."
176
172
  method_option "since_id", :aliases => "-s", :type => :numeric, :desc => "Returns only the results with an ID greater than the specified ID."
177
173
  def timeline(*args)
178
174
  query = args.pop
@@ -181,6 +177,7 @@ module T
181
177
  opts[:include_entities] = 1 if options['decode_urls']
182
178
  opts[:exclude_replies] = true if options['exclude'] == 'replies'
183
179
  opts[:include_rts] = false if options['exclude'] == 'retweets'
180
+ opts[:max_id] = options['max_id'] if options['max_id']
184
181
  opts[:since_id] = options['since_id'] if options['since_id']
185
182
  if user
186
183
  require 't/core_ext/string'
@@ -8,11 +8,6 @@ module T
8
8
 
9
9
  check_unknown_options!
10
10
 
11
- class_option "host", :aliases => "-H", :type => :string, :default => T::Requestable::DEFAULT_HOST, :desc => "Twitter API server"
12
- class_option "no-color", :aliases => "-N", :type => :boolean, :desc => "Disable colorization in output"
13
- class_option "no-ssl", :aliases => "-U", :type => :boolean, :default => false, :desc => "Disable SSL"
14
- class_option "profile", :aliases => "-P", :type => :string, :default => File.join(File.expand_path("~"), T::RCFile::FILE_NAME), :desc => "Path to RC file", :banner => "FILE"
15
-
16
11
  def initialize(*)
17
12
  @rcfile = T::RCFile.instance
18
13
  super
@@ -16,11 +16,6 @@ module T
16
16
 
17
17
  check_unknown_options!
18
18
 
19
- class_option "host", :aliases => "-H", :type => :string, :default => T::Requestable::DEFAULT_HOST, :desc => "Twitter API server"
20
- class_option "no-color", :aliases => "-N", :type => :boolean, :desc => "Disable colorization in output"
21
- class_option "no-ssl", :aliases => "-U", :type => :boolean, :default => false, :desc => "Disable SSL"
22
- class_option "profile", :aliases => "-P", :type => :string, :default => File.join(File.expand_path("~"), T::RCFile::FILE_NAME), :desc => "Path to RC file", :banner => "FILE"
23
-
24
19
  def initialize(*)
25
20
  @rcfile = T::RCFile.instance
26
21
  super
@@ -112,5 +112,10 @@ module T
112
112
  full_text
113
113
  end
114
114
 
115
+ def open_or_print( url, options )
116
+ Launchy.open( url, options ) do |e|
117
+ say "Open: #{url}"
118
+ end
119
+ end
115
120
  end
116
121
  end
@@ -14,7 +14,7 @@ module T
14
14
 
15
15
  # @return [Integer]
16
16
  def patch
17
- 1
17
+ 2
18
18
  end
19
19
 
20
20
  # @return [String, NilClass]
@@ -158,39 +158,39 @@ testcli
158
158
  it "has the correct output" do
159
159
  @cli.direct_messages
160
160
  expect($stdout.string).to eq <<-eos
161
- \e[1m\e[33m @sferik\e[0m
161
+ @sferik
162
162
  Sounds good. Meeting Tuesday is fine.
163
163
 
164
- \e[1m\e[33m @sferik\e[0m
164
+ @sferik
165
165
  That's great news! Let's plan to chat around 8 AM tomorrow Pacific time. Does
166
166
  that work for you?
167
167
 
168
- \e[1m\e[33m @sferik\e[0m
168
+ @sferik
169
169
  I asked Yehuda about the stipend. I believe it has already been sent. Glad
170
170
  you're feeling better.
171
171
 
172
- \e[1m\e[33m @sferik\e[0m
172
+ @sferik
173
173
  Just checking in. How's everything going?
174
174
 
175
- \e[1m\e[33m @sferik\e[0m
175
+ @sferik
176
176
  Not sure about the payment. Feel free to ask Leah or Yehuda directly. Think
177
177
  you'll be able to finish up your work on graphs this weekend?
178
178
 
179
- \e[1m\e[33m @sferik\e[0m
179
+ @sferik
180
180
  How are the graph enhancements coming?
181
181
 
182
- \e[1m\e[33m @sferik\e[0m
182
+ @sferik
183
183
  How are the graphs coming? I'm really looking forward to seeing what you do
184
184
  with Raphaël.
185
185
 
186
- \e[1m\e[33m @sferik\e[0m
186
+ @sferik
187
187
  Awesome! Any luck duplicating the Gemfile.lock error with Ruby 1.9.2 final?
188
188
 
189
- \e[1m\e[33m @sferik\e[0m
189
+ @sferik
190
190
  I just committed a bunch of cleanup and fixes to RailsAdmin that touched many
191
191
  of files. Make sure you pull to avoid conflicts.
192
192
 
193
- \e[1m\e[33m @sferik\e[0m
193
+ @sferik
194
194
  I'm trying to debug the issue you were having with the Bundler Gemfile.lock
195
195
  shortref. What version of Ruby and RubyGems are you running?
196
196
 
@@ -263,40 +263,40 @@ ID Posted at Screen name Text
263
263
  it "reverses the order of the sort" do
264
264
  @cli.direct_messages
265
265
  expect($stdout.string).to eq <<-eos
266
- \e[1m\e[33m @sferik\e[0m
266
+ @sferik
267
267
  I'm trying to debug the issue you were having with the Bundler Gemfile.lock
268
268
  shortref. What version of Ruby and RubyGems are you running?
269
269
 
270
- \e[1m\e[33m @sferik\e[0m
270
+ @sferik
271
271
  I just committed a bunch of cleanup and fixes to RailsAdmin that touched many
272
272
  of files. Make sure you pull to avoid conflicts.
273
273
 
274
- \e[1m\e[33m @sferik\e[0m
274
+ @sferik
275
275
  Awesome! Any luck duplicating the Gemfile.lock error with Ruby 1.9.2 final?
276
276
 
277
- \e[1m\e[33m @sferik\e[0m
277
+ @sferik
278
278
  How are the graphs coming? I'm really looking forward to seeing what you do
279
279
  with Raphaël.
280
280
 
281
- \e[1m\e[33m @sferik\e[0m
281
+ @sferik
282
282
  How are the graph enhancements coming?
283
283
 
284
- \e[1m\e[33m @sferik\e[0m
284
+ @sferik
285
285
  Not sure about the payment. Feel free to ask Leah or Yehuda directly. Think
286
286
  you'll be able to finish up your work on graphs this weekend?
287
287
 
288
- \e[1m\e[33m @sferik\e[0m
288
+ @sferik
289
289
  Just checking in. How's everything going?
290
290
 
291
- \e[1m\e[33m @sferik\e[0m
291
+ @sferik
292
292
  I asked Yehuda about the stipend. I believe it has already been sent. Glad
293
293
  you're feeling better.
294
294
 
295
- \e[1m\e[33m @sferik\e[0m
295
+ @sferik
296
296
  That's great news! Let's plan to chat around 8 AM tomorrow Pacific time. Does
297
297
  that work for you?
298
298
 
299
- \e[1m\e[33m @sferik\e[0m
299
+ @sferik
300
300
  Sounds good. Meeting Tuesday is fine.
301
301
 
302
302
  eos
@@ -316,39 +316,39 @@ ID Posted at Screen name Text
316
316
  it "has the correct output" do
317
317
  @cli.direct_messages_sent
318
318
  expect($stdout.string).to eq <<-eos
319
- \e[1m\e[33m @hurrycane\e[0m
319
+ @hurrycane
320
320
  Sounds good. Meeting Tuesday is fine.
321
321
 
322
- \e[1m\e[33m @hurrycane\e[0m
322
+ @hurrycane
323
323
  That's great news! Let's plan to chat around 8 AM tomorrow Pacific time. Does
324
324
  that work for you?
325
325
 
326
- \e[1m\e[33m @hurrycane\e[0m
326
+ @hurrycane
327
327
  I asked Yehuda about the stipend. I believe it has already been sent. Glad
328
328
  you're feeling better.
329
329
 
330
- \e[1m\e[33m @hurrycane\e[0m
330
+ @hurrycane
331
331
  Just checking in. How's everything going?
332
332
 
333
- \e[1m\e[33m @hurrycane\e[0m
333
+ @hurrycane
334
334
  Not sure about the payment. Feel free to ask Leah or Yehuda directly. Think
335
335
  you'll be able to finish up your work on graphs this weekend?
336
336
 
337
- \e[1m\e[33m @hurrycane\e[0m
337
+ @hurrycane
338
338
  How are the graph enhancements coming?
339
339
 
340
- \e[1m\e[33m @hurrycane\e[0m
340
+ @hurrycane
341
341
  How are the graphs coming? I'm really looking forward to seeing what you do
342
342
  with Raphaël.
343
343
 
344
- \e[1m\e[33m @hurrycane\e[0m
344
+ @hurrycane
345
345
  Awesome! Any luck duplicating the Gemfile.lock error with Ruby 1.9.2 final?
346
346
 
347
- \e[1m\e[33m @hurrycane\e[0m
347
+ @hurrycane
348
348
  I just committed a bunch of cleanup and fixes to RailsAdmin that touched many
349
349
  of files. Make sure you pull to avoid conflicts.
350
350
 
351
- \e[1m\e[33m @hurrycane\e[0m
351
+ @hurrycane
352
352
  I'm trying to debug the issue you were having with the Bundler Gemfile.lock
353
353
  shortref. What version of Ruby and RubyGems are you running?
354
354
 
@@ -421,40 +421,40 @@ ID Posted at Screen name Text
421
421
  it "reverses the order of the sort" do
422
422
  @cli.direct_messages_sent
423
423
  expect($stdout.string).to eq <<-eos
424
- \e[1m\e[33m @hurrycane\e[0m
424
+ @hurrycane
425
425
  I'm trying to debug the issue you were having with the Bundler Gemfile.lock
426
426
  shortref. What version of Ruby and RubyGems are you running?
427
427
 
428
- \e[1m\e[33m @hurrycane\e[0m
428
+ @hurrycane
429
429
  I just committed a bunch of cleanup and fixes to RailsAdmin that touched many
430
430
  of files. Make sure you pull to avoid conflicts.
431
431
 
432
- \e[1m\e[33m @hurrycane\e[0m
432
+ @hurrycane
433
433
  Awesome! Any luck duplicating the Gemfile.lock error with Ruby 1.9.2 final?
434
434
 
435
- \e[1m\e[33m @hurrycane\e[0m
435
+ @hurrycane
436
436
  How are the graphs coming? I'm really looking forward to seeing what you do
437
437
  with Raphaël.
438
438
 
439
- \e[1m\e[33m @hurrycane\e[0m
439
+ @hurrycane
440
440
  How are the graph enhancements coming?
441
441
 
442
- \e[1m\e[33m @hurrycane\e[0m
442
+ @hurrycane
443
443
  Not sure about the payment. Feel free to ask Leah or Yehuda directly. Think
444
444
  you'll be able to finish up your work on graphs this weekend?
445
445
 
446
- \e[1m\e[33m @hurrycane\e[0m
446
+ @hurrycane
447
447
  Just checking in. How's everything going?
448
448
 
449
- \e[1m\e[33m @hurrycane\e[0m
449
+ @hurrycane
450
450
  I asked Yehuda about the stipend. I believe it has already been sent. Glad
451
451
  you're feeling better.
452
452
 
453
- \e[1m\e[33m @hurrycane\e[0m
453
+ @hurrycane
454
454
  That's great news! Let's plan to chat around 8 AM tomorrow Pacific time. Does
455
455
  that work for you?
456
456
 
457
- \e[1m\e[33m @hurrycane\e[0m
457
+ @hurrycane
458
458
  Sounds good. Meeting Tuesday is fine.
459
459
 
460
460
  eos
@@ -487,9 +487,9 @@ ID Posted at Screen name Text
487
487
  it "outputs in CSV format" do
488
488
  @cli.groupies
489
489
  expect($stdout.string).to eq <<-eos
490
- ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Bio,Status,Location,URL
491
- 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
492
- 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
490
+ ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Protected,Bio,Status,Location,URL
491
+ 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
492
+ 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
493
493
  eos
494
494
  end
495
495
  end
@@ -800,78 +800,78 @@ ID Since Last tweeted at Tweets Favorites Listed Following...
800
800
  it "has the correct output" do
801
801
  @cli.favorites
802
802
  expect($stdout.string).to eq <<-eos
803
- \e[1m\e[33m @mutgoff\e[0m
803
+ @mutgoff
804
804
  Happy Birthday @imdane. Watch out for those @rally pranksters!
805
805
 
806
- \e[1m\e[33m @ironicsans\e[0m
806
+ @ironicsans
807
807
  If you like good real-life stories, check out @NarrativelyNY's just-launched
808
808
  site http://t.co/wiUL07jE (and also visit http://t.co/ZoyQxqWA)
809
809
 
810
- \e[1m\e[33m @pat_shaughnessy\e[0m
810
+ @pat_shaughnessy
811
811
  Something else to vote for: "New Rails workshops to bring more women into the
812
812
  Boston software scene" http://t.co/eNBuckHc /cc @bostonrb
813
813
 
814
- \e[1m\e[33m @calebelston\e[0m
814
+ @calebelston
815
815
  Pushing the button to launch the site. http://t.co/qLoEn5jG
816
816
 
817
- \e[1m\e[33m @calebelston\e[0m
817
+ @calebelston
818
818
  RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k
819
819
 
820
- \e[1m\e[33m @fivethirtyeight\e[0m
820
+ @fivethirtyeight
821
821
  The Weatherman is Not a Moron: http://t.co/ZwL5Gnq5. An excerpt from my book,
822
822
  THE SIGNAL AND THE NOISE (http://t.co/fNXj8vCE)
823
823
 
824
- \e[1m\e[33m @codeforamerica\e[0m
824
+ @codeforamerica
825
825
  RT @randomhacks: Going to Code Across Austin II: Y'all Come Hack Now, Sat,
826
826
  Sep 8 http://t.co/Sk5BM7U3 We'll see y'all there! #rhok @codeforamerica
827
827
  @TheaClay
828
828
 
829
- \e[1m\e[33m @fbjork\e[0m
829
+ @fbjork
830
830
  RT @jondot: Just published: "Pragmatic Concurrency With #Ruby"
831
831
  http://t.co/kGEykswZ /cc @JRuby @headius
832
832
 
833
- \e[1m\e[33m @mbostock\e[0m
833
+ @mbostock
834
834
  If you are wondering how we computed the split bubbles: http://t.co/BcaqSs5u
835
835
 
836
- \e[1m\e[33m @FakeDorsey\e[0m
836
+ @FakeDorsey
837
837
  "Write drunk. Edit sober."—Ernest Hemingway
838
838
 
839
- \e[1m\e[33m @al3x\e[0m
839
+ @al3x
840
840
  RT @wcmaier: Better banking through better ops: build something new with us
841
841
  @Simplify (remote, PDX) http://t.co/8WgzKZH3
842
842
 
843
- \e[1m\e[33m @calebelston\e[0m
843
+ @calebelston
844
844
  We just announced Mosaic, what we've been working on since the Yobongo
845
845
  acquisition. My personal post, http://t.co/ELOyIRZU @heymosaic
846
846
 
847
- \e[1m\e[33m @BarackObama\e[0m
847
+ @BarackObama
848
848
  Donate $10 or more --> get your favorite car magnet: http://t.co/NfRhl2s2
849
849
  #Obama2012
850
850
 
851
- \e[1m\e[33m @JEG2\e[0m
851
+ @JEG2
852
852
  RT @tenderlove: If corporations are people, can we use them to drive in the
853
853
  carpool lane?
854
854
 
855
- \e[1m\e[33m @eveningedition\e[0m
855
+ @eveningedition
856
856
  LDN—Obama's nomination; Putin woos APEC; Bombs hit Damascus; Quakes shake
857
857
  China; Canada cuts Iran ties; weekend read: http://t.co/OFs6dVW4
858
858
 
859
- \e[1m\e[33m @dhh\e[0m
859
+ @dhh
860
860
  RT @ggreenwald: Democrats parade Osama bin Laden's corpse as their proudest
861
861
  achievement: why this goulish jingoism is so warped http://t.co/kood278s
862
862
 
863
- \e[1m\e[33m @jasonfried\e[0m
863
+ @jasonfried
864
864
  The story of Mars Curiosity's gears, made by a factory in Rockford, IL:
865
865
  http://t.co/MwCRsHQg
866
866
 
867
- \e[1m\e[33m @sferik\e[0m
867
+ @sferik
868
868
  @episod @twitterapi now https://t.co/I17jUTu2 and https://t.co/deDu4Hgw seem
869
869
  to be missing "1.1" from the URL.
870
870
 
871
- \e[1m\e[33m @sferik\e[0m
871
+ @sferik
872
872
  @episod @twitterapi Did you catch https://t.co/VHsQvZT0 as well?
873
873
 
874
- \e[1m\e[33m @dwiskus\e[0m
874
+ @dwiskus
875
875
  Gentlemen, you can't fight in here! This is the war room!
876
876
  http://t.co/kMxMYyqF
877
877
 
@@ -1084,9 +1084,9 @@ ID Posted at Screen name Text
1084
1084
  it "outputs in CSV format" do
1085
1085
  @cli.followings
1086
1086
  expect($stdout.string).to eq <<-eos
1087
- ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Bio,Status,Location,URL
1088
- 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
1089
- 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
1087
+ ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Protected,Bio,Status,Location,URL
1088
+ 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
1089
+ 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
1090
1090
  eos
1091
1091
  end
1092
1092
  end
@@ -1230,9 +1230,9 @@ ID Since Last tweeted at Tweets Favorites Listed Following...
1230
1230
  it "outputs in CSV format" do
1231
1231
  @cli.followers
1232
1232
  expect($stdout.string).to eq <<-eos
1233
- ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Bio,Status,Location,URL
1234
- 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
1235
- 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
1233
+ ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Protected,Bio,Status,Location,URL
1234
+ 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
1235
+ 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
1236
1236
  eos
1237
1237
  end
1238
1238
  end
@@ -1379,9 +1379,9 @@ ID Since Last tweeted at Tweets Favorites Listed Following...
1379
1379
  it "outputs in CSV format" do
1380
1380
  @cli.friends
1381
1381
  expect($stdout.string).to eq <<-eos
1382
- ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Bio,Status,Location,URL
1383
- 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
1384
- 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
1382
+ ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Protected,Bio,Status,Location,URL
1383
+ 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
1384
+ 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
1385
1385
  eos
1386
1386
  end
1387
1387
  end
@@ -1531,9 +1531,9 @@ ID Since Last tweeted at Tweets Favorites Listed Following...
1531
1531
  it "outputs in CSV format" do
1532
1532
  @cli.leaders
1533
1533
  expect($stdout.string).to eq <<-eos
1534
- ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Bio,Status,Location,URL
1535
- 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
1536
- 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
1534
+ ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Protected,Bio,Status,Location,URL
1535
+ 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
1536
+ 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
1537
1537
  eos
1538
1538
  end
1539
1539
  end
@@ -1784,78 +1784,78 @@ ID Created at Screen name Slug Members Subscribers Mode ...
1784
1784
  it "has the correct output" do
1785
1785
  @cli.mentions
1786
1786
  expect($stdout.string).to eq <<-eos
1787
- \e[1m\e[33m @mutgoff\e[0m
1787
+ @mutgoff
1788
1788
  Happy Birthday @imdane. Watch out for those @rally pranksters!
1789
1789
 
1790
- \e[1m\e[33m @ironicsans\e[0m
1790
+ @ironicsans
1791
1791
  If you like good real-life stories, check out @NarrativelyNY's just-launched
1792
1792
  site http://t.co/wiUL07jE (and also visit http://t.co/ZoyQxqWA)
1793
1793
 
1794
- \e[1m\e[33m @pat_shaughnessy\e[0m
1794
+ @pat_shaughnessy
1795
1795
  Something else to vote for: "New Rails workshops to bring more women into the
1796
1796
  Boston software scene" http://t.co/eNBuckHc /cc @bostonrb
1797
1797
 
1798
- \e[1m\e[33m @calebelston\e[0m
1798
+ @calebelston
1799
1799
  Pushing the button to launch the site. http://t.co/qLoEn5jG
1800
1800
 
1801
- \e[1m\e[33m @calebelston\e[0m
1801
+ @calebelston
1802
1802
  RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k
1803
1803
 
1804
- \e[1m\e[33m @fivethirtyeight\e[0m
1804
+ @fivethirtyeight
1805
1805
  The Weatherman is Not a Moron: http://t.co/ZwL5Gnq5. An excerpt from my book,
1806
1806
  THE SIGNAL AND THE NOISE (http://t.co/fNXj8vCE)
1807
1807
 
1808
- \e[1m\e[33m @codeforamerica\e[0m
1808
+ @codeforamerica
1809
1809
  RT @randomhacks: Going to Code Across Austin II: Y'all Come Hack Now, Sat,
1810
1810
  Sep 8 http://t.co/Sk5BM7U3 We'll see y'all there! #rhok @codeforamerica
1811
1811
  @TheaClay
1812
1812
 
1813
- \e[1m\e[33m @fbjork\e[0m
1813
+ @fbjork
1814
1814
  RT @jondot: Just published: "Pragmatic Concurrency With #Ruby"
1815
1815
  http://t.co/kGEykswZ /cc @JRuby @headius
1816
1816
 
1817
- \e[1m\e[33m @mbostock\e[0m
1817
+ @mbostock
1818
1818
  If you are wondering how we computed the split bubbles: http://t.co/BcaqSs5u
1819
1819
 
1820
- \e[1m\e[33m @FakeDorsey\e[0m
1820
+ @FakeDorsey
1821
1821
  "Write drunk. Edit sober."—Ernest Hemingway
1822
1822
 
1823
- \e[1m\e[33m @al3x\e[0m
1823
+ @al3x
1824
1824
  RT @wcmaier: Better banking through better ops: build something new with us
1825
1825
  @Simplify (remote, PDX) http://t.co/8WgzKZH3
1826
1826
 
1827
- \e[1m\e[33m @calebelston\e[0m
1827
+ @calebelston
1828
1828
  We just announced Mosaic, what we've been working on since the Yobongo
1829
1829
  acquisition. My personal post, http://t.co/ELOyIRZU @heymosaic
1830
1830
 
1831
- \e[1m\e[33m @BarackObama\e[0m
1831
+ @BarackObama
1832
1832
  Donate $10 or more --> get your favorite car magnet: http://t.co/NfRhl2s2
1833
1833
  #Obama2012
1834
1834
 
1835
- \e[1m\e[33m @JEG2\e[0m
1835
+ @JEG2
1836
1836
  RT @tenderlove: If corporations are people, can we use them to drive in the
1837
1837
  carpool lane?
1838
1838
 
1839
- \e[1m\e[33m @eveningedition\e[0m
1839
+ @eveningedition
1840
1840
  LDN—Obama's nomination; Putin woos APEC; Bombs hit Damascus; Quakes shake
1841
1841
  China; Canada cuts Iran ties; weekend read: http://t.co/OFs6dVW4
1842
1842
 
1843
- \e[1m\e[33m @dhh\e[0m
1843
+ @dhh
1844
1844
  RT @ggreenwald: Democrats parade Osama bin Laden's corpse as their proudest
1845
1845
  achievement: why this goulish jingoism is so warped http://t.co/kood278s
1846
1846
 
1847
- \e[1m\e[33m @jasonfried\e[0m
1847
+ @jasonfried
1848
1848
  The story of Mars Curiosity's gears, made by a factory in Rockford, IL:
1849
1849
  http://t.co/MwCRsHQg
1850
1850
 
1851
- \e[1m\e[33m @sferik\e[0m
1851
+ @sferik
1852
1852
  @episod @twitterapi now https://t.co/I17jUTu2 and https://t.co/deDu4Hgw seem
1853
1853
  to be missing "1.1" from the URL.
1854
1854
 
1855
- \e[1m\e[33m @sferik\e[0m
1855
+ @sferik
1856
1856
  @episod @twitterapi Did you catch https://t.co/VHsQvZT0 as well?
1857
1857
 
1858
- \e[1m\e[33m @dwiskus\e[0m
1858
+ @dwiskus
1859
1859
  Gentlemen, you can't fight in here! This is the war room!
1860
1860
  http://t.co/kMxMYyqF
1861
1861
 
@@ -2102,82 +2102,82 @@ ID Posted at Screen name Text
2102
2102
  it "has the correct output" do
2103
2103
  @cli.retweets
2104
2104
  expect($stdout.string).to eq <<-eos
2105
- \e[1m\e[33m @calebelston\e[0m
2105
+ @calebelston
2106
2106
  RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k
2107
2107
 
2108
- \e[1m\e[33m @codeforamerica\e[0m
2108
+ @codeforamerica
2109
2109
  RT @randomhacks: Going to Code Across Austin II: Y'all Come Hack Now, Sat,
2110
2110
  Sep 8 http://t.co/Sk5BM7U3 We'll see y'all there! #rhok @codeforamerica
2111
2111
  @TheaClay
2112
2112
 
2113
- \e[1m\e[33m @fbjork\e[0m
2113
+ @fbjork
2114
2114
  RT @jondot: Just published: "Pragmatic Concurrency With #Ruby"
2115
2115
  http://t.co/kGEykswZ /cc @JRuby @headius
2116
2116
 
2117
- \e[1m\e[33m @al3x\e[0m
2117
+ @al3x
2118
2118
  RT @wcmaier: Better banking through better ops: build something new with us
2119
2119
  @Simplify (remote, PDX) http://t.co/8WgzKZH3
2120
2120
 
2121
- \e[1m\e[33m @JEG2\e[0m
2121
+ @JEG2
2122
2122
  RT @tenderlove: If corporations are people, can we use them to drive in the
2123
2123
  carpool lane?
2124
2124
 
2125
- \e[1m\e[33m @dhh\e[0m
2125
+ @dhh
2126
2126
  RT @ggreenwald: Democrats parade Osama bin Laden's corpse as their proudest
2127
2127
  achievement: why this goulish jingoism is so warped http://t.co/kood278s
2128
2128
 
2129
- \e[1m\e[33m @calebelston\e[0m
2129
+ @calebelston
2130
2130
  RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k
2131
2131
 
2132
- \e[1m\e[33m @codeforamerica\e[0m
2132
+ @codeforamerica
2133
2133
  RT @randomhacks: Going to Code Across Austin II: Y'all Come Hack Now, Sat,
2134
2134
  Sep 8 http://t.co/Sk5BM7U3 We'll see y'all there! #rhok @codeforamerica
2135
2135
  @TheaClay
2136
2136
 
2137
- \e[1m\e[33m @fbjork\e[0m
2137
+ @fbjork
2138
2138
  RT @jondot: Just published: "Pragmatic Concurrency With #Ruby"
2139
2139
  http://t.co/kGEykswZ /cc @JRuby @headius
2140
2140
 
2141
- \e[1m\e[33m @al3x\e[0m
2141
+ @al3x
2142
2142
  RT @wcmaier: Better banking through better ops: build something new with us
2143
2143
  @Simplify (remote, PDX) http://t.co/8WgzKZH3
2144
2144
 
2145
- \e[1m\e[33m @JEG2\e[0m
2145
+ @JEG2
2146
2146
  RT @tenderlove: If corporations are people, can we use them to drive in the
2147
2147
  carpool lane?
2148
2148
 
2149
- \e[1m\e[33m @dhh\e[0m
2149
+ @dhh
2150
2150
  RT @ggreenwald: Democrats parade Osama bin Laden's corpse as their proudest
2151
2151
  achievement: why this goulish jingoism is so warped http://t.co/kood278s
2152
2152
 
2153
- \e[1m\e[33m @calebelston\e[0m
2153
+ @calebelston
2154
2154
  RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k
2155
2155
 
2156
- \e[1m\e[33m @codeforamerica\e[0m
2156
+ @codeforamerica
2157
2157
  RT @randomhacks: Going to Code Across Austin II: Y'all Come Hack Now, Sat,
2158
2158
  Sep 8 http://t.co/Sk5BM7U3 We'll see y'all there! #rhok @codeforamerica
2159
2159
  @TheaClay
2160
2160
 
2161
- \e[1m\e[33m @fbjork\e[0m
2161
+ @fbjork
2162
2162
  RT @jondot: Just published: "Pragmatic Concurrency With #Ruby"
2163
2163
  http://t.co/kGEykswZ /cc @JRuby @headius
2164
2164
 
2165
- \e[1m\e[33m @al3x\e[0m
2165
+ @al3x
2166
2166
  RT @wcmaier: Better banking through better ops: build something new with us
2167
2167
  @Simplify (remote, PDX) http://t.co/8WgzKZH3
2168
2168
 
2169
- \e[1m\e[33m @JEG2\e[0m
2169
+ @JEG2
2170
2170
  RT @tenderlove: If corporations are people, can we use them to drive in the
2171
2171
  carpool lane?
2172
2172
 
2173
- \e[1m\e[33m @dhh\e[0m
2173
+ @dhh
2174
2174
  RT @ggreenwald: Democrats parade Osama bin Laden's corpse as their proudest
2175
2175
  achievement: why this goulish jingoism is so warped http://t.co/kood278s
2176
2176
 
2177
- \e[1m\e[33m @calebelston\e[0m
2177
+ @calebelston
2178
2178
  RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k
2179
2179
 
2180
- \e[1m\e[33m @codeforamerica\e[0m
2180
+ @codeforamerica
2181
2181
  RT @randomhacks: Going to Code Across Austin II: Y'all Come Hack Now, Sat,
2182
2182
  Sep 8 http://t.co/Sk5BM7U3 We'll see y'all there! #rhok @codeforamerica
2183
2183
  @TheaClay
@@ -2555,78 +2555,78 @@ ID Posted at Screen name Text ...
2555
2555
  it "has the correct output" do
2556
2556
  @cli.timeline
2557
2557
  expect($stdout.string).to eq <<-eos
2558
- \e[1m\e[33m @mutgoff\e[0m
2558
+ @mutgoff
2559
2559
  Happy Birthday @imdane. Watch out for those @rally pranksters!
2560
2560
 
2561
- \e[1m\e[33m @ironicsans\e[0m
2561
+ @ironicsans
2562
2562
  If you like good real-life stories, check out @NarrativelyNY's just-launched
2563
2563
  site http://t.co/wiUL07jE (and also visit http://t.co/ZoyQxqWA)
2564
2564
 
2565
- \e[1m\e[33m @pat_shaughnessy\e[0m
2565
+ @pat_shaughnessy
2566
2566
  Something else to vote for: "New Rails workshops to bring more women into the
2567
2567
  Boston software scene" http://t.co/eNBuckHc /cc @bostonrb
2568
2568
 
2569
- \e[1m\e[33m @calebelston\e[0m
2569
+ @calebelston
2570
2570
  Pushing the button to launch the site. http://t.co/qLoEn5jG
2571
2571
 
2572
- \e[1m\e[33m @calebelston\e[0m
2572
+ @calebelston
2573
2573
  RT @olivercameron: Mosaic looks cool: http://t.co/A8013C9k
2574
2574
 
2575
- \e[1m\e[33m @fivethirtyeight\e[0m
2575
+ @fivethirtyeight
2576
2576
  The Weatherman is Not a Moron: http://t.co/ZwL5Gnq5. An excerpt from my book,
2577
2577
  THE SIGNAL AND THE NOISE (http://t.co/fNXj8vCE)
2578
2578
 
2579
- \e[1m\e[33m @codeforamerica\e[0m
2579
+ @codeforamerica
2580
2580
  RT @randomhacks: Going to Code Across Austin II: Y'all Come Hack Now, Sat,
2581
2581
  Sep 8 http://t.co/Sk5BM7U3 We'll see y'all there! #rhok @codeforamerica
2582
2582
  @TheaClay
2583
2583
 
2584
- \e[1m\e[33m @fbjork\e[0m
2584
+ @fbjork
2585
2585
  RT @jondot: Just published: "Pragmatic Concurrency With #Ruby"
2586
2586
  http://t.co/kGEykswZ /cc @JRuby @headius
2587
2587
 
2588
- \e[1m\e[33m @mbostock\e[0m
2588
+ @mbostock
2589
2589
  If you are wondering how we computed the split bubbles: http://t.co/BcaqSs5u
2590
2590
 
2591
- \e[1m\e[33m @FakeDorsey\e[0m
2591
+ @FakeDorsey
2592
2592
  "Write drunk. Edit sober."—Ernest Hemingway
2593
2593
 
2594
- \e[1m\e[33m @al3x\e[0m
2594
+ @al3x
2595
2595
  RT @wcmaier: Better banking through better ops: build something new with us
2596
2596
  @Simplify (remote, PDX) http://t.co/8WgzKZH3
2597
2597
 
2598
- \e[1m\e[33m @calebelston\e[0m
2598
+ @calebelston
2599
2599
  We just announced Mosaic, what we've been working on since the Yobongo
2600
2600
  acquisition. My personal post, http://t.co/ELOyIRZU @heymosaic
2601
2601
 
2602
- \e[1m\e[33m @BarackObama\e[0m
2602
+ @BarackObama
2603
2603
  Donate $10 or more --> get your favorite car magnet: http://t.co/NfRhl2s2
2604
2604
  #Obama2012
2605
2605
 
2606
- \e[1m\e[33m @JEG2\e[0m
2606
+ @JEG2
2607
2607
  RT @tenderlove: If corporations are people, can we use them to drive in the
2608
2608
  carpool lane?
2609
2609
 
2610
- \e[1m\e[33m @eveningedition\e[0m
2610
+ @eveningedition
2611
2611
  LDN—Obama's nomination; Putin woos APEC; Bombs hit Damascus; Quakes shake
2612
2612
  China; Canada cuts Iran ties; weekend read: http://t.co/OFs6dVW4
2613
2613
 
2614
- \e[1m\e[33m @dhh\e[0m
2614
+ @dhh
2615
2615
  RT @ggreenwald: Democrats parade Osama bin Laden's corpse as their proudest
2616
2616
  achievement: why this goulish jingoism is so warped http://t.co/kood278s
2617
2617
 
2618
- \e[1m\e[33m @jasonfried\e[0m
2618
+ @jasonfried
2619
2619
  The story of Mars Curiosity's gears, made by a factory in Rockford, IL:
2620
2620
  http://t.co/MwCRsHQg
2621
2621
 
2622
- \e[1m\e[33m @sferik\e[0m
2622
+ @sferik
2623
2623
  @episod @twitterapi now https://t.co/I17jUTu2 and https://t.co/deDu4Hgw seem
2624
2624
  to be missing "1.1" from the URL.
2625
2625
 
2626
- \e[1m\e[33m @sferik\e[0m
2626
+ @sferik
2627
2627
  @episod @twitterapi Did you catch https://t.co/VHsQvZT0 as well?
2628
2628
 
2629
- \e[1m\e[33m @dwiskus\e[0m
2629
+ @dwiskus
2630
2630
  Gentlemen, you can't fight in here! This is the war room!
2631
2631
  http://t.co/kMxMYyqF
2632
2632
 
@@ -2714,6 +2714,34 @@ ID Posted at Screen name Text
2714
2714
  244099460672679938 Sep 7 07:47 @dwiskus Gentlemen, you can't fig...
2715
2715
  eos
2716
2716
  end
2717
+ context "--max-id" do
2718
+ before do
2719
+ @cli.options = @cli.options.merge("max_id" => 244104558433951744)
2720
+ stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "20", :max_id => "244104558433951744"}).to_return(:body => fixture("statuses.json"))
2721
+ end
2722
+ it "requests the correct resource" do
2723
+ @cli.timeline
2724
+ expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "20", :max_id => "244104558433951744"})).to have_been_made
2725
+ end
2726
+ end
2727
+ context "--number" do
2728
+ before do
2729
+ stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1"}).to_return(:body => fixture("statuses.json"))
2730
+ stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"}).to_return(:body => fixture("200_statuses.json"))
2731
+ stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1", :max_id => "265500541700956160"}).to_return(:body => fixture("statuses.json"))
2732
+ end
2733
+ it "limits the number of results to 1" do
2734
+ @cli.options = @cli.options.merge("number" => 1)
2735
+ @cli.timeline
2736
+ expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1"})).to have_been_made
2737
+ end
2738
+ it "limits the number of results to 201" do
2739
+ @cli.options = @cli.options.merge("number" => 201)
2740
+ @cli.timeline
2741
+ expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"})).to have_been_made
2742
+ expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1", :max_id => "265500541700956160"})).to have_been_made
2743
+ end
2744
+ end
2717
2745
  context "--reverse" do
2718
2746
  before do
2719
2747
  @cli.options = @cli.options.merge("reverse" => true)
@@ -2746,24 +2774,6 @@ ID Posted at Screen name Text
2746
2774
  end
2747
2775
  end
2748
2776
  end
2749
- context "--number" do
2750
- before do
2751
- stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1"}).to_return(:body => fixture("statuses.json"))
2752
- stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"}).to_return(:body => fixture("200_statuses.json"))
2753
- stub_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1", :max_id => "265500541700956160"}).to_return(:body => fixture("statuses.json"))
2754
- end
2755
- it "limits the number of results to 1" do
2756
- @cli.options = @cli.options.merge("number" => 1)
2757
- @cli.timeline
2758
- expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1"})).to have_been_made
2759
- end
2760
- it "limits the number of results to 201" do
2761
- @cli.options = @cli.options.merge("number" => 201)
2762
- @cli.timeline
2763
- expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "200"})).to have_been_made
2764
- expect(a_get("/1.1/statuses/home_timeline.json").with(:query => {:count => "1", :max_id => "265500541700956160"})).to have_been_made
2765
- end
2766
- end
2767
2777
  context "--since-id" do
2768
2778
  before do
2769
2779
  @cli.options = @cli.options.merge("since_id" => 244104558433951744)
@@ -2792,6 +2802,16 @@ ID Posted at Screen name Text
2792
2802
  expect(a_get("/1.1/statuses/user_timeline.json").with(:query => {:count => "20", :user_id => "7505382"})).to have_been_made
2793
2803
  end
2794
2804
  end
2805
+ context "--max-id" do
2806
+ before do
2807
+ @cli.options = @cli.options.merge("max_id" => 244104558433951744)
2808
+ stub_get("/1.1/statuses/user_timeline.json").with(:query => {:count => "20", :screen_name => "sferik", :max_id => "244104558433951744"}).to_return(:body => fixture("statuses.json"))
2809
+ end
2810
+ it "requests the correct resource" do
2811
+ @cli.timeline("sferik")
2812
+ expect(a_get("/1.1/statuses/user_timeline.json").with(:query => {:count => "20", :screen_name => "sferik", :max_id => "244104558433951744"})).to have_been_made
2813
+ end
2814
+ end
2795
2815
  context "--number" do
2796
2816
  before do
2797
2817
  stub_get("/1.1/statuses/user_timeline.json").with(:query => {:count => "1", :screen_name => "sferik"}).to_return(:body => fixture("statuses.json"))
@@ -3053,9 +3073,9 @@ WOEID Parent ID Type Name Country
3053
3073
  it "outputs in CSV format" do
3054
3074
  @cli.users("sferik", "pengwynn")
3055
3075
  expect($stdout.string).to eq <<-eos
3056
- ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Bio,Status,Location,URL
3057
- 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
3058
- 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
3076
+ ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Protected,Bio,Status,Location,URL
3077
+ 14100886,2008-03-08 16:34:22 +0000,2012-07-07 20:33:19 +0000,6940,192,358,3427,5457,pengwynn,Wynn Netherland,false,false,"Christian, husband, father, GitHubber, Co-host of @thechangelog, Co-author of Sass, Compass, #CSS book http://wynn.fm/sass-meap",@akosmasoftware Sass book! @hcatlin @nex3 are the brains behind Sass. :-),"Denton, TX",http://wynnnetherland.com
3078
+ 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
3059
3079
  eos
3060
3080
  end
3061
3081
  end
@@ -3205,8 +3225,8 @@ URL https://github.com/sferik
3205
3225
  it "has the correct output" do
3206
3226
  @cli.whois("sferik")
3207
3227
  expect($stdout.string).to eq <<-eos
3208
- ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Bio,Status,Location,URL
3209
- 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
3228
+ ID,Since,Last tweeted at,Tweets,Favorites,Listed,Following,Followers,Screen name,Name,Verified,Protected,Bio,Status,Location,URL
3229
+ 7505382,2007-07-16 12:59:01 +0000,2012-07-08 18:29:20 +0000,7890,3755,118,212,2262,sferik,Erik Michaels-Ober,false,false,Vagabond.,@goldman You're near my home town! Say hi to Woodstock for me.,San Francisco,https://github.com/sferik
3210
3230
  eos
3211
3231
  end
3212
3232
  end