README.md

# petrovic_elixir

[![petrovich](https://camo.githubusercontent.com/4555ec1b7aa15e0cd22f8ff619c965da0596399a/68747470733a2f2f7261772e6769746875622e636f6d2f726f637363692f706574726f766963682f6d61737465722f706574726f766963682e706e67)](https://github.com/petrovich/petrovich_elixir)

[![Build Status](https://travis-ci.org/petrovich/petrovich_elixir.svg?branch=master)](https://travis-ci.org/petrovich/petrovich_elixir) [![Coverage Status](https://coveralls.io/repos/github/petrovich/petrovich_elixir/badge.svg?branch=master)](https://coveralls.io/github/petrovich/petrovich_elixir?branch=master) [![Hex Version](https://img.shields.io/hexpm/v/petrovich_elixir.svg)](https://hex.pm/packages/petrovich_elixir) [![License](http://img.shields.io/badge/license-MIT-brightgreen.svg)](http://opensource.org/licenses/MIT)

Elixir library to inflect Russian first, last, and middle names.


## Installation

```elixir
def deps do
  [
    {:petrovich_elixir, "~> 1.0"}
  ]
end
```


## Usage

### Do I need to know Russian to use it?

Yes, you will need some basic Russian knowledge to work with this library.
You need to understand how [grammatical cases](https://en.wikipedia.org/wiki/Grammatical_case) work in Russian language.

### Inflection

```elixir
Petrovich.firstname!("Александр", :accusative)
# => Александра

Petrovich.middlename!("Сергеевич", :accusative)
# => Сергеевича

Petrovich.lastname!("Пушкин", :accusative, :male)
# => Пушкина
```

### Gender detection

```elixir
alias Petrovich.Detector

Detector.detect_gender("Александр", :firstname)
# => {:ok, "male"}
```


## Configuration

You will need to add these lines into your `config.exs`:

```elixir
config :petrovich_elixir,
  rules_path: "rules/rules.json",
  gender_path: "rules/gender.json",
  json_codec: Jason
```

You can swap our default ([`Jason`](https://github.com/michalmuskala/jason))
codec to any of your choice.


## Rules

This package uses [`petrovich-rules`](https://github.com/petrovich/petrovich-rules) as the source for all transformations. If you ever experience wrong result or other issues with the data itself, please open an issue [here](https://github.com/petrovich/petrovich-rules/issues).


## License

MIT. See [LICENSE](/LICENSE) for details.