class T::List

Constants

DEFAULT_NUM_RESULTS

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/t/list.rb, line 20
def initialize(*)
  @rcfile = T::RCFile.instance
  super
end

Public Instance Methods

add(list_name, user, *users) click to toggle source
# File lib/t/list.rb, line 27
def add(list_name, user, *users)
  added_users, number = fetch_users(users.unshift(user), options) do |users_to_add|
    client.add_list_members(list_name, users_to_add)
    users_to_add
  end
  say "@#{@rcfile.active_profile[0]} added #{pluralize(number, 'member')} to the list \"#{list_name}\"."
  say
  if options["id"]
    say "Run `#{File.basename($PROGRAM_NAME)} list remove --id #{list_name} #{added_users.join(' ')}` to undo."
  else
    say "Run `#{File.basename($PROGRAM_NAME)} list remove #{list_name} #{added_users.collect { |added_user| "@#{added_user}" }.join(' ')}` to undo."
  end
end
create(list_name, description = nil) click to toggle source
# File lib/t/list.rb, line 43
def create(list_name, description = nil)
  opts = description ? {description:} : {}
  opts[:mode] = "private" if options["private"]
  client.create_list(list_name, opts)
  say "@#{@rcfile.active_profile[0]} created the list \"#{list_name}\"."
end
information(user_list) click to toggle source
# File lib/t/list.rb, line 52
def information(user_list)
  owner, list_name = extract_owner(user_list, options)
  list = client.list(owner, list_name)
  if options["csv"]
    require "csv"
    say ["ID", "Description", "Slug", "Screen name", "Created at", "Members", "Subscribers", "Following", "Mode", "URL"].to_csv
    say [list.id, list.description, list.slug, list.user.screen_name, csv_formatted_time(list), list.member_count, list.subscriber_count, list.following?, list.mode, list.uri].to_csv
  else
    array = []
    array << ["ID", list.id.to_s]
    array << ["Description", list.description] unless list.description.nil?
    array << ["Slug", list.slug]
    array << ["Screen name", "@#{list.user.screen_name}"]
    array << ["Created at", "#{ls_formatted_time(list, :created_at, false)} (#{time_ago_in_words(list.created_at)} ago)"]
    array << ["Members", number_with_delimiter(list.member_count)]
    array << ["Subscribers", number_with_delimiter(list.subscriber_count)]
    array << ["Status", list.following? ? "Following" : "Not following"]
    array << ["Mode", list.mode]
    array << ["URL", list.uri]
    print_table(array)
  end
end
members(user_list) click to toggle source
# File lib/t/list.rb, line 83
def members(user_list)
  owner, list_name = extract_owner(user_list, options)
  users = client.list_members(owner, list_name).to_a
  print_users(users)
end
remove(list_name, user, *users) click to toggle source
# File lib/t/list.rb, line 91
def remove(list_name, user, *users)
  removed_users, number = fetch_users(users.unshift(user), options) do |users_to_remove|
    client.remove_list_members(list_name, users_to_remove)
    users_to_remove
  end
  say "@#{@rcfile.active_profile[0]} removed #{pluralize(number, 'member')} from the list \"#{list_name}\"."
  say
  if options["id"]
    say "Run `#{File.basename($PROGRAM_NAME)} list add --id #{list_name} #{removed_users.join(' ')}` to undo."
  else
    say "Run `#{File.basename($PROGRAM_NAME)} list add #{list_name} #{removed_users.collect { |removed_user| "@#{removed_user}" }.join(' ')}` to undo."
  end
end
timeline(user_list) click to toggle source
# File lib/t/list.rb, line 113
def timeline(user_list)
  owner, list_name = extract_owner(user_list, options)
  count = options["number"] || DEFAULT_NUM_RESULTS
  opts = {}
  opts[:include_entities] = !!options["decode_uris"]
  tweets = collect_with_count(count) do |count_opts|
    client.list_timeline(owner, list_name, count_opts.merge(opts))
  end
  print_tweets(tweets)
end