Sha256: 6c35f19966fdd0ce8b7478aae79bdbb0e8fb83d7cf6bf92707015cfb32edfbe7

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

class Card
  module Query
    class CardQuery
      # interpret CQL attributes that involve references from one card to another
      module ReferenceAttributes
        def self.define_reference_method methodname, reftype, ref_method, ref_field
          define_method methodname do |val|
            tie :reference,
                { ref_method => { reftype: reftype, card: val } },
                to: ref_field
          end
        end

        {
          refer_to: %w[L I],
          link_to: "L",
          include: "I",
          nest: "I"
        }.each do |methodname, reftype|
          define_reference_method methodname, reftype, :referee, :referer_id
        end

        {
          referred_to_by: %w[L I],
          linked_to_by: "L",
          included_by: "I",
          nested_by: "I"
        }.each do |methodname, reftype|
          define_reference_method methodname, reftype, :referer, :referee_id
        end

        # shortcut methods for role references
        # DEPRECATE?

        def member_of val
          interpret right_plus: [Card::RolesID, { refer_to: val }]
        end

        def member val
          interpret referred_to_by: { left: val, right: Card::RolesID }
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
card-1.101.5 lib/card/query/card_query/reference_attributes.rb