Sha256: 03b564785c2b3ebb538d5d5969756d953586b39485bec52ad4eccb78fe14fd7a
Contents?: true
Size: 1.47 KB
Versions: 2
Compression:
Stored size: 1.47 KB
Contents
# typed: strict # frozen_string_literal: true require "date" module OpenFeature # Provides ambient information for the purposes of flag evaluation. # Currently does not meet specification! class EvaluationContext < T::Struct extend T::Sig include T::Struct::ActsAsComparable FieldValueType = T.type_alias { T.any(T::Boolean, String, Numeric, DateTime, Structure) } const :targeting_key, T.nilable(String) const :fields, T::Hash[String, FieldValueType], default: {} sig { params(method_name: Symbol).returns(T::Boolean) } def respond_to_missing?(method_name) fields.key?(method_name.to_s) end sig { params(method_name: Symbol).returns(T.nilable(FieldValueType)) } def method_missing(method_name) fields.fetch(method_name.to_s, nil) end sig { params(key: String, value: FieldValueType).returns(EvaluationContext) } def add_field(key, value) EvaluationContext.new( targeting_key: targeting_key, fields: fields.merge({ key => value }) ) end sig { returns(T::Hash[String, FieldValueType]) } def to_h targeting_key.nil? ? fields : fields.merge("targeting_key" => targeting_key) end sig { params(overriding_context: EvaluationContext).returns(EvaluationContext) } def merge(overriding_context) EvaluationContext.new( targeting_key: overriding_context.targeting_key || targeting_key, fields: fields.merge(overriding_context.fields) ) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
openfeature-sdk-sorbet-0.2.1 | lib/open_feature/evaluation_context.rb |
openfeature-sdk-sorbet-0.2.0 | lib/open_feature/evaluation_context.rb |