class NxtInit::Option
Constants
- InvalidOptionError
Attributes
default_value[R]
key[R]
Public Class Methods
new(key, default_value: NotProvidedOption.new)
click to toggle source
# File lib/nxt_init/option.rb, line 5 def initialize(key, default_value: NotProvidedOption.new) @key = key @default_value = default_value end
Public Instance Methods
default_value_is_block?()
click to toggle source
# File lib/nxt_init/option.rb, line 38 def default_value_is_block? default_value && default_value.respond_to?(:call) end
default_value_is_preprocessor?()
click to toggle source
# File lib/nxt_init/option.rb, line 42 def default_value_is_preprocessor? default_value_is_block? && default_value.arity == 1 end
default_value_was_given?()
click to toggle source
# File lib/nxt_init/option.rb, line 46 def default_value_was_given? !default_value.is_a?(NotProvidedOption) end
requires_value?()
click to toggle source
# File lib/nxt_init/option.rb, line 34 def requires_value? !default_value_was_given? end
resolve(attrs, target:)
click to toggle source
# File lib/nxt_init/option.rb, line 12 def resolve(attrs, target:) if default_value_was_given? key_missing = !attrs.key?(key) given_value = attrs[key] if default_value_is_preprocessor? key_missing ? raise_key_error : target.instance_exec(given_value, &default_value) else # only when the given value was nil we will evaluate the fallback --> false is a valid value if given_value.nil? default_value_is_block? ? target.instance_exec(&default_value) : default_value else given_value end end elsif requires_value? attrs.fetch(key) { |_| raise_key_error } else raise InvalidOptionError, "Don't know how to deal with #{self}" end end
Private Instance Methods
raise_key_error()
click to toggle source
# File lib/nxt_init/option.rb, line 52 def raise_key_error raise KeyError, "NxtInit attr_init key :#{key} was missing at initialization!" end