lib/card/set/inheritance.rb in card-1.19.4 vs lib/card/set/inheritance.rb in card-1.19.5
- old
+ new
@@ -2,27 +2,52 @@
module Set
# API to inherit other sets and their formats
module Inheritance
# include a set module and all its format modules
# @param [Module] set
- # @param [Hash] opts choose the formats you want to include
+ # @param [Hash] opts choose the formats you want to include. You can also
+ # pass arbitrary options to the included set. The option is saved
+ # in the including set. To use the option you need a `included` method
+ # in the included set to fetch the option.
# @option opts [Symbol, Array<Symbol>] :only include only these formats
# @option opts [Symbol, Array<Symbol>] :except don't include these formats
- # #@example
- # include_set Type::Basic, except: :css
+ # @example
+ # include_set Type::Basic, except: :css
+ # @example 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
+ #
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 format modules of a set
# @param [Module] set
# @param [Hash] opts choose the formats you want to include
# @option opts [Symbol, Array<Symbol>] :only include only these formats
# @option opts [Symbol, Array<Symbol>] :except don't include these formats
- # #@example
- # include_set Type::Basic, except: :css
+ # @example
+ # include_set_formats Type::Basic, except: :css
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|