README.md
# peselx
Elixir parser and validator for PESEL numbers
## PESEL number
[PESEL](https://pl.wikipedia.org/wiki/PESEL) is Polish national ID number. It has specific structure:
|Birth date |Serial |Sex |Control digit |
|-----------|-------|-----|--------------|
|440514 |014 |5 |8 |
### Birth date
Birth date in number has format yymmdd.
* for years 1800-1899 add 8 to month e.g. january is 81
* for years 1900-1999 month has 'standard' number e.g. january is 01
* for years 2000-2099 add 2 to month e.g. january is 21
* for years 2100-2199 add 6 to month e.g. january is 61
### Sex
Even for girls odd for boys. Easy :)
### Control digit
To calculate control digit we need:
* calculate sum of numbers from position 1 to 10 (date, serial, sex) with weights.
* calculate modulo 10
* substract result from 10.
If result is 0 OR 10 if modulo gives 0 then PESEL is valid.
#### Weigths
Weights for calculating CD:
|A |B |C |D |E |F |G |H |I |J |
|---|---|---|---|---|---|---|---|---|---|
|1 |3 |7 |9 |1 |3 |7 |9 |1 |3 |
## Usage
```elixir
iex> Peselx.validate("04231115629")
{:ok, "Valid"}
```
## Change in branching model
To remember. Rules of branching:
- `master` – branch is production.
- `release-*` – code where we developing next release.
- `feature-*` – optional branch for feature that is developer „on side”
Use `merge --no-ff` to close branch.
## Varia
MASTER – [![Build Status – MASTER](https://travis-ci.org/Koziolek/peselx.svg?branch=master)](https://travis-ci.org/Koziolek/peselx)
release-0.2.0 – [![Build Status – 0.2.0](https://travis-ci.org/Koziolek/peselx.svg?branch=release-0.2.0)](https://travis-ci.org/Koziolek/peselx)
release-0.3.0 – [![Build Status – 0.3.0](https://travis-ci.org/Koziolek/peselx.svg?branch=release-0.3.0)](https://travis-ci.org/Koziolek/peselx)