Sha256: 8e1d27635f2809a6a150af58d1439e031d5356a1eced6bc7e70b37436964c3aa

Contents?: true

Size: 995 Bytes

Versions: 28

Compression:

Stored size: 995 Bytes

Contents

class Card
  class Subcards
    # Methods for removing/clearing subcards
    module Remove
      def remove_child cardish
        child = cardish.is_a?(Card) ? cardish : child(cardish)
        remove child
      end
      alias_method :remove_field, :remove_child

      def remove name_or_card
        key = subcard_key name_or_card
        return unless @keys.include? key

        @keys.delete key
        clear_key key
      end

      def clear
        @keys.each { |key| clear_key key }
        @keys = ::Set.new
      end

      def clear_key key
        if (subcard = fetch_subcard key)
          Director.deep_delete subcard.director
          subcard.current_action&.delete
        end
        Card.cache.soft.delete key
        subcard
      end

      def deep_clear cleared=::Set.new
        each_card do |card|
          next if cleared.include? card.id

          cleared << card.id
          card.subcards.deep_clear cleared
        end
        clear
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
card-1.107.0 lib/card/subcards/remove.rb
card-1.106.0 lib/card/subcards/remove.rb
card-1.105.6 lib/card/subcards/remove.rb
card-1.105.5 lib/card/subcards/remove.rb
card-1.105.4 lib/card/subcards/remove.rb
card-1.105.3 lib/card/subcards/remove.rb
card-1.105.2.pre1 lib/card/subcards/remove.rb
card-1.105.2 lib/card/subcards/remove.rb
card-1.105.1 lib/card/subcards/remove.rb
card-1.105.0 lib/card/subcards/remove.rb
card-1.104.2 lib/card/subcards/remove.rb
card-1.104.1 lib/card/subcards/remove.rb
card-1.104.0 lib/card/subcards/remove.rb
card-1.103.4 lib/card/subcards/remove.rb
card-1.103.3 lib/card/subcards/remove.rb
card-1.103.2 lib/card/subcards/remove.rb
card-1.103.1 lib/card/subcards/remove.rb
card-1.103.0 lib/card/subcards/remove.rb
card-1.101.7 lib/card/subcards/remove.rb
card-1.102.0 lib/card/subcards/remove.rb