class Opto::Resolver
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.
Attributes
Public Class Methods
Find a resolver using an origin_name definition, such as :env or :file @param [Symbol, String] origin
# File lib/opto/resolver.rb, line 21 def for(origin) raise NameError, "Unknown resolver: #{origin}" unless resolvers[origin] resolvers[origin] end
# File lib/opto/resolver.rb, line 26 def inherited(where) resolvers[where.origin] = where end
Initialize an instance of a resolver. @param hint A “hint” for the resolver, for example. the environment variable name or a set of rules for generators. @param [Opto::Option] option The option parent of this resolver instance @return [Opto::Resolver]
# File lib/opto/resolver.rb, line 43 def initialize(hint = nil, option = nil) @hint = hint @option = option end
# File lib/opto/resolver.rb, line 34 def origin name.to_s.split('::').last.snakecase.to_sym end
# File lib/opto/resolver.rb, line 30 def resolvers @resolvers ||= {} end
Public Instance Methods
The origin “tag” of this resolver, for example: 'random_string' or 'env'
# File lib/opto/resolver.rb, line 54 def origin self.class.origin end
This is a “base” class, you're supposed to inherit from this in your resolver and define a resolve
method.
# File lib/opto/resolver.rb, line 49 def resolve raise RuntimeError, "#{self.class}.resolve not defined" end