# frozen_string_literal: true module Nuva class ValenceRepository < Repository def initialize(data) super data @ancestor_ids_by_id = {} @data_by_symbol_id.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