README.md

# DeeplyEnumerble and DataLeafWalker

Traverse and map values of deeply nested data structures: Provides a
`map_deeply/2` function for Maps and Lists and Keyword Lists. 


## Usage

```
DeeplyEnumerable.map_deeply( data, fn( value ) -> ...transform value... end )
```

Where data can ba a map, list or keyword list. 

```
data = [1, 2, 3, {:a, 2}, {:b, 4}, %{ a: 2 } ]
DeeplyEnumerable.map_deeply map, &( &1 + 1 )

# yields
[2, 3, [a: 4, b: 5], %{c: 6, d: ['e']}]

```

## What I use this for

I have to migrate ancient projects that use YAML-serialized in database columns.
Unfortunately they are doubly UTF-8 encoded so I convert these deeply-nested
maps into maps of the same structure with all values decoded into proper UTF-8.

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed as:

  1. Add data_leaf_walker to your list of dependencies in `mix.exs`:

        def deps do
          [{:data_leaf_walker, "~> 0.0.1"}]
        end