Packages
pillar
0.2.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.1
0.34.0
0.33.1
0.33.0
0.32.0
0.31.0
0.30.0
0.29.1
0.29.0
0.28.0
0.27.0
0.26.1
0.26.0
0.25.1
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.1
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.0
Elixir client for ClickHouse, a fast open-source Online Analytical Processing (OLAP) database management system.
Current section
Files
Jump to
Current section
Files
lib/vin_decode.ex
defmodule VinDecode do
@moduledoc """
Documentation for VinDecode.
"""
alias VinDecode.Dictionaries.Countries
alias VinDecode.Dictionaries.Years
alias VinDecode.Dictionaries.Wmi
alias VinDecode.Validation
@spec info(any) :: {:ok, any} | {:error, any}
def info(vin) when is_binary(vin) do
cond do
String.length(vin) != 17 ->
{:error, :invalid_length}
!Validation.valid?(vin) ->
{:error, :invalid_checksum}
true ->
%{
year: Years.year(vin),
country: Countries.country(vin),
manafacturer: Wmi.manafacturer(vin),
serial: serial(vin)
}
end
end
def info(_vin) do
{:error, :invalid_value}
end
defp serial(vin) do
String.slice(vin, 11..16)
end
end