Class: Opto::Resolver
- Inherits:
-
Object
- Object
- Opto::Resolver
- Defined in:
- lib/opto/resolver.rb
Overview
Base for resolvers.
Resolvers are scripts that can retrieve or generate a value for an option. Such resolvers are for example Env, which can try to find the value for the option from an environment variable. An example of generators is RandomString, which can generate random strings of defined length.
Direct Known Subclasses
Opto::Resolvers::Condition, Opto::Resolvers::Default, Opto::Resolvers::Env, Opto::Resolvers::Evaluate, Opto::Resolvers::File, Opto::Resolvers::Interpolate, Opto::Resolvers::RandomNumber, Opto::Resolvers::RandomString, Opto::Resolvers::RandomUuid
Instance Attribute Summary collapse
-
#hint ⇒ Object
Returns the value of attribute hint.
-
#option ⇒ Object
Returns the value of attribute option.
Class Method Summary collapse
-
.for(origin) ⇒ Object
Find a resolver using an origin_name definition, such as :env or :file.
- .inherited(where) ⇒ Object
- .origin ⇒ Object
- .resolvers ⇒ Object
Instance Method Summary collapse
-
#initialize(hint = nil, option = nil) ⇒ Opto::Resolver
constructor
Initialize an instance of a resolver.
-
#origin ⇒ Object
The origin “tag” of this resolver, for example: ‘random_string’ or ‘env’.
- #reset_tried ⇒ Object
-
#resolve ⇒ Object
This is a “base” class, you’re supposed to inherit from this in your resolver and define a #resolve method.
- #set_tried ⇒ Object
- #tried? ⇒ Boolean
- #try_resolve ⇒ Object
Constructor Details
#initialize(hint = nil, option = nil) ⇒ Opto::Resolver
Initialize an instance of a resolver.
43 44 45 46 47 |
# File 'lib/opto/resolver.rb', line 43 def initialize(hint = nil, option = nil) @hint = hint @option = option @tried = false end |
Instance Attribute Details
#hint ⇒ Object
Returns the value of attribute hint.
15 16 17 |
# File 'lib/opto/resolver.rb', line 15 def hint @hint end |
#option ⇒ Object
Returns the value of attribute option.
16 17 18 |
# File 'lib/opto/resolver.rb', line 16 def option @option end |
Class Method Details
.for(origin) ⇒ Object
Find a resolver using an origin_name definition, such as :env or :file
21 22 23 24 |
# File 'lib/opto/resolver.rb', line 21 def for(origin) raise NameError, "Unknown resolver: #{origin}" unless resolvers[origin] resolvers[origin] end |
.inherited(where) ⇒ Object
26 27 28 |
# File 'lib/opto/resolver.rb', line 26 def inherited(where) resolvers[where.origin] = where end |
.origin ⇒ Object
34 35 36 |
# File 'lib/opto/resolver.rb', line 34 def origin name.to_s.split('::').last.snakecase.to_sym end |
.resolvers ⇒ Object
30 31 32 |
# File 'lib/opto/resolver.rb', line 30 def resolvers @resolvers ||= {} end |
Instance Method Details
#origin ⇒ Object
The origin “tag” of this resolver, for example: ‘random_string’ or ‘env’
76 77 78 |
# File 'lib/opto/resolver.rb', line 76 def origin self.class.origin end |
#reset_tried ⇒ Object
57 58 59 |
# File 'lib/opto/resolver.rb', line 57 def reset_tried @tried = false end |
#resolve ⇒ Object
This is a “base” class, you’re supposed to inherit from this in your resolver and define a #resolve method.
71 72 73 |
# File 'lib/opto/resolver.rb', line 71 def resolve raise RuntimeError, "#{self.class}.resolve not defined" end |
#set_tried ⇒ Object
53 54 55 |
# File 'lib/opto/resolver.rb', line 53 def set_tried @tried = true end |
#tried? ⇒ Boolean
49 50 51 |
# File 'lib/opto/resolver.rb', line 49 def tried? !!@tried end |
#try_resolve ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/opto/resolver.rb', line 61 def try_resolve return nil if tried? set_tried self.respond_to?(:before) && self.before result = resolve self.respond_to?(:after) && self.after result end |