//- 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