Sha256: 167ebebd4bb64d70550b82b8fe37d5100b359680d3538239dda6b04cf3223f1d
Contents?: true
Size: 1.49 KB
Versions: 11
Compression:
Stored size: 1.49 KB
Contents
module Martyr module Runtime class PlainDimensionMemorySlice include Martyr::Runtime::HasScopedLevels attr_reader :dimension_definition, :data_slice, :levels delegate :keys, to: :levels # @param dimension_definition [PlainDimensionDefinition] # @option data_slice [PlainDimensionDataSlice, nil] data slice from sub cube if exists def initialize(dimension_definition, data_slice = nil) @dimension_definition = dimension_definition @data_slice = data_slice @levels = {} end def to_hash arr = scoped_levels.values.sort_by{|slice| slice.level.to_i}.inject({}){|h, slice| h.merge!(slice.to_hash) } Hash[arr] end def set_slice(level, **options) new_slice_definition = PlainDimensionLevelSliceDefinition.new(level: level, **options) if data_slice.try(:get_slice, level.id).blank? @levels[level.id] = new_slice_definition else @levels[level.id] = new_slice_definition.merge(data_slice.get_slice(level.id)) end end # @return [PlainDimensionLevelSliceDefinition] def get_slice(level_id) scoped_levels[level_id] end def apply_on(facts) scoped_levels.keys.inject(facts) do |selected_facts, level_id| whitelist_arr = get_slice(level_id).with.map(&:to_s) selected_facts.select do |fact| whitelist_arr.include? fact.fact_key_for(level_id).to_s end end end end end end
Version data entries
11 entries across 11 versions & 1 rubygems