Вы можете сделать это с mixin . Вот кодовая ручка , демонстрирующая его работу в живом примере.
mixin tagCreator(def)
- var tagArray = def.split('.');
- var tag= tagArray[0];
- tagArray.shift();
- var classes = tagArray.join(' ');
|<#{tag} class='#{classes}'>
if block
block
|</#{tag}>
+tagCreator('one')
+tagCreator('two.three.four') Two
Приведенный выше код создает этот HTML-код:
<one class=""></one>
<two class="three four">Two</two>
Краткое объяснение того, что этоделает, строка за строкой:
- Разделяет строку, разделенную точкой, в массив
- Сохраняет имя тега отдельно
- Удаляет первый элемент в массиве
- Объединяет оставшуюся часть массива в строку с пробелами, подходящую для
class=""
output - . Используйте разделитель канала для вывода тега обычный текст с классами
- Вывести любой контент, добавленный к тегу, если он существует
- Закройте тег, снова используя обычный текст