GS1.Validator (gs1_barcode v0.1.2)
View SourceGS1 Data Structure validator.
Configurable validator for GS1 Data Structures with support of custom DSL constraints.
Summary
Functions
Validates a GS1 Data Structure against a given configuration.
Types
@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, whereerrorsis a list of accumulatedGS1.ValidationError.t().
Functions
@spec validate(GS1.DataStructure.t(), GS1.ValidatorConfig.t()) :: result()
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")
}
]}