README.md

# Agent
Implementação uso de **Agent** em `Elixir`.

![alt-text](elixir_logo.jpg)

## Exemplos de Uso
**Atualizar valor**:
```elixir
 iex> Agente.update("xxx001")
 :ok
```
**Exibir estado atual**:
```elixir
 iex> Agente.value()
 %{cursor: "xxx001"}

 iex> Agente.value(:cursor)
 %{cursor: "xxx001"}
```
**Nova chave - valor**:
```elixir
 iex> Agente.new(:index, "atualizacao")
 :ok
 iex> Agente.value()
%{cursor: :normal, index: "atualizacao"}
```

**Incrementar um valor**:
```elixir
 iex> Agente.increment
 :ok
 iex> Agente.value()
%{cursor: :normal, sum: 1}

iex> Agente.increment(5)
:ok
iex> Agente.value
%{cursor: :normal, sum: 5}
```

**Mesclar valores**:
```elixir
 iex> map = %{nome: "John Doe", last_name: "Smith", skills: [1, 2, 6]}
 iex> Agente.merge(map)
 %{cursor: :normal, last_name: "Smith", nome: "John Doe", skills: [1, 2, 6]}
```

**Excluir um valor**:
```elixir
 %{cursor: "novo valor hh", nova: "outro valor"}
 iex> Agente.delete(:cursor)
 %{nova: "outro valor"}
```

**Excluir muitos valores**:
```elixir
 %{foo: "foo bar", nova: "outro valor"}
 iex> Agente.drop([:foo, :nova])
 %{}
```

## Configuração
Adicione a configuração abaixo à sua aplicação para incializar o ```Agent```:
```elixir
  def application do
    [
      extra_applications: [:logger],
      mod: {Agente, %{cursor: :normal}}
    ]
  end
```

## Instalação

Se [disponível em Hex](https://hex.pm/docs/publish), o pacote poderá ser instalado
adicionando-se `agente` à sua lista de dependências em `mix.exs`:

```elixir
def deps do
  [
    {:agente, "~> 0.1.1"}
  ]
end
```

A documentação pode ser gerada com [ExDoc](https://github.com/elixir-lang/ex_doc)
e publicada em [HexDocs](https://hexdocs.pm). Após publicação, o ***docs*** poderá
ser encontrado em [https://hexdocs.pm/agente](https://hexdocs.pm/agente).