Как интерполировать строку, содержащую код мопса в файле мопса? - PullRequest
0 голосов
/ 28 декабря 2018

Мне нужно интерполировать строку, содержащую некоторый отформатированный мопс код в файле мопса.

Что я тестировал:

- var text = "i.home.icon"

div= text
div !{text}
div #{text}
div ${${text}}
div {{text}}
div {text}
div \#{text}
div \{text}
div ${text}
div
    #{text}

Что я хочу:

<div><i class="home icon"><i></div>

1 Ответ

0 голосов
/ 08 января 2019

Вы можете сделать это с 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>

Краткое объяснение того, что этоделает, строка за строкой:

  1. Разделяет строку, разделенную точкой, в массив
  2. Сохраняет имя тега отдельно
  3. Удаляет первый элемент в массиве
  4. Объединяет оставшуюся часть массива в строку с пробелами, подходящую для class="" output
  5. . Используйте разделитель канала для вывода тега обычный текст с классами
  6. Вывести любой контент, добавленный к тегу, если он существует
  7. Закройте тег, снова используя обычный текст
...