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