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

hint[RW]
option[RW]

Public Class Methods

for(origin) click to toggle source

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
inherited(where) click to toggle source
# File lib/opto/resolver.rb, line 26
def inherited(where)
  resolvers[where.origin] = where
end
new(hint = nil, option = nil) click to toggle source

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
origin() click to toggle source
# File lib/opto/resolver.rb, line 34
def origin
  name.to_s.split('::').last.snakecase.to_sym
end
resolvers() click to toggle source
# File lib/opto/resolver.rb, line 30
def resolvers
  @resolvers ||= {}
end

Public Instance Methods

origin() click to toggle source

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
resolve() click to toggle source

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