Sha256: 0ae2a6c14d290670dcb5cf4b1581550799170e6454a985c46d4c505b2a8af5e0

Contents?: true

Size: 811 Bytes

Versions: 9

Compression:

Stored size: 811 Bytes

Contents

# frozen_string_literal: true

require "store_model/combine_errors_strategies/mark_invalid_error_strategy"
require "store_model/combine_errors_strategies/merge_error_strategy"

module StoreModel
  module CombineErrorsStrategies
    module_function

    # Finds a strategy based on options and global config
    def configure(options)
      configured_strategy = options[:merge_errors] || StoreModel.config.merge_errors

      if configured_strategy.respond_to?(:call)
        configured_strategy
      elsif configured_strategy == true
        StoreModel::CombineErrorsStrategies::MergeErrorStrategy.new
      elsif configured_strategy.nil?
        StoreModel::CombineErrorsStrategies::MarkInvalidErrorStrategy.new
      else
        const_get(configured_strategy.to_s.camelize).new
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
store_model-0.5.1 lib/store_model/combine_errors_strategies.rb
store_model-0.5.0 lib/store_model/combine_errors_strategies.rb
store_model-0.4.1 lib/store_model/combine_errors_strategies.rb
store_model-0.4.0 lib/store_model/combine_errors_strategies.rb
store_model-0.3.2 lib/store_model/combine_errors_strategies.rb
store_model-0.3.1 lib/store_model/combine_errors_strategies.rb
store_model-0.3.0 lib/store_model/combine_errors_strategies.rb
store_model-0.2.0 lib/store_model/combine_errors_strategies.rb
store_model-0.1.2 lib/store_model/combine_errors_strategies.rb