pasaran / yate

Yet Another Template Engine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Добавление атрибутов через @

vitkarpov opened this issue · comments

Вот такой код работает, как ожидается:

<div>
  @data-params = '...'
  @class = '...'
</div>

Атрибуты будут добавлены.
Однако, если написать так:

<div>
  <span>
    "Hello, world!"
  </span>
  @data-params = '...'
  @class = '...'
</div>

В таком случае атрибуты не будут добавлены для div как в первом случае.

Это нормальное поведение?

Да, нормальное. Это из xslt пошло все.
Атрибуты приклеиваются к текущей открытой ноде, в которой еще не было никакого контента.
Если вывести строку или кусок xml, то все.

Ага, понял. Спасибо.

Однако, у нас тут не xml. Зачем нам такое ограничение?

Во-первых, таки xml. Результат наложения шаблонов это всегда well-formed xml.
Во-вторых, это техническое ограничение. Сейчас результат строится в виде строки. И прежде, чем выводить в эту строку что-то из содержимого тега, нужно этот тег полностью вывести. Что исключает последующее добавление туда атрибутов.
Альтернативой является строить виртуальное xml-дерево и потом его сериализовывать. Это в несколько раз медленнее. Так что так я делать не буду.