Module: Reindeer::Role
- Included in:
- TypeConstraint
- Defined in:
- lib/reindeer/role.rb
Defined Under Namespace
Modules: TypeConstraint Classes: RoleError
Class Method Summary collapse
Class Method Details
.included(mod) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/reindeer/role.rb', line 5 def Role.included(mod) mod.module_eval { class << self; = Reindeer::Meta.new(self) define_method :role_meta, Proc.new { } # Make this more composable? define_method :has, Proc.new { |name, opts={}| .add_attribute(name, opts) } define_method :requires, Proc.new { |method| .add_required_method(method) } define_method :assert_requires, Proc.new { |klass| not_defined = .required_methods.select do |meth| not klass.instance_methods(false).include?(meth) end return if not_defined.empty? raise RoleError, "The class '#{klass}' composed '#{self}' but didn't define #{not_defined.join ', '}" } end } end |