Module: FunctionalLightService::EnumBuilder::DataType::AnyEnum

Includes:
Monad
Defined in:
lib/functional-light-service/functional/enum.rb

Instance Method Summary collapse

Methods included from Monad

#==, #bind, #fmap, #initialize, #inspect, #join, #value

Instance Method Details

#deconstructObject

Supporto al pattern matching nativo di Ruby (case/in):

case result
in FunctionalLightService::Result::Success(s) then ...
in FunctionalLightService::Result::Failure(f) then ...
end


44
45
46
# File 'lib/functional-light-service/functional/enum.rb', line 44

def deconstruct
  is_a?(FunctionalLightService::EnumBuilder::DataType::Nullary) ? [] : wrapped_values
end

#deconstruct_keys(_keys) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/functional-light-service/functional/enum.rb', line 48

def deconstruct_keys(_keys)
  if is_a?(FunctionalLightService::EnumBuilder::DataType::Binary)
    value.dup
  elsif is_a?(FunctionalLightService::EnumBuilder::DataType::Nullary)
    {}
  else
    { args[0] => value }
  end
end

#matchObject



17
18
19
# File 'lib/functional-light-service/functional/enum.rb', line 17

def match(&)
  parent.match(self, &)
end

#nameObject



25
26
27
# File 'lib/functional-light-service/functional/enum.rb', line 25

def name
  self.class.name.split("::")[-1]
end

#to_sObject



21
22
23
# File 'lib/functional-light-service/functional/enum.rb', line 21

def to_s
  value.to_s
end

#wrapped_valuesObject

Returns array. Will fail on Nullary objects. TODO: define a Unary module so we can define this method differently on Unary vs Binary



31
32
33
34
35
36
37
# File 'lib/functional-light-service/functional/enum.rb', line 31

def wrapped_values
  if is_a?(FunctionalLightService::EnumBuilder::DataType::Binary)
    value.values
  else
    [value]
  end
end