class Delfos::FileSystem::DistanceCalculation

Attributes

path_a[R]
path_b[R]
traversal_a[R]
traversal_b[R]

Public Class Methods

new(path_a, path_b) click to toggle source
# File lib/delfos/file_system/distance_calculation.rb, line 10
def initialize(path_a, path_b)
  @path_a, @path_b = PathDetermination.for(path_a, path_b)
end

Public Instance Methods

klass_for(a, b) click to toggle source
# File lib/delfos/file_system/distance_calculation.rb, line 28
def klass_for(a, b)
  return ChildFile if b + ".." == a
  Relation
end
sibling_directories(path) click to toggle source
# File lib/delfos/file_system/distance_calculation.rb, line 41
def sibling_directories(path)
  siblings(path).select { |f| File.directory?(f) }
end
sum_possible_traversals() click to toggle source
# File lib/delfos/file_system/distance_calculation.rb, line 37
def sum_possible_traversals
  traversals.inject(0) { |a, e| a + e.possible_length }
end
sum_traversals() click to toggle source
# File lib/delfos/file_system/distance_calculation.rb, line 33
def sum_traversals
  traversals.inject(0) { |a, e| a + e.distance }
end
traversal_path() click to toggle source
# File lib/delfos/file_system/distance_calculation.rb, line 45
def traversal_path
  TraversalPathCalculator.new(path_a, path_b).path
end
traversals() click to toggle source
# File lib/delfos/file_system/distance_calculation.rb, line 16
def traversals
  result = []
  path = traversal_path

  path.each_cons(2) do |start, finish|
    klass = klass_for(start, finish)
    result.push(klass.new(start, finish))
  end

  result
end