lib/mixture/model.rb in mixture-0.1.0 vs lib/mixture/model.rb in mixture-0.2.0

- old
+ new

@@ -4,10 +4,31 @@ # A model. # # @example # class MyClass # include Mixture::Model - # mixture_modules :attributable, :hashable + # mixture_modules :attribute, :hash # end module Model + # The class methods for the module. + module ClassMethods + # Used to include certain extensions. + # + # @see Extensions.[] + # @param mods [Symbol] The mod name to include. + # @return [void] + def mixture_modules(*mods) + mods.each do |mod| + include Extensions[mod] + end + end + end + + # A method used internally by ruby. + # + # @api private + def self.included(base) + base.extend ClassMethods + base.mixture_modules(:attribute, :coerce, :validate) + end end end