module Card::Subcards::Add
Methods for adding subcards
Public Instance Methods
<<(value)
click to toggle source
# File lib/card/subcards/add.rb, line 19 def << value add value end
[]=(name, card_or_attr)
click to toggle source
# File lib/card/subcards/add.rb, line 23 def []= name, card_or_attr case card_or_attr when Hash new_by_attributes name, card_or_attr when Card new_by_card card_or_attr end end
add(*args)
click to toggle source
# File lib/card/subcards/add.rb, line 32 def add *args case args.first when Card then new_by_card args.first when Hash then add_hash args.first else new_by_attributes(*args) end end
add_child(name, args)
click to toggle source
# File lib/card/subcards/add.rb, line 48 def add_child name, args name = name.is_a?(Symbol) ? name.cardname : name.to_name add name.prepend_joint, args end
Also aliased as: add_field
add_hash(hash)
click to toggle source
# File lib/card/subcards/add.rb, line 40 def add_hash hash if (name = hash.delete :name) new_by_attributes name, hash else multi_add hash end end
initialize_by_attributes(name, attributes)
click to toggle source
# File lib/card/subcards/add.rb, line 73 def initialize_by_attributes name, attributes attributes[:supercard] ||= @context_card Card.assign_or_newish name, attributes, local_only: true end
new_by_attributes(name, attributes={})
click to toggle source
# File lib/card/subcards/add.rb, line 63 def new_by_attributes name, attributes={} attributes = attributes&.symbolize_keys || {} absolute_name = absolutize_subcard_name name subcard_args = extract_subcard_args! attributes card = initialize_by_attributes absolute_name, attributes subcard = new_by_card card card.subcards.add subcard_args subcard end
new_by_card(card)
click to toggle source
# File lib/card/subcards/add.rb, line 54 def new_by_card card card.supercard = @context_card card.update_superleft card.name @keys << card.key Card.write_to_temp_cache card card.director = @context_card.director.subdirectors.add card card end
Private Instance Methods
multi_add(args)
click to toggle source
Handles hash with several subcards
# File lib/card/subcards/add.rb, line 81 def multi_add args args.each_pair do |key, val| case val when String, Array, Integer new_by_attributes key, content: val when Card val.name = absolutize_subcard_name key new_by_card val when nil next else new_by_attributes key, val end end end