| 1234567891011121314151617181920212223242526272829303132333435363738 |
- //- bem.pug
- //- Базовый миксин для блоков и элементов
- mixin b(blockName, elemName)
- - var className = blockName
- - var twClasses = attributes.tw || ''
- - var otherClasses = attributes.class || ''
- if elemName
- - className += '__' + elemName
- //- Обработка модификаторов
- if attributes.mod
- - className += ' ' + blockName + '--' + attributes.mod
- if attributes.mods
- each mod in attributes.mods.split(',')
- - className += ' ' + blockName + '--' + mod.trim()
- //- Собираем финальный класс
- - var finalClass = [className, twClasses, otherClasses].filter(Boolean).join(' ')
- //- Удаляем обработанные атрибуты
- - attributes.tw = null
- - attributes.mod = null
- - attributes.mods = null
- - attributes.class = null
- //- Генерация элемента
- if block
- div(class=finalClass)&attributes(attributes)
- block
- else
- div(class=finalClass)&attributes(attributes)
- //- Миксин для элементов (альтернативный синтаксис)
- mixin e(blockName, elemName)
- +b(blockName, elemName)&attributes(attributes)
- block
|