Class: SfnParameters::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/sfn-parameters/resolver.rb

Overview

Parameter resolver

Constant Summary collapse

@@resolvers =
{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ self

Resolver initialization. It is provided the configuration from sfn to allow for any required customizations

Parameters:

  • config (Hash)

    sfn config



50
51
52
53
# File 'lib/sfn-parameters/resolver.rb', line 50

def initialize(config)
  @config = config
  setup
end

Instance Attribute Details

#configHash (readonly)

Returns sfn config.

Returns:

  • (Hash)

    sfn config



42
43
44
# File 'lib/sfn-parameters/resolver.rb', line 42

def config
  @config
end

Class Method Details

.detect_resolver(name) ⇒ Resolver

Find resolver that matches given name

Parameters:

  • name (String)

    resolver identifier name

Returns:

Raises:

  • (NameError)


33
34
35
36
37
38
39
# File 'lib/sfn-parameters/resolver.rb', line 33

def self.detect_resolver(name)
  name = Bogo::Utility.snake(name).gsub("::", "_")
  @@resolvers.each do |klass_name, klass|
    return klass if klass_name.end_with?(name)
  end
  raise NameError.new("Unknown resolver requested `#{name}` - #{resolvers}")
end

.inherited(klass) ⇒ Object

:nodoc:



15
16
17
18
19
20
21
# File 'lib/sfn-parameters/resolver.rb', line 15

def self.inherited(klass)
  if klass.name.nil?
    raise ArgumentError.new("Unnamed classes are not supported")
  end
  klass_key = Bogo::Utility.snake(klass.name).gsub("::", "_")
  @@resolvers[klass_key] = klass
end

.reset!Object

:nodoc: Used only for testing



10
11
12
# File 'lib/sfn-parameters/resolver.rb', line 10

def self.reset!
  @@resolvers.clear
end

.resolversArray<Resolver>

Returns:



24
25
26
# File 'lib/sfn-parameters/resolver.rb', line 24

def self.resolvers
  @@resolvers.values
end

Instance Method Details

#resolve(value) ⇒ Object

Resolve the given value. Value will be a Hash type but should be validated locally

Parameters:

  • value (Hash)

Returns:

  • (Object)

Raises:

  • (NotImplementedError)


64
65
66
# File 'lib/sfn-parameters/resolver.rb', line 64

def resolve(value)
  raise NotImplementedError
end

#setupObject

Run any required setup for the resolver



56
# File 'lib/sfn-parameters/resolver.rb', line 56

def setup; end