class Enolib::ValueElementBase

Public Instance Methods

optional_string_value() click to toggle source
# File lib/enolib/elements/value_element_base.rb, line 5
def optional_string_value
  _value(required: false)
end
optional_value(loader = nil) click to toggle source
# File lib/enolib/elements/value_element_base.rb, line 9
def optional_value(loader = nil)
  loader = Proc.new if block_given?

  unless loader
    raise ArgumentError, 'A loader function must be provided'
  end

  _value(loader, required: false)
end
required_string_value() click to toggle source
# File lib/enolib/elements/value_element_base.rb, line 19
def required_string_value
  _value(required: true)
end
required_value(loader = nil) click to toggle source
# File lib/enolib/elements/value_element_base.rb, line 23
def required_value(loader = nil)
  loader = Proc.new if block_given?

  unless loader
    raise ArgumentError, 'A loader function must be provided'
  end

  _value(loader, required: true)
end
value_error(message = nil) { |value| ... } click to toggle source
# File lib/enolib/elements/value_element_base.rb, line 33
def value_error(message = nil)
  if block_given?
    message = yield(@context.value(@instruction))
  elsif message.is_a?(Proc)
    message = message.call(@context.value(@instruction))
  end

  unless message
    raise ArgumentError, 'A message or message function must be provided'
  end

  Errors::Validation.value_error(@context, message, @instruction)
end

Private Instance Methods

_value(loader = nil, required:) click to toggle source
# File lib/enolib/elements/value_element_base.rb, line 59
def _value(loader = nil, required:)
  @touched = true

  value = @context.value(@instruction)

  if value
    return value unless loader

    begin
      loader.call(value)
    rescue => message
      raise Errors::Validation.value_error(@context, message, @instruction)
    end
  else
    return nil unless required

    raise Errors::Validation.missing_value(@context, @instruction)
  end
end
print_value() click to toggle source