t 3.1.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/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