Sha256: 9e0f2307e4653222c8a1375dfd9dabb29f9eb026177ebc8a76d4f2a68c9096e1

Contents?: true

Size: 1.21 KB

Versions: 15

Compression:

Stored size: 1.21 KB

Contents

class Card
  class Name
    module All
      # Card methods for finding name children, eg A+B is a child of A and B
      module Descendants
        # NOTE: for all these helpers, method returns *all* fields/children/descendants.
        # (Not just those current user has permission to read.)

        def field_cards
          field_ids.map(&:card)
        end

        def field_names
          field_ids.map(&:cardname)
        end

        def field_ids
          child_ids :left
        end

        def each_child
          return unless id

          sql = "(left_id = #{id} or right_id = #{id}) and trash is false"
          Card.where(sql).find_each do |card|
            card.include_set_modules
            yield card
          end
        end

        # eg, A+B is a child of A and B
        def child_ids side=nil
          return [] unless id

          side ||= name.simple? ? :part : :left_id
          Auth.as_bot do
            Card.search({ side => id, return: :id, limit: 0 }, "children of #{name}")
          end
        end

        def each_descendant &block
          each_child do |child|
            yield child
            child.each_descendant(&block)
          end
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
card-1.108.1 lib/card/name/all/descendants.rb
card-1.108.0 lib/card/name/all/descendants.rb
card-1.107.0 lib/card/name/all/descendants.rb
card-1.106.0 lib/card/name/all/descendants.rb
card-1.105.6 lib/card/name/all/descendants.rb
card-1.105.5 lib/card/name/all/descendants.rb
card-1.105.4 lib/card/name/all/descendants.rb
card-1.105.3 lib/card/name/all/descendants.rb
card-1.105.2.pre1 lib/card/name/all/descendants.rb
card-1.105.2 lib/card/name/all/descendants.rb
card-1.105.1 lib/card/name/all/descendants.rb
card-1.105.0 lib/card/name/all/descendants.rb
card-1.104.2 lib/card/name/all/descendants.rb
card-1.104.1 lib/card/name/all/descendants.rb
card-1.104.0 lib/card/name/all/descendants.rb