View Source SpanishDoc (SpanishDoc v1.3.0)

A module to parse, validate and obfuscate Spanish identity documentation numbers.

Summary

Functions

Obfuscate a NIF/NIE document number.

Parses a text representation of a NIF/NIE document number.

Checks the NIF/NIE document number has a valid NIF/NIE format.

Functions

@spec obfuscate(String.t()) :: {:ok, :nif | :nie, String.t()} | {:error, String.t()}

Obfuscate a NIF/NIE document number.

Examples

iex> SpanishDoc.obfuscate("85033335N")
{:ok, :nif, "***3333**"}

iex> SpanishDoc.obfuscate("E90725946")
{:ok, :nif, "***7259**"}

iex> SpanishDoc.obfuscate("Y7811422S")
{:ok, :nie, "****1422*"}

iex> SpanishDoc.obfuscate("hello")
{:error, "Document not valid"}
@spec parse(String.t()) :: {:ok, :nif | :nie, String.t()} | {:error, String.t()}

Parses a text representation of a NIF/NIE document number.

Examples

iex> SpanishDoc.parse("16659622D")
{:ok, :nif, "16659622D"}

iex> SpanishDoc.parse("M2919200V")
{:ok, :nif, "M2919200V"}

iex> SpanishDoc.parse("Q4978527B")
{:ok, :nif, "Q4978527B"}

iex> SpanishDoc.parse("y6115461m")
{:ok, :nie, "Y6115461M"}

iex> SpanishDoc.parse("16.659.622-D")
{:ok, :nif, "16659622D"}

iex> SpanishDoc.parse("16659622Z")
{:error, "Document not valid"}

iex> SpanishDoc.parse("123456789")
{:error, "Document not valid"}

iex> SpanishDoc.parse("1234")
{:error, "Document not valid"}

iex> SpanishDoc.parse("hello")
{:error, "Document not valid"}
@spec valid?(String.t()) :: boolean()

Checks the NIF/NIE document number has a valid NIF/NIE format.

Examples

iex> SpanishDoc.valid?("16659622D")
true

iex> SpanishDoc.valid?("16659622X")
false

iex> SpanishDoc.valid?("error")
false