Sha256: 062b3fe22a8ea590fba06c0d36b6d5d606fecef26958db637c76b86edf69494d

Contents?: true

Size: 609 Bytes

Versions: 4

Compression:

Stored size: 609 Bytes

Contents

# frozen_string_literal: true

module Nuva
  class ValenceRepository < Repository
    def initialize(data)
      super data
      @ancestor_ids_by_id = {}
      @all.each 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.5.1 lib/nuva/repositories/valence_repository.rb
nuva-0.4.1 lib/nuva/repositories/valence_repository.rb
nuva-0.4.0 lib/nuva/repositories/valence_repository.rb
nuva-0.3.1 lib/nuva/repositories/valence_repository.rb