Class: IB::DependencyResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/ib/dependency_resolver.rb

Defined Under Namespace

Modules: TSortable Classes: TSortHash

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(files) ⇒ DependencyResolver

Returns a new instance of DependencyResolver.



53
54
55
56
# File 'lib/ib/dependency_resolver.rb', line 53

def initialize(files)
  @files = files
  @dependency_graph = struct_class_dependency_graph
end

Instance Attribute Details

#dependency_graphObject (readonly)

Returns the value of attribute dependency_graph.



51
52
53
# File 'lib/ib/dependency_resolver.rb', line 51

def dependency_graph
  @dependency_graph
end

#filesObject (readonly)

Returns the value of attribute files.



51
52
53
# File 'lib/ib/dependency_resolver.rb', line 51

def files
  @files
end

Instance Method Details

#sortObject



70
71
72
73
74
75
76
# File 'lib/ib/dependency_resolver.rb', line 70

def sort
  sorted_files = {}
  sort_files.each do |file|
    sorted_files.store(file, @files[file])
  end
  sorted_files
end

#sort_classesObject



58
59
60
# File 'lib/ib/dependency_resolver.rb', line 58

def sort_classes
  @dependency_graph.tsort
end

#sort_filesObject



62
63
64
65
66
67
68
# File 'lib/ib/dependency_resolver.rb', line 62

def sort_files
  sort_classes.map do |klass|
    files.select do |file, interfaces|
      interfaces.any? {|i| i.has_sub_class?(klass) }
    end.keys[0]
  end.uniq.compact
end