Sha256: 38c150530da2646cfaef94f47458c52f39ff297a9afdb09c4fa6a523b4553ffe

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

module Prefab
  class ConfigValueUnwrapper
    LOG = Prefab::InternalLogger.new(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
        LOG.error "Unknown type: #{config_value.type}"
        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

2 entries across 2 versions & 1 rubygems

Version Path
prefab-cloud-ruby-1.2.1 lib/prefab/config_value_unwrapper.rb
prefab-cloud-ruby-1.2.0 lib/prefab/config_value_unwrapper.rb