cc @andrewblond @zxqfox @arikon @SevInf @narqo @scf2k @veged
https://github.com/bem/bem-talk/issues/2#issuecomment-28503961
Мой список:
DB-like интерфейс к БЭМ-проекту. Не отдает наружу никаких знаний об организиации файлов, позволяет манипулировать БЭМ-сущностями на высоком уровне. Список операций:
BEMDB.open('/path/to/project')
- создание нового инстанса, единственное место где фигурирует какой-либо файловый путь.BEMDB.getLevels()
- возвращает список типизорованных уровней проекта.Level.getBlocks()
- получить список блоков на уровне.Level.get(block, [elem], [mod], [val])
- получить конкретную бэм-сущность с уровня.Level.put(block, [elem], [mod], [val])
- добавить бэм-сущность на уровень.BemEntity.get(suffix)
- получить контент исходника для бэм-сущности.BemEntity.put(suffix, content)
- записать контент.map
,reduce
.Может строится поверх более простого модуля 'Storage', который будет инкапсулировать в себе всю работу с физическим расположением файлов. Таким образом, возможна будет работа с различными типам хранилищ, не только с FS.
@SevInf Есть примеры, когда недостаточно fs? Реальные из жизни ;)
@arikon
И вопрос тут больше не в том, что это не нужно в реальной жизни, а в том, что есть завязка на FS, это значит, что все технологии, все модули должны будут обладать информацией о том, как строятся пути, это значит, что
levels
будет выбрасывать кишки наружу, в итоге ничего не изменится толком. Если можно сразу сделать правильно — почему не сделать?Им не надо ничего этого знать. Схема именования заключена в уровне. Спросил у уровня путь для такого-то блока - получил. Никаких кишок.
Есть ещё идеи?
@scf2k спросил у уровня — это уже не high-level, не хочется выкидывать внутреннее API, поскольку потом ничего с ним нельзя будет сделать. @arikon Думаю, что ключевая идея — это работа с блоками как с множествами или кортежами. На ум приходят taffydb, или некая ORM, все остальное выкидывать в API нужно крайне осторожно. multum in parvo
Не понял.
@scf2k high-level это
В #10 начал описывать API модуля
bem-deps
.Предлагаю начать с него, потому что это вполне понятная штука, и её можно опробовать сразу на текущих версиях
enb
иbem-tools
. Кроме того, вbem-tools
работа с зависимостями реализована сейчас очень запутанно, и там есть баги. Ни один разработчик, который пытался там что-то исправить, не вернулся (кроме меня и @veged).Этот модуль начнёт сразу приносить пользу после релиза ;)
Завёл топик для сбора текущих ограничений в выражении зависимостей #11. Добавляйте свои случаи.
@arikon а когда релиз?)
@zxqfox Когда напишем, очевидно ;)