t 3.1.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/t/search.rb CHANGED
@@ -1,10 +1,10 @@
1
- require 'thor'
2
- require 'twitter'
3
- require 't/collectable'
4
- require 't/printable'
5
- require 't/rcfile'
6
- require 't/requestable'
7
- require 't/utils'
1
+ require "thor"
2
+ require "twitter"
3
+ require "t/collectable"
4
+ require "t/printable"
5
+ require "t/rcfile"
6
+ require "t/requestable"
7
+ require "t/utils"
8
8
 
9
9
  module T
10
10
  class Search < Thor
@@ -24,52 +24,52 @@ module T
24
24
  super
25
25
  end
26
26
 
27
- desc 'all QUERY', "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets that match the specified query."
28
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
29
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
30
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
31
- method_option 'number', aliases: '-n', type: :numeric, default: DEFAULT_NUM_RESULTS
32
- method_option 'relative_dates', aliases: '-a', type: :boolean, desc: 'Show relative dates.'
27
+ desc "all QUERY", "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets that match the specified query."
28
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
29
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
30
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
31
+ method_option "number", aliases: "-n", type: :numeric, default: DEFAULT_NUM_RESULTS
32
+ method_option "relative_dates", aliases: "-a", type: :boolean, desc: "Show relative dates."
33
33
  def all(query)
34
- count = options['number'] || DEFAULT_NUM_RESULTS
34
+ count = options["number"] || DEFAULT_NUM_RESULTS
35
35
  opts = {count: MAX_SEARCH_RESULTS}
36
- opts[:include_entities] = !!options['decode_uris']
36
+ opts[:include_entities] = !!options["decode_uris"]
37
37
  tweets = client.search(query, opts).take(count)
38
- tweets.reverse! if options['reverse']
39
- if options['csv']
40
- require 'csv'
38
+ tweets.reverse! if options["reverse"]
39
+ if options["csv"]
40
+ require "csv"
41
41
  say TWEET_HEADINGS.to_csv unless tweets.empty?
42
42
  tweets.each do |tweet|
43
- say [tweet.id, csv_formatted_time(tweet), tweet.user.screen_name, decode_full_text(tweet, options['decode_uris'])].to_csv
43
+ say [tweet.id, csv_formatted_time(tweet), tweet.user.screen_name, decode_full_text(tweet, options["decode_uris"])].to_csv
44
44
  end
45
- elsif options['long']
45
+ elsif options["long"]
46
46
  array = tweets.collect do |tweet|
47
- [tweet.id, ls_formatted_time(tweet), "@#{tweet.user.screen_name}", decode_full_text(tweet, options['decode_uris']).gsub(/\n+/, ' ')]
47
+ [tweet.id, ls_formatted_time(tweet), "@#{tweet.user.screen_name}", decode_full_text(tweet, options["decode_uris"]).gsub(/\n+/, " ")]
48
48
  end
49
- format = options['format'] || Array.new(TWEET_HEADINGS.size) { '%s' }
49
+ format = options["format"] || Array.new(TWEET_HEADINGS.size) { "%s" }
50
50
  print_table_with_headings(array, TWEET_HEADINGS, format)
51
51
  else
52
52
  say unless tweets.empty?
53
53
  tweets.each do |tweet|
54
- print_message(tweet.user.screen_name, decode_full_text(tweet, options['decode_uris']))
54
+ print_message(tweet.user.screen_name, decode_full_text(tweet, options["decode_uris"]))
55
55
  end
56
56
  end
57
57
  end
58
58
 
59
- desc 'favorites [USER] QUERY', "Returns Tweets you've favorited that match the specified query."
60
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
61
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
62
- method_option 'id', aliases: '-i', type: :boolean, desc: 'Specify user via ID instead of screen name.'
63
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
64
- method_option 'relative_dates', aliases: '-a', type: :boolean, desc: 'Show relative dates.'
59
+ desc "favorites [USER] QUERY", "Returns Tweets you've favorited that match the specified query."
60
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
61
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
62
+ method_option "id", aliases: "-i", type: :boolean, desc: "Specify user via ID instead of screen name."
63
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
64
+ method_option "relative_dates", aliases: "-a", type: :boolean, desc: "Show relative dates."
65
65
  def favorites(*args)
66
66
  query = args.pop
67
67
  user = args.pop
68
68
  opts = {count: MAX_NUM_RESULTS}
69
- opts[:include_entities] = !!options['decode_uris']
69
+ opts[:include_entities] = !!options["decode_uris"]
70
70
  if user
71
- require 't/core_ext/string'
72
- user = options['id'] ? user.to_i : user.strip_ats
71
+ require "t/core_ext/string"
72
+ user = options["id"] ? user.to_i : user.strip_ats
73
73
  tweets = collect_with_max_id do |max_id|
74
74
  opts[:max_id] = max_id unless max_id.nil?
75
75
  client.favorites(user, opts)
@@ -85,18 +85,18 @@ module T
85
85
  end
86
86
  print_tweets(tweets)
87
87
  end
88
- map %w(faves) => :favorites
88
+ map %w[faves] => :favorites
89
89
 
90
- desc 'list [USER/]LIST QUERY', 'Returns Tweets on a list that match the specified query.'
91
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
92
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
93
- method_option 'id', aliases: '-i', type: :boolean, desc: 'Specify user via ID instead of screen name.'
94
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
95
- method_option 'relative_dates', aliases: '-a', type: :boolean, desc: 'Show relative dates.'
90
+ desc "list [USER/]LIST QUERY", "Returns Tweets on a list that match the specified query."
91
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
92
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
93
+ method_option "id", aliases: "-i", type: :boolean, desc: "Specify user via ID instead of screen name."
94
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
95
+ method_option "relative_dates", aliases: "-a", type: :boolean, desc: "Show relative dates."
96
96
  def list(user_list, query)
97
97
  owner, list_name = extract_owner(user_list, options)
98
98
  opts = {count: MAX_NUM_RESULTS}
99
- opts[:include_entities] = !!options['decode_uris']
99
+ opts[:include_entities] = !!options["decode_uris"]
100
100
  tweets = collect_with_max_id do |max_id|
101
101
  opts[:max_id] = max_id unless max_id.nil?
102
102
  client.list_timeline(owner, list_name, opts)
@@ -107,14 +107,14 @@ module T
107
107
  print_tweets(tweets)
108
108
  end
109
109
 
110
- desc 'mentions QUERY', 'Returns Tweets mentioning you that match the specified query.'
111
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
112
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
113
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
114
- method_option 'relative_dates', aliases: '-a', type: :boolean, desc: 'Show relative dates.'
110
+ desc "mentions QUERY", "Returns Tweets mentioning you that match the specified query."
111
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
112
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
113
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
114
+ method_option "relative_dates", aliases: "-a", type: :boolean, desc: "Show relative dates."
115
115
  def mentions(query)
116
116
  opts = {count: MAX_NUM_RESULTS}
117
- opts[:include_entities] = !!options['decode_uris']
117
+ opts[:include_entities] = !!options["decode_uris"]
118
118
  tweets = collect_with_max_id do |max_id|
119
119
  opts[:max_id] = max_id unless max_id.nil?
120
120
  client.mentions(opts)
@@ -124,22 +124,22 @@ module T
124
124
  end
125
125
  print_tweets(tweets)
126
126
  end
127
- map %w(replies) => :mentions
127
+ map %w[replies] => :mentions
128
128
 
129
- desc 'retweets [USER] QUERY', "Returns Tweets you've retweeted that match the specified query."
130
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
131
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
132
- method_option 'id', aliases: '-i', type: :boolean, desc: 'Specify user via ID instead of screen name.'
133
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
134
- method_option 'relative_dates', aliases: '-a', type: :boolean, desc: 'Show relative dates.'
129
+ desc "retweets [USER] QUERY", "Returns Tweets you've retweeted that match the specified query."
130
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
131
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
132
+ method_option "id", aliases: "-i", type: :boolean, desc: "Specify user via ID instead of screen name."
133
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
134
+ method_option "relative_dates", aliases: "-a", type: :boolean, desc: "Show relative dates."
135
135
  def retweets(*args)
136
136
  query = args.pop
137
137
  user = args.pop
138
138
  opts = {count: MAX_NUM_RESULTS}
139
- opts[:include_entities] = !!options['decode_uris']
139
+ opts[:include_entities] = !!options["decode_uris"]
140
140
  if user
141
- require 't/core_ext/string'
142
- user = options['id'] ? user.to_i : user.strip_ats
141
+ require "t/core_ext/string"
142
+ user = options["id"] ? user.to_i : user.strip_ats
143
143
  tweets = collect_with_max_id do |max_id|
144
144
  opts[:max_id] = max_id unless max_id.nil?
145
145
  client.retweeted_by_user(user, opts)
@@ -155,29 +155,29 @@ module T
155
155
  end
156
156
  print_tweets(tweets)
157
157
  end
158
- map %w(rts) => :retweets
158
+ map %w[rts] => :retweets
159
159
 
160
- desc 'timeline [USER] QUERY', 'Returns Tweets in your timeline that match the specified query.'
161
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
162
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
163
- method_option 'exclude', aliases: '-e', type: :string, enum: %w(replies retweets), desc: 'Exclude certain types of Tweets from the results.', banner: 'TYPE'
164
- method_option 'id', aliases: '-i', type: :boolean, desc: 'Specify user via ID instead of screen name.'
165
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
166
- method_option 'max_id', aliases: '-m', type: :numeric, desc: 'Returns only the results with an ID less than the specified ID.'
167
- method_option 'relative_dates', aliases: '-a', type: :boolean, desc: 'Show relative dates.'
168
- method_option 'since_id', aliases: '-s', type: :numeric, desc: 'Returns only the results with an ID greater than the specified ID.'
160
+ desc "timeline [USER] QUERY", "Returns Tweets in your timeline that match the specified query."
161
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
162
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
163
+ method_option "exclude", aliases: "-e", type: :string, enum: %w[replies retweets], desc: "Exclude certain types of Tweets from the results.", banner: "TYPE"
164
+ method_option "id", aliases: "-i", type: :boolean, desc: "Specify user via ID instead of screen name."
165
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
166
+ method_option "max_id", aliases: "-m", type: :numeric, desc: "Returns only the results with an ID less than the specified ID."
167
+ method_option "relative_dates", aliases: "-a", type: :boolean, desc: "Show relative dates."
168
+ method_option "since_id", aliases: "-s", type: :numeric, desc: "Returns only the results with an ID greater than the specified ID."
169
169
  def timeline(*args)
170
170
  query = args.pop
171
171
  user = args.pop
172
172
  opts = {count: MAX_NUM_RESULTS}
173
- opts[:exclude_replies] = true if options['exclude'] == 'replies'
174
- opts[:include_entities] = !!options['decode_uris']
175
- opts[:include_rts] = false if options['exclude'] == 'retweets'
176
- opts[:max_id] = options['max_id'] if options['max_id']
177
- opts[:since_id] = options['since_id'] if options['since_id']
173
+ opts[:exclude_replies] = true if options["exclude"] == "replies"
174
+ opts[:include_entities] = !!options["decode_uris"]
175
+ opts[:include_rts] = false if options["exclude"] == "retweets"
176
+ opts[:max_id] = options["max_id"] if options["max_id"]
177
+ opts[:since_id] = options["since_id"] if options["since_id"]
178
178
  if user
179
- require 't/core_ext/string'
180
- user = options['id'] ? user.to_i : user.strip_ats
179
+ require "t/core_ext/string"
180
+ user = options["id"] ? user.to_i : user.strip_ats
181
181
  tweets = collect_with_max_id do |max_id|
182
182
  opts[:max_id] = max_id unless max_id.nil?
183
183
  client.user_timeline(user, opts)
@@ -193,18 +193,18 @@ module T
193
193
  end
194
194
  print_tweets(tweets)
195
195
  end
196
- map %w(tl) => :timeline
196
+ map %w[tl] => :timeline
197
197
 
198
- desc 'users QUERY', 'Returns users that match the specified query.'
199
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
200
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
201
- method_option 'relative_dates', aliases: '-a', type: :boolean, desc: 'Show relative dates.'
202
- method_option 'reverse', aliases: '-r', type: :boolean, desc: 'Reverse the order of the sort.'
203
- method_option 'sort', aliases: '-s', type: :string, enum: %w(favorites followers friends listed screen_name since tweets tweeted), default: 'screen_name', desc: 'Specify the order of the results.', banner: 'ORDER'
204
- method_option 'unsorted', aliases: '-u', type: :boolean, desc: 'Output is not sorted.'
198
+ desc "users QUERY", "Returns users that match the specified query."
199
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
200
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
201
+ method_option "relative_dates", aliases: "-a", type: :boolean, desc: "Show relative dates."
202
+ method_option "reverse", aliases: "-r", type: :boolean, desc: "Reverse the order of the sort."
203
+ method_option "sort", aliases: "-s", type: :string, enum: %w[favorites followers friends listed screen_name since tweets tweeted], default: "screen_name", desc: "Specify the order of the results.", banner: "ORDER"
204
+ method_option "unsorted", aliases: "-u", type: :boolean, desc: "Output is not sorted."
205
205
  def users(query)
206
206
  users = collect_with_page do |page|
207
- client.user_search(query, page: page)
207
+ client.user_search(query, page:)
208
208
  end
209
209
  print_users(users)
210
210
  end
data/lib/t/set.rb CHANGED
@@ -1,6 +1,6 @@
1
- require 'thor'
2
- require 't/rcfile'
3
- require 't/requestable'
1
+ require "thor"
2
+ require "t/rcfile"
3
+ require "t/requestable"
4
4
 
5
5
  module T
6
6
  class Set < Thor
@@ -13,57 +13,57 @@ module T
13
13
  super
14
14
  end
15
15
 
16
- desc 'active SCREEN_NAME [CONSUMER_KEY]', 'Set your active account.'
16
+ desc "active SCREEN_NAME [CONSUMER_KEY]", "Set your active account."
17
17
  def active(screen_name, consumer_key = nil)
18
- require 't/core_ext/string'
18
+ require "t/core_ext/string"
19
19
  screen_name = screen_name.strip_ats
20
- @rcfile.path = options['profile'] if options['profile']
20
+ @rcfile.path = options["profile"] if options["profile"]
21
21
  consumer_key = @rcfile[screen_name].keys.last if consumer_key.nil?
22
- @rcfile.active_profile = {'username' => @rcfile[screen_name][consumer_key]['username'], 'consumer_key' => consumer_key}
22
+ @rcfile.active_profile = {"username" => @rcfile[screen_name][consumer_key]["username"], "consumer_key" => consumer_key}
23
23
  say "Active account has been updated to #{@rcfile.active_profile[0]}."
24
24
  end
25
- map %w(account default) => :active
25
+ map %w[account default] => :active
26
26
 
27
- desc 'bio DESCRIPTION', 'Edits your Bio information on your Twitter profile.'
27
+ desc "bio DESCRIPTION", "Edits your Bio information on your Twitter profile."
28
28
  def bio(description)
29
- client.update_profile(description: description)
29
+ client.update_profile(description:)
30
30
  say "@#{@rcfile.active_profile[0]}'s bio has been updated."
31
31
  end
32
32
 
33
- desc 'language LANGUAGE_NAME', "Selects the language you'd like to receive notifications in."
33
+ desc "language LANGUAGE_NAME", "Selects the language you'd like to receive notifications in."
34
34
  def language(language_name)
35
35
  client.settings(lang: language_name)
36
36
  say "@#{@rcfile.active_profile[0]}'s language has been updated."
37
37
  end
38
38
 
39
- desc 'location PLACE_NAME', 'Updates the location field in your profile.'
39
+ desc "location PLACE_NAME", "Updates the location field in your profile."
40
40
  def location(place_name)
41
41
  client.update_profile(location: place_name)
42
42
  say "@#{@rcfile.active_profile[0]}'s location has been updated."
43
43
  end
44
44
 
45
- desc 'name NAME', 'Sets the name field on your Twitter profile.'
45
+ desc "name NAME", "Sets the name field on your Twitter profile."
46
46
  def name(name)
47
- client.update_profile(name: name)
47
+ client.update_profile(name:)
48
48
  say "@#{@rcfile.active_profile[0]}'s name has been updated."
49
49
  end
50
50
 
51
- desc 'profile_background_image FILE', 'Sets the background image on your Twitter profile.'
52
- method_option 'tile', aliases: '-t', type: :boolean, desc: 'Whether or not to tile the background image.'
51
+ desc "profile_background_image FILE", "Sets the background image on your Twitter profile."
52
+ method_option "tile", aliases: "-t", type: :boolean, desc: "Whether or not to tile the background image."
53
53
  def profile_background_image(file)
54
- client.update_profile_background_image(File.new(File.expand_path(file)), tile: options['tile'], skip_status: true)
54
+ client.update_profile_background_image(File.new(File.expand_path(file)), tile: options["tile"], skip_status: true)
55
55
  say "@#{@rcfile.active_profile[0]}'s background image has been updated."
56
56
  end
57
- map %w(background background_image) => :profile_background_image
57
+ map %w[background background_image] => :profile_background_image
58
58
 
59
- desc 'profile_image FILE', 'Sets the image on your Twitter profile.'
59
+ desc "profile_image FILE", "Sets the image on your Twitter profile."
60
60
  def profile_image(file)
61
61
  client.update_profile_image(File.new(File.expand_path(file)))
62
62
  say "@#{@rcfile.active_profile[0]}'s image has been updated."
63
63
  end
64
- map %w(avatar image) => :profile_image
64
+ map %w[avatar image] => :profile_image
65
65
 
66
- desc 'website URI', 'Sets the website field on your profile.'
66
+ desc "website URI", "Sets the website field on your profile."
67
67
  def website(uri)
68
68
  client.update_profile(url: uri)
69
69
  say "@#{@rcfile.active_profile[0]}'s website has been updated."
data/lib/t/stream.rb CHANGED
@@ -1,8 +1,8 @@
1
- require 'thor'
2
- require 't/printable'
3
- require 't/rcfile'
4
- require 't/requestable'
5
- require 't/utils'
1
+ require "thor"
2
+ require "t/printable"
3
+ require "t/rcfile"
4
+ require "t/requestable"
5
+ require "t/utils"
6
6
 
7
7
  module T
8
8
  class Stream < Thor
@@ -11,10 +11,10 @@ module T
11
11
  include T::Utils
12
12
 
13
13
  TWEET_HEADINGS_FORMATTING = [
14
- '%-18s', # Add padding to maximum length of a Tweet ID
15
- '%-12s', # Add padding to length of a timestamp formatted with ls_formatted_time
16
- '%-20s', # Add padding to maximum length of a Twitter screen name
17
- '%s', # Last element does not need special formatting
14
+ "%-18s", # Add padding to maximum length of a Tweet ID
15
+ "%-12s", # Add padding to length of a timestamp formatted with ls_formatted_time
16
+ "%-20s", # Add padding to maximum length of a Twitter screen name
17
+ "%s", # Last element does not need special formatting
18
18
  ].freeze
19
19
 
20
20
  check_unknown_options!
@@ -24,16 +24,16 @@ module T
24
24
  super
25
25
  end
26
26
 
27
- desc 'all', 'Stream a random sample of all Tweets (Control-C to stop)'
28
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
29
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
30
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
27
+ desc "all", "Stream a random sample of all Tweets (Control-C to stop)"
28
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
29
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
30
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
31
31
  def all
32
32
  streaming_client.before_request do
33
- if options['csv']
34
- require 'csv'
33
+ if options["csv"]
34
+ require "csv"
35
35
  say TWEET_HEADINGS.to_csv
36
- elsif options['long'] && STDOUT.tty?
36
+ elsif options["long"] && STDOUT.tty?
37
37
  headings = Array.new(TWEET_HEADINGS.size) do |index|
38
38
  TWEET_HEADINGS_FORMATTING[index] % TWEET_HEADINGS[index]
39
39
  end
@@ -42,9 +42,10 @@ module T
42
42
  end
43
43
  streaming_client.sample do |tweet|
44
44
  next unless tweet.is_a?(Twitter::Tweet)
45
- if options['csv']
45
+
46
+ if options["csv"]
46
47
  print_csv_tweet(tweet)
47
- elsif options['long']
48
+ elsif options["long"]
48
49
  array = build_long_tweet(tweet).each_with_index.collect do |element, index|
49
50
  TWEET_HEADINGS_FORMATTING[index] % element
50
51
  end
@@ -55,15 +56,15 @@ module T
55
56
  end
56
57
  end
57
58
 
58
- desc 'list [USER/]LIST', 'Stream a timeline for members of the specified list (Control-C to stop)'
59
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
60
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
61
- method_option 'id', aliases: '-i', type: :boolean, desc: 'Specify user via ID instead of screen name.'
62
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
63
- method_option 'reverse', aliases: '-r', type: :boolean, desc: 'Reverse the order of the sort.'
59
+ desc "list [USER/]LIST", "Stream a timeline for members of the specified list (Control-C to stop)"
60
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
61
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
62
+ method_option "id", aliases: "-i", type: :boolean, desc: "Specify user via ID instead of screen name."
63
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
64
+ method_option "reverse", aliases: "-r", type: :boolean, desc: "Reverse the order of the sort."
64
65
  def list(user_list)
65
66
  owner, list_name = extract_owner(user_list, options)
66
- require 't/list'
67
+ require "t/list"
67
68
  streaming_client.before_request do
68
69
  list = T::List.new
69
70
  list.options = list.options.merge(options)
@@ -72,11 +73,12 @@ module T
72
73
  list.timeline(user_list)
73
74
  end
74
75
  user_ids = client.list_members(owner, list_name).collect(&:id)
75
- streaming_client.filter(follow: user_ids.join(',')) do |tweet|
76
+ streaming_client.filter(follow: user_ids.join(",")) do |tweet|
76
77
  next unless tweet.is_a?(Twitter::Tweet)
77
- if options['csv']
78
+
79
+ if options["csv"]
78
80
  print_csv_tweet(tweet)
79
- elsif options['long']
81
+ elsif options["long"]
80
82
  array = build_long_tweet(tweet).each_with_index.collect do |element, index|
81
83
  TWEET_HEADINGS_FORMATTING[index] % element
82
84
  end
@@ -86,40 +88,42 @@ module T
86
88
  end
87
89
  end
88
90
  end
89
- map %w(tl) => :timeline
91
+ map %w[tl] => :timeline
90
92
 
91
- desc 'matrix', 'Unfortunately, no one can be told what the Matrix is. You have to see it for yourself.'
93
+ desc "matrix", "Unfortunately, no one can be told what the Matrix is. You have to see it for yourself."
92
94
  def matrix
93
- require 't/cli'
95
+ require "t/cli"
94
96
  streaming_client.before_request do
95
97
  cli = T::CLI.new
96
98
  cli.matrix
97
99
  end
98
- streaming_client.sample(language: 'ja') do |tweet|
100
+ streaming_client.sample(language: "ja") do |tweet|
99
101
  next unless tweet.is_a?(Twitter::Tweet)
100
- say(tweet.text.gsub(/[^\u3000\u3040-\u309f]/, '').reverse, [:bold, :green, :on_black], false)
102
+
103
+ say(tweet.text.gsub(/[^\u3000\u3040-\u309f]/, "").reverse, %i[bold green on_black], false)
101
104
  end
102
105
  end
103
106
 
104
- desc 'search KEYWORD [KEYWORD...]', 'Stream Tweets that contain specified keywords, joined with logical ORs (Control-C to stop)'
105
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
106
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
107
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
107
+ desc "search KEYWORD [KEYWORD...]", "Stream Tweets that contain specified keywords, joined with logical ORs (Control-C to stop)"
108
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
109
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
110
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
108
111
  def search(keyword, *keywords)
109
112
  keywords.unshift(keyword)
110
- require 't/search'
113
+ require "t/search"
111
114
  streaming_client.before_request do
112
115
  search = T::Search.new
113
116
  search.options = search.options.merge(options)
114
117
  search.options = search.options.merge(reverse: true)
115
118
  search.options = search.options.merge(format: TWEET_HEADINGS_FORMATTING)
116
- search.all(keywords.join(' OR '))
119
+ search.all(keywords.join(" OR "))
117
120
  end
118
- streaming_client.filter(track: keywords.join(',')) do |tweet|
121
+ streaming_client.filter(track: keywords.join(",")) do |tweet|
119
122
  next unless tweet.is_a?(Twitter::Tweet)
120
- if options['csv']
123
+
124
+ if options["csv"]
121
125
  print_csv_tweet(tweet)
122
- elsif options['long']
126
+ elsif options["long"]
123
127
  array = build_long_tweet(tweet).each_with_index.collect do |element, index|
124
128
  TWEET_HEADINGS_FORMATTING[index] % element
125
129
  end
@@ -130,12 +134,12 @@ module T
130
134
  end
131
135
  end
132
136
 
133
- desc 'timeline', 'Stream your timeline (Control-C to stop)'
134
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
135
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
136
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
137
+ desc "timeline", "Stream your timeline (Control-C to stop)"
138
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
139
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
140
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
137
141
  def timeline
138
- require 't/cli'
142
+ require "t/cli"
139
143
  streaming_client.before_request do
140
144
  cli = T::CLI.new
141
145
  cli.options = cli.options.merge(options)
@@ -145,9 +149,10 @@ module T
145
149
  end
146
150
  streaming_client.user do |tweet|
147
151
  next unless tweet.is_a?(Twitter::Tweet)
148
- if options['csv']
152
+
153
+ if options["csv"]
149
154
  print_csv_tweet(tweet)
150
- elsif options['long']
155
+ elsif options["long"]
151
156
  array = build_long_tweet(tweet).each_with_index.collect do |element, index|
152
157
  TWEET_HEADINGS_FORMATTING[index] % element
153
158
  end
@@ -158,29 +163,30 @@ module T
158
163
  end
159
164
  end
160
165
 
161
- desc 'users USER_ID [USER_ID...]', 'Stream Tweets either from or in reply to specified users (Control-C to stop)'
162
- method_option 'csv', aliases: '-c', type: :boolean, desc: 'Output in CSV format.'
163
- method_option 'decode_uris', aliases: '-d', type: :boolean, desc: 'Decodes t.co URLs into their original form.'
164
- method_option 'long', aliases: '-l', type: :boolean, desc: 'Output in long format.'
166
+ desc "users USER_ID [USER_ID...]", "Stream Tweets either from or in reply to specified users (Control-C to stop)"
167
+ method_option "csv", aliases: "-c", type: :boolean, desc: "Output in CSV format."
168
+ method_option "decode_uris", aliases: "-d", type: :boolean, desc: "Decodes t.co URLs into their original form."
169
+ method_option "long", aliases: "-l", type: :boolean, desc: "Output in long format."
165
170
  def users(user_id, *user_ids)
166
171
  user_ids.unshift(user_id)
167
172
  user_ids.collect!(&:to_i)
168
173
  streaming_client.before_request do
169
- if options['csv']
170
- require 'csv'
174
+ if options["csv"]
175
+ require "csv"
171
176
  say TWEET_HEADINGS.to_csv
172
- elsif options['long'] && STDOUT.tty?
177
+ elsif options["long"] && STDOUT.tty?
173
178
  headings = Array.new(TWEET_HEADINGS.size) do |index|
174
179
  TWEET_HEADINGS_FORMATTING[index] % TWEET_HEADINGS[index]
175
180
  end
176
181
  print_table([headings])
177
182
  end
178
183
  end
179
- streaming_client.filter(follow: user_ids.join(',')) do |tweet|
184
+ streaming_client.filter(follow: user_ids.join(",")) do |tweet|
180
185
  next unless tweet.is_a?(Twitter::Tweet)
181
- if options['csv']
186
+
187
+ if options["csv"]
182
188
  print_csv_tweet(tweet)
183
- elsif options['long']
189
+ elsif options["long"]
184
190
  array = build_long_tweet(tweet).each_with_index.collect do |element, index|
185
191
  TWEET_HEADINGS_FORMATTING[index] % element
186
192
  end
@@ -195,7 +201,8 @@ module T
195
201
 
196
202
  def streaming_client
197
203
  return @streaming_client if @streaming_client
198
- @rcfile.path = options['profile'] if options['profile']
204
+
205
+ @rcfile.path = options["profile"] if options["profile"]
199
206
  @streaming_client = Twitter::Streaming::Client.new do |config|
200
207
  config.consumer_key = @rcfile.active_consumer_key
201
208
  config.consumer_secret = @rcfile.active_consumer_secret