SnakeskinTpl / Snakeskin

JavaScript template engine.
http://snakeskintpl.github.io/docs/
MIT License
39 stars 3 forks source link

Декораторы #25

Closed kobezzza closed 8 years ago

kobezzza commented 8 years ago

Декораторы будут доступны для блоков и шаблонов (для прототипов нет, ввиду того, что нет возможности передать "ссылку").

@bar
@baz({foo1: 1, foo2: 2})
- template foo()

Функция декоратор будет принимать ссылку на функцию, которую врапит и сможет возвращать другую функцию.

function typograf(target) {
  return function () {
    return Typograf.exec(target.call(this, ...arguments));
  };
}

Декораторы будут наследоваться и в дочернем шаблоне можно будет добавлять новые декораторы. Переопределять или удалять родительские декораторы будет нельзя.

trikadin commented 8 years ago

Добавить пока ничего не имею. Штука гуд.

kobezzza commented 8 years ago

Конечный синтаксис:

- @bar
- @baz({foo1: 1, foo2: 2})
- template foo()
  ? console.log(callee.decorators) /// Данная ссылка указывает на массив декораторов для шаблона
kobezzza commented 8 years ago

Столкнулся с рядом проблем при реализации декораторов для блоков, решил отложить до лучших времён, чтобы сейчас не терять время.

Для шаблонов сделано.