Войти с помощью github
Форум /

Обязанности bem-deps

  • инкрементальное накопление зависимостей в объектной модели
    • приём зависимостей в унифицированном формате
  • сериализация и десериализация накопленных зависимостей в унифицированный формат и из него (сохранение и чтение)
  • манипуляции с множествами зависимостей
    • объединение
    • пересечение
    • вычитание
  • вычисление упорядоченного множества БЭМ-сущностей из объектной модели дерева зависимостей по заданным критериям
  • инструменты для парсинга зависимостей из исходников

    Архитектура bem-deps

    Класс DepsContainer

Контейнер для инкрементального накопления зависимостей.

Методы инстанса:

  • add(deps) — добавляет информацию о зависимостях в контейнер; deps — чанк, описывающий зависимости в унифицированном формате
  • serialize() — сериализует информацию в унифицированный формат
  • forEach() — хелпер, позволяющий получить необходимое подмножество из объектной модели зависимостей

Статические методы:

  • deserialize() — фабрика, создаёт инстанс DepsContainer из сериализованного формата

    Формат для хранения зависимостей

TBD

Формат для накопления зависимостей

{
  deps: [
    {
      block: 'block-name', // имя блока
      elem: 'elem-name', // имя элемента
      mod: 'val' || true // имя и значение модификатора, `true` в качестве значения для булева модификатора
      priority: true // флаг приоритета зависимости
    }
  ],
  priority: [] // массив для указания приоритета зависимостей без их включения
}

Хелперы для парсинга зависимостей из исходников

Базовый класс DepsParser()

Абстрактный класс, задаёт интерфейс для парсеров зависимостей.

Класс DepsJsParser()

Парсер исходных файлов deps.js.

Класс DepsYmlParser()

Парсер исходных файлов deps.yaml.

Класс YmParser()

Парсер исходных js файлов, использующих модульную систему ym. Полезен при условии, что имена модулей однозначно соответствуют описываемых в них БЭМ-сущностям.

Утилиты

Утилиты возвращают новый инстанс DepsContainer с вычисленными зависимостями:

  • subtract(source, subtraction...)
  • merge(source...)
  • intersect(source...)