Class: SfnParameters::Resolver
- Inherits:
-
Object
- Object
- SfnParameters::Resolver
- Defined in:
- lib/sfn-parameters/resolver.rb
Overview
Parameter resolver
Constant Summary collapse
- @@resolvers =
{}
Instance Attribute Summary collapse
-
#config ⇒ Hash
readonly
Sfn config.
Class Method Summary collapse
-
.detect_resolver(name) ⇒ Resolver
Find resolver that matches given name.
-
.inherited(klass) ⇒ Object
:nodoc:.
-
.reset! ⇒ Object
:nodoc: Used only for testing.
- .resolvers ⇒ Array<Resolver>
Instance Method Summary collapse
-
#initialize(config) ⇒ self
constructor
Resolver initialization.
-
#resolve(value) ⇒ Object
Resolve the given value.
-
#setup ⇒ Object
Run any required setup for the resolver.
Constructor Details
#initialize(config) ⇒ self
Resolver initialization. It is provided the configuration from sfn to allow for any required customizations
50 51 52 53 |
# File 'lib/sfn-parameters/resolver.rb', line 50 def initialize(config) @config = config setup end |
Instance Attribute Details
#config ⇒ Hash (readonly)
Returns 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
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 |
.resolvers ⇒ Array<Resolver>
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
64 65 66 |
# File 'lib/sfn-parameters/resolver.rb', line 64 def resolve(value) raise NotImplementedError end |
#setup ⇒ Object
Run any required setup for the resolver
56 |
# File 'lib/sfn-parameters/resolver.rb', line 56 def setup; end |