lightspeed/form

Form binding helpers for event payloads and typed form values.

Types

One form field.

pub type Field {
  Field(name: String, value: String)
}

Constructors

  • Field(name: String, value: String)

Normalized form payload.

pub type FormData {
  FormData(fields: List(Field))
}

Constructors

  • FormData(fields: List(Field))

Form decode and binding errors.

pub type FormError {
  MissingField(String)
  InvalidInteger(name: String, value: String)
  InvalidBoolean(name: String, value: String)
}

Constructors

  • MissingField(String)
  • InvalidInteger(name: String, value: String)
  • InvalidBoolean(name: String, value: String)

Values

pub fn bool(
  form: FormData,
  name: String,
) -> Result(Bool, FormError)

Parse a required boolean field.

pub fn checked(form: FormData, name: String) -> Bool

Presence helper for checkbox-style fields.

pub fn empty() -> FormData

Empty form data.

pub fn error_to_string(error: FormError) -> String

Render stable error string for logs or telemetry.

pub fn fields(form: FormData) -> List(Field)

Return all fields.

pub fn from_entries(entries: List(#(String, String))) -> FormData

Build form data from key/value entries.

pub fn int(
  form: FormData,
  name: String,
) -> Result(Int, FormError)

Parse a required integer field.

pub fn parse_payload(payload: String) -> FormData

Parse a URL-form-encoded style payload (name=value&next=...).

This parser keeps values as plain strings and does not perform percent decoding. It is deterministic and suitable for typed server decoders.

pub fn put(
  form: FormData,
  name: String,
  value: String,
) -> FormData

Upsert one form field value.

pub fn require(
  form: FormData,
  name: String,
) -> Result(String, FormError)

Return a required field or an explicit missing-field error.

pub fn to_entries(form: FormData) -> List(#(String, String))

Convert form data back into entries.

pub fn value(
  form: FormData,
  name: String,
) -> option.Option(String)

Return first value for a field.

pub fn values(form: FormData, name: String) -> List(String)

Return all values for a field.

Search Document