class NxtSchema::Validators::OptionalNode

Attributes

conditional[R]
missing_key[R]

Public Class Methods

new(conditional, missing_key) click to toggle source
# File lib/nxt_schema/validators/optional_node.rb, line 4
def initialize(conditional, missing_key)
  @conditional = conditional
  @missing_key = missing_key
end

Public Instance Methods

build() click to toggle source
# File lib/nxt_schema/validators/optional_node.rb, line 12
def build
  lambda do |node, value|
    args = [node, value]

    return if conditional.call(*args.take(conditional.arity))
    return if node.send(:keys).include?(missing_key.to_sym)

    message = ErrorMessages.resolve(
      node.locale,
      :required_key_missing,
      key: missing_key,
      target: node.input
    )

    node.add_error(message)
  end
end