class Dry::Schema::Macros::Filled

@api private
Macro used to prepend ‘:filled?` predicate

def call(*predicates, **opts, &block)

Other tags:
    Api: - private
def call(*predicates, **opts, &block)
  ensure_valid_predicates(predicates)
  if opts[:type_spec] && !filter_empty_string?
    value(predicates[0], :filled?, *predicates[1..predicates.size - 1], **opts, &block)
  elsif opts[:type_rule]
    value(:filled?).value(*predicates, **opts, &block)
  else
    value(:filled?, *predicates, **opts, &block)
  end
end

def ensure_valid_predicates(predicates)

Other tags:
    Api: - private
def ensure_valid_predicates(predicates)
  if predicates.include?(:empty?)
    raise ::Dry::Schema::InvalidSchemaError, "Using filled with empty? predicate is invalid"
  end
  if predicates.include?(:filled?)
    raise ::Dry::Schema::InvalidSchemaError, "Using filled with filled? is redundant"
  end
end

def expected_primitives

Other tags:
    Api: - private
def expected_primitives
  primitive_inferrer[schema_type]
end

def filter_empty_string?

Other tags:
    Api: - private
def filter_empty_string?
  !expected_primitives.include?(NilClass) && processor_config.filter_empty_string
end

def processor_config

Other tags:
    Api: - private
def processor_config
  schema_dsl.processor_type.config
end

def schema_type

Other tags:
    Api: - private
def schema_type
  schema_dsl.types[name]
end