Ember toString почти все

Задача, чтоб код в Ember-приложении выводил сам себя, ставится не часто. Впервые я с ней столкнулся, когда работал над задачником по JS. Тогда условие было простым: выводить методы из контроллеров и обработчики событий из представлений. Решение было довольно топорным и заточенным только под текущий проект (см. по ссылке). Время шло, проекты менялись. И, при создании Ember-дополнений я столкнулся с ситуацией, что при создании демок для них, я копирую код из контроллеров в шаблон. Это дублирование до добра не доводит.В одном из таким дополнений я сделал helper вида — tostring.js. В него по ссылке передавалось поле объекта или ссылка на метод или обработчик события. Задача-минимум была решена, но не совсем в общем виде. Для более комплексного решения, helper должен соответствовать требованиям:

  • Должен выводить строковое представление как свойств, так и методов (обработчики событий в том числе).
  • Должен принимать объект и имя свойства/метода.
  • Должен сам различать метод и обработчик событий.
  • Должен выводить для метода поля, за которыми он наблюдает, и события, на которые он подписан (если такие есть).
  • Должен уметь разливать computedProperty и injectedProperty.
  • Для injectedProperty должен различать его тип (service/controller).
  • Для computedProperty должен уметь выводить его и getter, и setter.
  • Для computedProperty должен выводить список полей, от которых оно зависит.
  • Для computedProperty должен выводить его «текущее» значение.
  • Если отображаемое свойство является Ember.object’ом, то необходимо это определить и вывести.
  • Если computedProperty является результатом выполнения одного из методов Ember.computed, то необходимо это определить.

На текущий момент удалось реализовать все, кроме последнего пункта. Выполнение методов из Ember.computed не оставляет никаких «следов», по которым можно было бы определить, что это alias, and, or и т.д.

Исходный код доступен на github — ember-to-string. Так же он уже выложен в npm. Устанавливается через:

ember install ember-to-string

Демка доступна по ссылке.

, , , ,

Оставить комментарий

Top ↑ | Main page | Back