Sha256: 1d04cf23ae53a0c7e094a319a9a6e25f7c217778ae67016706b312b256da835d
Contents?: true
Size: 1.15 KB
Versions: 19
Compression:
Stored size: 1.15 KB
Contents
# frozen_string_literal: true require 'eac_ruby_utils/core_ext' require 'eac_cli/runner/context_responders/base' module EacCli module Runner module ContextResponders class Set < ::EacCli::Runner::ContextResponders::Base attr_reader :responders_names def initialize(context, method_name, responders_names) super(context, method_name) @responders_names = responders_names end def callable? responders_instances.any?(&:callable?) end def call(*args, &block) caller = responder_to_call return caller.call(*args, &block) if caller raise ::NameError, "No method \"#{method_name}\" found in #{runner} or in its ancestors" end private def responder_class(class_name) ::EacCli::Runner::ContextResponders.const_get(class_name.to_s.camelize) end def responders_instances responders_names.lazy.map { |name| responder_class(name).new(context, method_name) } end def responder_to_call responders_instances.lazy.select(&:callable?).first end end end end end
Version data entries
19 entries across 19 versions & 2 rubygems