class Watir::Generator::Base::IDLSorter
Public Class Methods
new(interfaces)
click to toggle source
# File lib/watir-webdriver/generator/base/idl_sorter.rb, line 8 def initialize(interfaces) @interfaces = {} interfaces.each do |interface| @interfaces[interface.name] ||= [] interface.inherits.each do |inherit| (@interfaces[inherit.name] ||= []) << interface.name end end end
Public Instance Methods
print()
click to toggle source
# File lib/watir-webdriver/generator/base/idl_sorter.rb, line 19 def print @visited = [] sort.each { |node| print_node(node) } end
sort()
click to toggle source
# File lib/watir-webdriver/generator/base/idl_sorter.rb, line 24 def sort tsort.reverse end
tsort_each_child(node, &blk)
click to toggle source
# File lib/watir-webdriver/generator/base/idl_sorter.rb, line 32 def tsort_each_child(node, &blk) @interfaces[node].each(&blk) end
tsort_each_node(&blk)
click to toggle source
# File lib/watir-webdriver/generator/base/idl_sorter.rb, line 28 def tsort_each_node(&blk) @interfaces.each_key(&blk) end
Private Instance Methods
print_node(node, indent = 0)
click to toggle source
# File lib/watir-webdriver/generator/base/idl_sorter.rb, line 38 def print_node(node, indent = 0) return if @visited.include?(node) @visited << node puts " " * indent + node tsort_each_child(node) { |child| print_node(child, indent + 2)} end