24 lines
600 B
Elixir
24 lines
600 B
Elixir
defmodule UkraineTaxidEx.Edrpou.Parser do
|
|
alias UkraineTaxidEx.Edrpou
|
|
|
|
import UkraineTaxidEx.Edrpou, only: [length: 0]
|
|
import UkraineTaxidEx.Edrpou.CheckSum, only: [check_sum: 1]
|
|
import UkraineTaxidEx.Commons, only: [check_digit: 1, digits: 2, ok: 1]
|
|
|
|
use UkraineTaxidEx.BaseParser
|
|
|
|
def parse(edrpou_string, incomplete: false) do
|
|
digits = digits(edrpou_string, length())
|
|
|
|
%{
|
|
code: edrpou_string,
|
|
check_sum: check_sum(digits),
|
|
check_digit: check_digit(digits)
|
|
}
|
|
|> create_struct()
|
|
|> ok()
|
|
end
|
|
|
|
defp create_struct(map), do: struct(Edrpou, map)
|
|
end
|