Class: Coradoc::Reference::Resolver::Chain
- Inherits:
-
Resolver::Base
- Object
- Resolver::Base
- Coradoc::Reference::Resolver::Chain
- Defined in:
- lib/coradoc/reference/resolver/chain.rb
Overview
Tries each child resolver in order. First non-Missing result wins (Resolved or Ambiguous short-circuit). Use to combine a local catalog with a remote one without composite catalog indirection.
Instance Attribute Summary collapse
-
#resolvers ⇒ Object
readonly
Returns the value of attribute resolvers.
Instance Method Summary collapse
-
#initialize(*resolvers) ⇒ Chain
constructor
A new instance of Chain.
- #resolve(edge) ⇒ Object
Constructor Details
#initialize(*resolvers) ⇒ Chain
Returns a new instance of Chain.
13 14 15 16 |
# File 'lib/coradoc/reference/resolver/chain.rb', line 13 def initialize(*resolvers) super() @resolvers = resolvers.flatten end |
Instance Attribute Details
#resolvers ⇒ Object (readonly)
Returns the value of attribute resolvers.
11 12 13 |
# File 'lib/coradoc/reference/resolver/chain.rb', line 11 def resolvers @resolvers end |
Instance Method Details
#resolve(edge) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/coradoc/reference/resolver/chain.rb', line 18 def resolve(edge) last = nil @resolvers.each do |resolver| result = resolver.resolve(edge) return result unless result.is_a?(Coradoc::Reference::Result::Missing) last = result end last || Coradoc::Reference::Result::Missing.build( edge: edge, address: edge.address ) end |