# NestedArray
Предназначен для преобразования в древовидную структуру плоских данных описанных
по паттерну «Список смежности» (Adjacency List), то есть в нодах указа предок
`parent_id`. Например:
```ruby
[
{id: 1, parent_id: nil, name: 'first', …},
{id: 2, parent_id: 1, name: 'second', …},
{id: 3, parent_id: 1, name: 'third', …}
]
# ↓ ↓ ↓
[
{id: 1, parent_id: nil, name: 'first', children: [
{id: 2, parent_id: 1, name: 'second', …},
{id: 3, parent_id: 1, name: 'third', …}
], …}
]
```
## Установка
Добавте строку в _Gemfile_ вашего приложения:
```ruby
# Версия не расширяет базовый класс Array методами гема. Для использования необходимо преобразовать данные к новому типу, см ниже.
# Работа с древовидными массивами.
gem 'nested_array', '~> 1.0.0'
# Версия с автоматическим расширением базового класса Array методами гема.
# Работа с древовидными массивами.
gem "nested_array", "~> 2.0.0"
```
И затем выполните `bundle install`.
Или установите его как `gem install nested_array`
## Использование
__Список методов__
* [to_nested](#to_nested) — преобразует плоскую структуру во вложенную;
* [each_nested](#each_nested) — перебирает вложенную стуктуру;
* [each_nested!](#each_nested) — перебирает вложенную стуктуру, предоставляя доступ к исходным данным;
* [nested_to_html](#nested_to_html) — преобразует вложенную структуру в html вёрстку (многоуровневый список `
…`);
* [nested_to_options](#nested_to_options) — преобразует вложенную структуру в массив для формирования опций html-тега `