GS1.Validator (gs1_barcode v0.1.2)

View Source

GS1 Data Structure validator.

Configurable validator for GS1 Data Structures with support of custom DSL constraints.

Summary

Types

Result of a validation.

Functions

Validates a GS1 Data Structure against a given configuration.

Types

result()

@type result() :: :ok | {:invalid, [GS1.ValidationError.t()]}

Result of a validation.

  • :ok - signifies that Data Structure passed all validation checks.
  • {:invalid, errors} - when one or more validation checks failed, where errors is a list of accumulated GS1.ValidationError.t().

Functions

validate(ds, config)

Validates a GS1 Data Structure against a given configuration.

The validation process is a pipeline of checks: required AIs, forbidden AIs, check digits, dates for predefined set of AIs, and custom DSL constraints.

Examples

iex> ds = %GS1.DataStructure{
...>  content: "01937123456789043103001234911A2B3C4D5E",
...>  type: :unknown,
...>  fnc1_prefix: "",
...>  ais: %{"01" => "93712345678904", "3103" => "001234", "91" => "1A2B3C4D5E"}
...> }
iex> GS1.Validator.validate(ds, GS1.ValidatorConfig.new(required_ais: ["01", "3103", "91"]))
:ok
iex> GS1.Validator.validate(ds, GS1.ValidatorConfig.new(forbidden_ais: ["3103"]))
{:invalid,
  [
    %GS1.ValidationError{
      code: :forbidden_ai,
      ai: "3103",
      message: ~s(Forbidden AIs found: "3103")
    }
  ]}