module Parameters

Builds parameter models for filtering, conversion, and validation.

Nested Classes and Modules

class Builder

Builds immutable parameter models using a field DSL.

class Enumeration

Converts an exact set of input values to corresponding output values.

class Error

A validation error associated with a specific argument path.

class ValidationError

Raised when parsed parameters are invalid.

class Field

Common behavior for fields in a parameter model.

class ValueField
class UploadField
class ArrayField
class NestedField
class Model

An immutable model for parsing, filtering, and validating parameters.

class Result

The result of parsing and validating content parameters.

class Type

Converts input values to a specific application type.

class Upload

A field-constrained streaming upload.

module Value

Internal values carry upload outcomes from streaming parsing into field validation.

Definitions

TYPES

The built-in parameter type conversions.

Implementation

TYPES = {
	Integer => ->(value) do
		# Reject non-string values rather than relying on implicit numeric coercion:
		unless value.is_a?(String)
			raise TypeError
		end
		
		Integer(value, 10)
	end,
	Float => ->(value){Float(value)},
}.freeze

def self.build(parser: Parser.default, types: TYPES, strict: true, &block)

Build an immutable parameter model.

Signature

parameter parser Parser

The content parser.

parameter types Hash

The available type conversions.

parameter strict Boolean

Whether unknown fields should produce validation errors.

returns Model

The frozen parameter model.

Implementation

def self.build(parser: Parser.default, types: TYPES, strict: true, &block)
	return Builder.new(parser:, types:, strict:).build(&block)
end