Class: Spider::App::RuntimeSort
- Includes:
- TSort
- Defined in:
- lib/spiderfw/app.rb
Overview
Helper class to sort the runtime dependencies of an app using TSort.
Instance Method Summary collapse
-
#add(app) ⇒ Object
Adds an app to be sorted.
-
#initialize ⇒ RuntimeSort
constructor
A new instance of RuntimeSort.
-
#tsort ⇒ Array
Runs tsort.
-
#tsort_each_child(node, &block) ⇒ Object
Runs the given block for each dependency of node.
-
#tsort_each_node(&block) ⇒ Object
Runs block on each dependency.
Constructor Details
#initialize ⇒ RuntimeSort
Returns a new instance of RuntimeSort.
552 553 554 555 |
# File 'lib/spiderfw/app.rb', line 552 def initialize @apps = [] @apps_hash = {} end |
Instance Method Details
#add(app) ⇒ Object
Adds an app to be sorted
560 561 562 563 564 565 566 567 |
# File 'lib/spiderfw/app.rb', line 560 def add(app) @apps << app if app.is_a?(AppSpec) @apps_hash[app.app_id] = app else @apps_hash[app] = app end end |
#tsort ⇒ Array
Runs tsort
585 586 587 588 |
# File 'lib/spiderfw/app.rb', line 585 def tsort sorted = super sorted.map{ |a| a.is_a?(AppSpec) ? a.app_id : a } end |
#tsort_each_child(node, &block) ⇒ Object
Runs the given block for each dependency of node
578 579 580 581 |
# File 'lib/spiderfw/app.rb', line 578 def tsort_each_child(node, &block) return unless node.is_a?(AppSpec) node.get_runtime_dependencies.map{ |a| @apps_hash[a] }.each(&block) end |
#tsort_each_node(&block) ⇒ Object
Runs block on each dependency
571 572 573 |
# File 'lib/spiderfw/app.rb', line 571 def tsort_each_node(&block) @apps.each(&block) end |