Sha256: 3dd287e1d5e517a8c19a76aaaac4a0aa5f4811d8cf266c61718fb9534124157a

Contents?: true

Size: 671 Bytes

Versions: 9

Compression:

Stored size: 671 Bytes

Contents

module RGL

  class PathBuilder # :nodoc:

    def initialize(source, parents_map)
      @source      = source
      @parents_map = parents_map
      @paths       = {}
    end

    def path(target)
      if @paths.has_key?(target)
        @paths[target]
      else
        @paths[target] = restore_path(target)
      end
    end

    def paths(targets)
      paths_map = {}

      targets.each do |target|
        paths_map[target] = path(target)
      end

      paths_map
    end

    private

    def restore_path(target)
      return [@source] if target == @source

      parent = @parents_map[target]
      path(parent) + [target] if parent
    end

  end

end # RGL

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rgl-0.5.9 lib/rgl/path_builder.rb
rgl-0.5.8 lib/rgl/path_builder.rb
rgl-0.5.7 lib/rgl/path_builder.rb
rgl-0.5.6 lib/rgl/path_builder.rb
rgl-0.5.4 lib/rgl/path_builder.rb
rgl-0.5.3 lib/rgl/path_builder.rb
rgl-0.5.2 lib/rgl/path_builder.rb
rgl-0.5.1 lib/rgl/path_builder.rb
rgl-0.5.0 lib/rgl/path_builder.rb