Module: Card::Set::Inheritance

Included in:
Card::Set
Defined in:
lib/card/set/inheritance.rb

Overview

API to inherit other sets and their formats

Instance Method Summary collapse

Instance Method Details

#include_set(set, opts = {}) ⇒ Object

include a set module and all its format modules

Examples:

include_set Type::Basic, except: :css

pass an option

include_set Type::Name, default_name: "Luke"
default_name           # => "Luke"

def introduce_yourself
  puts my_name_is      # => "Luke"
end

# in Type::Name
def self.included host_class
  host_class.class_eval do
    define_method :my_name_is do |name=nil|
      name || host_class.default_name
    end
  end
end

Options Hash (opts):

  • :only (Symbol, Array<Symbol>)

    include only these formats

  • :except (Symbol, Array<Symbol>)

    don't include these formats



32
33
34
35
36
37
38
39
40
41
# File 'lib/card/set/inheritance.rb', line 32

def include_set set, opts={}
  opts.each do |key, value|
    cattr_accessor key
    send "#{key}=", value
  end

  set_type = set.abstract_set? ? :abstract : :nonbase
  add_set_modules Card::Set.modules[set_type][set.shortname]
  include_set_formats set, opts
end

#include_set_formats(set, opts = {}) ⇒ Object

include format modules of a set

Examples:

include_set_formats Type::Basic, except: :css

Options Hash (opts):

  • :only (Symbol, Array<Symbol>)

    include only these formats

  • :except (Symbol, Array<Symbol>)

    don't include these formats



50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/card/set/inheritance.rb', line 50

def include_set_formats set, opts={}
  each_format set do |format, format_mods|
    format_sym = Card::Format.format_sym format
    next unless applicable_format?(format_sym, opts[:except], opts[:only])

    format_mods.each do |format_mod|
      define_on_format format_sym do
        include format_mod
      end
    end
  end
end