class Either::Match::Evaluation

Attributes

either[R]
match[R]

Public Class Methods

new(match, either) click to toggle source
# File lib/either/match.rb, line 35
def initialize(match, either)
  @match  = match
  @either = either
end

Public Instance Methods

result() click to toggle source
# File lib/either/match.rb, line 42
def result
  either.left? ? left_result : right_result
end

Private Instance Methods

left_match() click to toggle source
# File lib/either/match.rb, line 56
def left_match
  lefts.find { |pattern, _| either.left.select(&pattern).some? }.last
end
left_result() click to toggle source
# File lib/either/match.rb, line 48
def left_result
  left_match.call(either.left.value)
end
lefts() click to toggle source
# File lib/either/match.rb, line 64
def lefts
  match.lefts
end
right_match() click to toggle source
# File lib/either/match.rb, line 60
def right_match
  rights.find { |pattern, _| either.right.select(&pattern).some? }.last
end
right_result() click to toggle source
# File lib/either/match.rb, line 52
def right_result
  right_match.call(either.right.value)
end
rights() click to toggle source
# File lib/either/match.rb, line 68
def rights
  match.rights
end