class Cardio::Mod::Eat

import data from data directory of mods (list of card attributes) docs.google.com/document/d/13K_ynFwfpHwc3t5gnLeAkZJZHco1wK063nJNYwU8qfc/edit#

Public Class Methods

new(mod: nil, podtype: nil, user: nil, verbose: nil, name: nil) click to toggle source
# File lib/cardio/mod/eat.rb, line 14
def initialize mod: nil, podtype: nil, user: nil, verbose: nil, name: nil
  @mod = mod
  @pod_type = podtype&.to_sym
  @name = name
  @user_id = user&.card_id
  @verbose = !verbose.nil?
end

Public Instance Methods

up() click to toggle source
# File lib/cardio/mod/eat.rb, line 22
def up
  handle_up do
    edibles.each do |edible|
      track edible do
        current_user edible.delete(:user)
        time_machine edible.delete(:time) do
          Card.ensure edible
        end
      end
    end
  end
end

Private Instance Methods

current_user(item_user) click to toggle source
# File lib/cardio/mod/eat.rb, line 65
def current_user item_user
  Card::Auth.current_id = item_user&.card_id || @user_id || Card::WagnBotID
end
handle_up() { || ... } click to toggle source

if output mod given,

# File lib/cardio/mod/eat.rb, line 38
def handle_up
  Card::Cache.reset_all
  Card::Mailer.perform_deliveries = false
  Card::Auth.as_bot { yield }
  :success
rescue StandardError => e
  e.message
end
rescuing(edible) { || ... } click to toggle source
# File lib/cardio/mod/eat.rb, line 57
def rescuing edible
  yield
rescue StandardError => e
  puts edible
  puts e.message.red
  puts e.backtrace[0..10].join("\n") if @verbose
end
time_integer(value) click to toggle source
# File lib/cardio/mod/eat.rb, line 75
def time_integer value
  case value
  when /^[+-]\d+$/
    # plus or minus an integer (safe to eval)
    eval "#{Time.now.to_i} #{value}", binding, __FILE__, __LINE__
  when Integer
    value
  else
    raise TypeError, "invalid time value: #{value}. accepts int, +int, and -int"
  end
end
time_machine(value) { || ... } click to toggle source
# File lib/cardio/mod/eat.rb, line 69
def time_machine value, &block
  return yield unless value.present?

  Timecop.freeze Time.at(time_integer(value)), &block
end
track(edible) { || ... } click to toggle source
# File lib/cardio/mod/eat.rb, line 47
def track edible
  rescuing edible do
    # n = edible[:name]
    # binding.pry if (n.is_a? Array) && n.first.to_s == "main_menu"
    # puts "eating: #{edible}" if @verbose
    card = yield
    puts "eaten: #{card.name}".cyan if @verbose
  end
end