class Dry::Configurable::Setting
@api private
This class represents a setting and is used internally.
def clonable_value?
- Api: - private
def clonable_value? CLONABLE_VALUE_TYPES.any? { |type| value.is_a?(type) } end
def constructor
- Api: - private
def constructor options[:constructor] || DEFAULT_CONSTRUCTOR end
def evaluate
- Api: - private
def evaluate @value = constructor[input.equal?(Undefined) ? nil : input] end
def evaluated?
- Api: - private
def evaluated? instance_variable_defined?(:@value) end
def initialize(name, input: Undefined, default: Undefined, **options)
- Api: - private
def initialize(name, input: Undefined, default: Undefined, **options) @name = name @writer_name = :"#{name}=" @input = input.equal?(Undefined) ? default : input @default = default @options = options evaluate if input_defined? end
def initialize_copy(source)
- Api: - private
def initialize_copy(source) super @value = source.value.dup if source.input_defined? && source.clonable_value? @options = source.options.dup end
def input_defined?
- Api: - private
def input_defined? !input.equal?(Undefined) end
def nested(settings)
- Api: - private
def nested(settings) Nested.new(name, input: settings, **options) end
def pristine
- Api: - private
def pristine with(input: Undefined) end
def reader?
- Api: - private
def reader? options[:reader].equal?(true) end
def value
- Api: - private
def value @value ||= evaluate end
def with(new_opts)
- Api: - private
def with(new_opts) self.class.new(name, input: input, default: default, **options, **new_opts) end
def writer?(meth)
- Api: - private
def writer?(meth) writer_name.equal?(meth) end