Sha256: 7c27f79a06edfa1f342749c87de62db0ab8388ed5923a1d38505154136431e22

Contents?: true

Size: 628 Bytes

Versions: 3

Compression:

Stored size: 628 Bytes

Contents

module OpenFeature
  module SDK
    class EvaluationContext
      TARGETING_KEY = "targeting_key"

      attr_reader :fields

      def initialize(**fields)
        @fields = fields.transform_keys(&:to_s)
      end

      def targeting_key
        fields[TARGETING_KEY]
      end

      def field(key)
        fields[key]
      end

      def merge(overriding_context)
        EvaluationContext.new(
          targeting_key: overriding_context.targeting_key || targeting_key,
          **fields.merge(overriding_context.fields)
        )
      end

      def ==(other)
        fields == other.fields
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
openfeature-sdk-0.4.0 lib/open_feature/sdk/evaluation_context.rb
openfeature-sdk-0.3.1 lib/open_feature/sdk/evaluation_context.rb
openfeature-sdk-0.3.0 lib/open_feature/sdk/evaluation_context.rb