module Card::Director::ClassMethods

Card::Director class methods

Attributes

act[RW]
act_card[RW]

Public Instance Methods

act_director() click to toggle source
# File lib/card/director/class_methods.rb, line 9
def act_director
  act_card&.director
end
add(director) click to toggle source
# File lib/card/director/class_methods.rb, line 75
def add director
  # Rails.logger.debug "added: #{director.card.name}".green
  directors[director.card] = director
end
card(name) click to toggle source
# File lib/card/director/class_methods.rb, line 69
def card name
  directors.values.find do |dir|
    dir.card.name == name
  end&.card
end
card_changed(old_card) click to toggle source
# File lib/card/director/class_methods.rb, line 80
def card_changed old_card
  return unless (director = @directors.delete old_card)

  add director
end
clear() click to toggle source
# File lib/card/director/class_methods.rb, line 31
def clear
  self.act_card = nil
  self.act = nil
  directors.each_pair do |card, _dir|
    card.expire
    card.director = nil
    card.clear_action_specific_attributes
  end
  expire
  @directors = nil
end
deep_delete(director) click to toggle source
# File lib/card/director/class_methods.rb, line 94
def deep_delete director
  director.subdirectors.each do |subdir|
    deep_delete subdir
  end
  delete director
end
delete(director) click to toggle source
# File lib/card/director/class_methods.rb, line 86
def delete director
  return unless @directors

  # normal delete was sometimes failing here (eg. when aborting in finalize stage)
  @directors.delete_if { |k, _v| k == director.card }
  director.delete
end
directors() click to toggle source
# File lib/card/director/class_methods.rb, line 13
def directors
  @directors ||= {}
end
expire() click to toggle source
# File lib/card/director/class_methods.rb, line 43
def expire
  expirees.each { |expiree| Card.expire expiree }
  @expirees = []
end
expirees() click to toggle source
# File lib/card/director/class_methods.rb, line 48
def expirees
  @expirees ||= []
end
fetch(card, parent=nil) click to toggle source
# File lib/card/director/class_methods.rb, line 52
def fetch card, parent=nil
  return directors[card] if directors[card]

  directors.each_key do |dir_card|
    return dir_card.director if dir_card.name == card.name && dir_card.director
  end
  add new_director(card, parent)
end
include?(name) click to toggle source
# File lib/card/director/class_methods.rb, line 61
def include? name
  directors.keys.any? { |card| card.key == name.to_name.key }
end
include_id?(id) click to toggle source
# File lib/card/director/class_methods.rb, line 65
def include_id? id
  directors.keys.any? { |card| card.id == id }
end
need_act() click to toggle source
# File lib/card/director/class_methods.rb, line 27
def need_act
  self.act ||= Card::Act.new ip_address: Env.ip
end
run_act(card) { || ... } click to toggle source
# File lib/card/director/class_methods.rb, line 17
def run_act card
  Lexicon.rescuing do
    self.act_card = card
    # add new_director(card)
    yield
  end
ensure
  clear
end
to_s() click to toggle source
# File lib/card/director/class_methods.rb, line 101
def to_s
  act_director.to_s
end

Private Instance Methods

delete_card(card) click to toggle source
# File lib/card/director/class_methods.rb, line 119
def delete_card card
  card_key = @directors.keys.find { |key| key == card }
  @directors.delete card_key if card_key
end
new_director(card, parent) click to toggle source
# File lib/card/director/class_methods.rb, line 107
def new_director card, parent
  if !parent && act_card && act_card != card && running_act?
    act_card.director.subdirectors.add card
  else
    Director.new card, parent
  end
end
running_act?() click to toggle source
# File lib/card/director/class_methods.rb, line 115
def running_act?
  act_director&.running?
end