Class: LcpRuby::Workflow::Resolver
- Inherits:
-
Object
- Object
- LcpRuby::Workflow::Resolver
- Includes:
- Contract
- Defined in:
- lib/lcp_ruby/workflow/resolver.rb
Overview
Merges workflow definitions from all active sources. Priority: static > model > host (first match wins per model).
Instance Method Summary collapse
-
#initialize(sources) ⇒ Resolver
constructor
A new instance of Resolver.
- #workflow_by_name(name) ⇒ Object
- #workflows_for(model_name) ⇒ Object
Constructor Details
#initialize(sources) ⇒ Resolver
Returns a new instance of Resolver.
8 9 10 |
# File 'lib/lcp_ruby/workflow/resolver.rb', line 8 def initialize(sources) @sources = sources end |
Instance Method Details
#workflow_by_name(name) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/lcp_ruby/workflow/resolver.rb', line 23 def workflow_by_name(name) @sources.each do |source| wf = source.workflow_by_name(name) return wf if wf end nil end |
#workflows_for(model_name) ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/lcp_ruby/workflow/resolver.rb', line 12 def workflows_for(model_name) all = @sources.flat_map { |source| source.workflows_for(model_name) } # Deduplicate by name, preserving source priority order seen = {} all.each_with_object([]) do |wf, result| next if seen.key?(wf.name) seen[wf.name] = true result << wf end end |