Sha256: 3f948881ecba3b540e4210fa293f7fbf43c58907d407d320a0c4f652c8c828e5

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

require_relative "error"
require_relative "initializer/new_no_args"
require_relative "initializer/from_initializers"
require_relative "initializer/proc_based"

module Uses
  module Initializer
    def self.from_args(uses_method_args)
      strategy_klass(uses_method_args).new(uses_method_args)
    end

  private

    def self.strategy_klass(uses_method_args)
      case uses_method_args.initializer_strategy
      when :new_no_args         then NewNoArgs
      when :config_initializers then FromInitializers
      when Proc                 then ProcBased
      else
        raise UnknownInitializerStrategy.new(uses_method_args.initializer_strategy)
      end
    end


    class UnknownInitializerStrategy < Uses::Error
      def initialize(strategy)
        if strategy.kind_of?(Symbol)
          super("initialize: received #{strategy}, which is not supported. Should be either the symbol :config_initializers, a Proc, or simply omitted")
        else
          super("initialize: received a #{strategy.class}, which is not supported. Should be either the symbol :config_initializers, a Proc, or simply omitted")
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
uses-1.0.0 lib/uses/initializer.rb
uses-1.0.0.pre.beta1 lib/uses/initializer.rb