Module: Pour::Mould::ClassMethods

Defined in:
lib/pour/mould.rb

Instance Method Summary collapse

Instance Method Details

#pour(pourable) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/pour/mould.rb', line 4

def pour(pourable)
  unless pourable.included_modules.include?(Pour::Pourable)
    # TODO(mtwilliams): Use a custom exceptin type, Pour::Unpourable.
    raise ":("
  end

  poured = self.class_variable_get(:@@__poured__)

  unless poured.include? pourable
    self.class_variable_set(:@@__poured__, poured + [pourable])

    # This capture all the properties as well as any user-defined methods.
    self.include(pourable)
  end
end