Class: OverloadedMethods::FunctionDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/overloaded_methods.rb

Instance Method Summary collapse

Constructor Details

#initializeFunctionDefinition

Returns a new instance of FunctionDefinition.



41
42
43
44
# File 'lib/overloaded_methods.rb', line 41

def initialize
  @clauses = []
  @default = Clause.match_all.return(nil)
end

Instance Method Details

#default(&block) ⇒ Object



54
55
56
# File 'lib/overloaded_methods.rb', line 54

def default &block
  @default = Clause.match_all.do(&block)
end

#execute(params) ⇒ Object



49
50
51
52
53
# File 'lib/overloaded_methods.rb', line 49

def execute params
  [*@clauses, @default]
    .find { |clause| clause.match? *params }
    .call(*params)
end

#when(&predicate) ⇒ Object Also known as: pattern



45
46
47
# File 'lib/overloaded_methods.rb', line 45

def when &predicate
  Clause.with_predicate(predicate).tap { |clause| @clauses << clause }
end