Sha256: 7a3161a5d580c876ca67acccc142af4e67daa217b17ffb51f4d6557a50311681

Contents?: true

Size: 1000 Bytes

Versions: 6

Compression:

Stored size: 1000 Bytes

Contents

# frozen_string_literal: true

module Prefab
  class ConfigValueUnwrapper
    attr_reader :value, :weighted_value_index

    def initialize(value, weighted_value_index = nil)
      @value = value
      @weighted_value_index = weighted_value_index
    end

    def unwrap
      case value.type
      when :int, :string, :double, :bool, :log_level
        value.public_send(value.type)
      when :string_list
        value.string_list.values
      else
        raise "Unknown type: #{config_value.type}"
      end
    end

    def self.deepest_value(config_value, config_key, context)
      if config_value&.type == :weighted_values
        value, index = Prefab::WeightedValueResolver.new(
          config_value.weighted_values.weighted_values,
          config_key,
          context.get(config_value.weighted_values.hash_by_property_name)
        ).resolve

        new(deepest_value(value.value, config_key, context).value, index)
      else
        new(config_value)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
prefab-cloud-ruby-1.1.2 lib/prefab/config_value_unwrapper.rb
prefab-cloud-ruby-1.1.1 lib/prefab/config_value_unwrapper.rb
prefab-cloud-ruby-1.1.0 lib/prefab/config_value_unwrapper.rb
prefab-cloud-ruby-1.0.1 lib/prefab/config_value_unwrapper.rb
prefab-cloud-ruby-1.0.0 lib/prefab/config_value_unwrapper.rb
prefab-cloud-ruby-0.24.6 lib/prefab/config_value_unwrapper.rb