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|