Sha256: bf79748c09d5a546212391894b288f68f83a364b9198ee74faa1c70b0a82e670

Contents?: true

Size: 616 Bytes

Versions: 4

Compression:

Stored size: 616 Bytes

Contents

# frozen_string_literal: true

module Nuva
  class ValenceRepository < Repository
    def initialize(data)
      super data
      @ancestor_ids_by_id = {}
      @data.each_value do |valence|
        # Build hash of ancestor IDs for valence
        @ancestor_ids_by_id[valence.id] = lookup_ancestors(valence).uniq
      end
      @ancestor_ids_by_id.freeze
    end

    def get_ancestor_ids(valence_id)
      @ancestor_ids_by_id[valence_id]
    end

    private

    def lookup_ancestors(valence)
      return [] if valence.nil?

      lookup_ancestors(find(valence.parent_id)) << valence.parent_id
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nuva-0.2.1 lib/nuva/repositories/valence_repository.rb
nuva-0.2.0 lib/nuva/repositories/valence_repository.rb
nuva-0.1.8 lib/nuva/repositories/valence_repository.rb
nuva-0.1.7 lib/nuva/repositories/valence_repository.rb