Показать сообщение отдельно
  #4 (permalink)  
Старый 24.05.2016, 02:16
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от khusamov Посмотреть сообщение
Хе, а вот такая формула уже не пашет:

rollbackButtonDisabled: function(get) {
	/* var first = get("cuttingListStore").first();
	return !get("started") || (first ? first.get("current") : true);*/
	return !get("started");
}


То есть, наличие в ней комментария как-то влияет на ее работу.
Я в ViewModels и формулах не силён, но по-косой проглядев исходник Ext.app.bind.Formula увидел там вот такой метод:

parseFormula: function (formula) {
        var str = formula.toString(),
            expressions = {
                $literal: true
            },
            match, getterProp, formulaRe, expr;

        match = this.argumentNamesRe.exec(str);
        getterProp = match ? match[1] : 'get';
        formulaRe = Ext.app.bind.Formula.getFormulaParser(getterProp);

        while ((match = formulaRe.exec(str))) {
            expr = match[2];
            expressions[expr] = expr;
        }

        expressions.$literal = true;

        // We store the parse results on the function object because we might reuse the
        // formula function (typically when a ViewModel class is created a 2nd+ time).
        formula.$expressions = expressions;

        return expressions;
    },


То, что я здесь увидел, напоминает очередное бледное подобие левой руки парсера на регулярных выражениях, который вовсе никак не учитывает потенциальное наличие в теле формулы строк с комментариями. И, в сущности, по понятным причинам: любой программист, когда-либо пытавшийся написать парсер C++ отлично знает, насколько гнойным выходит регекс для обрезания комментариев. Учитывая наследственную кастрированность регексов в JavaScript, я бы просто забил.

А вот почему в документации не указано, что в теле формулы нельзя иметь комментарии, так это вопрос, вполне достойный тикета.
Ответить с цитированием