Sha256: d1e4d4843e14c274a77be3005d5f20b6367939bae1638cecbdb567803ea625ce
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
# frozen_string_literal: true module Micro module Cases class Map IsAUseCaseOrFlowWithDefaults = -> arg { arg.is_a?(Array) && Micro.case_or_flow?(arg[0]) && arg[1].is_a?(Hash) } IsAUseCaseOrFlow = -> arg { Micro.case_or_flow?(arg) || IsAUseCaseOrFlowWithDefaults[arg] } HasValidArgs = -> (args) { Kind::Array[args].all?(&IsAUseCaseOrFlow) } attr_reader :use_cases def self.build(args) raise Error::InvalidUseCases unless HasValidArgs[args] new(args) end def initialize(use_cases) @use_cases = use_cases end GetUseCaseResult = -> (hash) do -> (use_case) do if use_case.is_a?(Array) use_case[0].call(hash.merge(use_case[1])) else use_case.call(hash) end end end def call(arg = {}) hash = Kind::Hash[arg] use_cases.map(&GetUseCaseResult[hash]) end private_constant :HasValidArgs, :IsAUseCaseOrFlow, :IsAUseCaseOrFlowWithDefaults, :GetUseCaseResult end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
u-case-4.5.2 | lib/micro/cases/map.rb |