ZaIdNumber.Validator (za_id_number v1.2.0)

Copy Markdown View Source

Parses and validates South African ID numbers.

The format is YYMMDDSSSSCAZ:

  • YYMMDD - date of birth
  • SSSS - gender sequence (0000-4999 female, 5000-9999 male)
  • C - citizenship (0 = born citizen, 1 = permanent resident)
  • A - historical field, unused
  • Z - Luhn checksum digit

Summary

Functions

Validates and returns id number information.

Types

result()

@type result() :: %{
  gender: :female | :male,
  age: non_neg_integer(),
  date_of_birth: Date.t(),
  citizen_status: :born_citizen | :permanent_resident
}

Functions

validate(value, opts \\ [])

@spec validate(id_number :: term(), opts :: keyword()) ::
  {:ok, result()} | {:error, String.t()}

Validates and returns id number information.

Options

  • :today - reference date used for the century pivot and age calculation. Defaults to Date.utc_today/0.