class Ayadn::Mark

Public Instance Methods

add(*args) click to toggle source
# File lib/ayadn/mark.rb, line 9
def add(*args)
  begin
    init
    status = Status.new
    workers = Workers.new(status)
    unless args.empty?
      double = args.dup
      post_id, convo_title = double.shift, double.join(' ')
    else
      status.wrong_arguments
      exit
    end
    Check.new(status).bad_post_id(post_id)
    if options[:force]
      Settings.global.force = true
    else
      post_id = workers.get_real_post_id(post_id)
    end
    convo_title = post_id if convo_title == ''
    api, workers, view = API.new, workers, View.new(status, workers)
    users, bucket = [], []
    view.clear_screen
    status.info(:connected, "analyzing conversation", :yellow)
    resp = api.get_convo(post_id, options)
    stream_object = StreamObject.new(resp)
    posts = workers.build_posts(stream_object.posts.reverse)
    posts.each do |post|
      users << "#{post.original_poster}"
      post.mentions.each {|mention| users << "#{mention}"}
      bucket << post
    end
    users.uniq!
    now = Time.now.to_s
    bookmark = {
      'id' => post_id,
      'root_id' => bucket[0].id,
      'last_id' => bucket.last.id,
      'title' => convo_title,
      'first_date' => bucket[0].date,
      'last_date' => bucket.last.date,
      'mark_date' => now[0..18],
      'first_poster' => bucket[0].original_poster,
      'last_poster' => bucket.last.username,
      'users' => users,
      'size' => bucket.length,
      'url' => bucket[0].canonical_url,
      'root_text' => bucket[0].raw_text,
      'root_colorized_text' => bucket[0].text
    }
    view.clear_screen
    status.info(:done, "bookmarked conversation:", :green)
    puts make_entry bookmark
    Databases.add_bookmark bookmark
    Logs.rec.info "Added conversation bookmark for post #{bookmark['id']}."
    status.done
  rescue => e
    Errors.global_error({error: e, caller: caller, data: [args]})
  end
end
clear() click to toggle source
# File lib/ayadn/mark.rb, line 92
def clear
  begin
    init
    status = Status.new
    status.ask_clear_bookmarks
    input = STDIN.getch
    if input == 'y' || input == 'Y'
      Databases.clear_bookmarks
      Logs.rec.info "Cleared the bookmarks database."
      status.done
    else
      status.canceled
      exit
    end
  rescue => e
    Errors.global_error({error: e, caller: caller, data: []})
  end
end
delete(*args) click to toggle source
# File lib/ayadn/mark.rb, line 115
def delete(*args)
  begin
    init
    status = Status.new
    workers = Workers.new(status)
    if args.empty?
      status.wrong_arguments
      exit
    else
      post_id = args[0]
    end
    Check.new(status).bad_post_id(post_id)
    if options[:force]
      Settings.global.force = true
    else
      post_id = workers.get_real_post_id(post_id)
    end
    Databases.delete_bookmark post_id
    status.done
  rescue => e
    Errors.global_error({error: e, caller: caller, data: [args]})
  end
end
list() click to toggle source
# File lib/ayadn/mark.rb, line 72
def list
  begin
    init
    list = Databases.all_bookmarks
    if options[:raw]
      jj JSON.parse(list.to_json)
      exit
    end
    if list.empty?
      Status.new.empty_list
      exit
    end
    puts "\n"
    list.each {|marked| puts make_entry(JSON.parse(marked[1])); puts "\n"}
  rescue => e
    Errors.global_error({error: e, caller: caller, data: [args, options]})
  end
end
rename(*args) click to toggle source
# File lib/ayadn/mark.rb, line 142
def rename(*args)
  begin
    init
    status = Status.new
    workers = Workers.new(status)
    unless args.empty? || args[1].nil?
      arguments = args.dup
      post_id = arguments.shift
    else
      abort Status.wrong_arguments
    end
    Check.new(status).bad_post_id(post_id)
    if options[:force]
      Settings.global.force = true
    else
      post_id = workers.get_real_post_id(post_id)
    end
    Databases.rename_bookmark post_id, arguments.join(" ")
    status.done
  rescue => e
    Errors.global_error({error: e, caller: caller, data: [args]})
  end
end

Private Instance Methods

init() click to toggle source
# File lib/ayadn/mark.rb, line 199
def init
  Settings.load_config
  Settings.get_token
  Settings.init_config
  Logs.create_logger
  Databases.open_databases
end
make_entry(content) click to toggle source
# File lib/ayadn/mark.rb, line 168
def make_entry content
  entry = ""
  entry << "Post id:".color(:cyan)
  entry << "\t#{content['id']}\n".color(Settings.options.colors.username)
  unless content['title'].is_integer?
    entry << "Title:".color(:cyan)
    entry << "\t\t#{content['title']}\n".color(Settings.options.colors.id)
  end
  entry << "Date:".color(:cyan)
  entry << "\t\t#{content['first_date']}\n".color(Settings.options.colors.date)
  # entry << "Bookmarked:".color(:cyan)
  # entry << "\t#{content['mark_date']}\n".color(Settings.options.colors.date)
  entry << "Posts:".color(:cyan)
  entry << "\t\t#{content['size']}\n".color(Settings.options.colors.name)
  entry << "Posters:".color(:cyan)
  posters = []
  content['users'].each {|mention| posters << "@#{mention}"}
  entry << "\t#{posters.join(', ')}\n".color(Settings.options.colors.mentions)
  # entry << "First:\t\t@#{content['first_poster']}\n"
  # entry << "Last:\t\t@#{content['last_poster']}\n"
  entry << "Link:".color(:cyan)
  entry << "\t\t#{content['url']}\n".color(Settings.options.colors.link)
  entry << "Beginning:".color(:cyan)
  text = content['root_text'].gsub(/[\r\n]/, ' ')
  if text.length <= 60
    entry << "\t#{text}\n"
  else
    entry << "\t#{text[0..60]} [...]\n"
  end
end