angular.core.parser library
Properties
Map<String, Operator> OPERATORS #
Map<String, Operator> OPERATORS = { 'undefined': NULL_OP, 'null': NULL_OP, 'true': (self, locals, a, b) => true, 'false': (self, locals, a, b) => false, '+': (self, locals, aFn, bFn) { var a = aFn.eval(self, locals); var b = bFn.eval(self, locals); return autoConvertAdd(a, b); }, '-': (self, locals, a, b) { assert(a != null || b != null); var aResult = a != null ? a.eval(self, locals) : null; var bResult = b != null ? b.eval(self, locals) : null; return (aResult == null ? 0 : aResult) - (bResult == null ? 0 : bResult); }, '*': (s, l, a, b) => a.eval(s, l) * b.eval(s, l), '/': (s, l, a, b) => a.eval(s, l) / b.eval(s, l), '%': (s, l, a, b) => a.eval(s, l) % b.eval(s, l), '^': (s, l, a, b) => a.eval(s, l) ^ b.eval(s, l), '=': NULL_OP, '==': (s, l, a, b) => a.eval(s, l) == b.eval(s, l), '!=': (s, l, a, b) => a.eval(s, l) != b.eval(s, l), '<': (s, l, a, b) => a.eval(s, l) < b.eval(s, l), '>': (s, l, a, b) => a.eval(s, l) > b.eval(s, l), '<=': (s, l, a, b) => a.eval(s, l) <= b.eval(s, l), '>=': (s, l, a, b) => a.eval(s, l) >= b.eval(s, l), '&&': (s, l, a, b) => toBool(a.eval(s, l)) && toBool(b.eval(s, l)), '||': (s, l, a, b) => toBool(a.eval(s, l)) || toBool(b.eval(s, l)), '&': (s, l, a, b) => a.eval(s, l) & b.eval(s, l), '|': NOT_IMPL_OP, //b(locals)(locals, a(locals)) '!': (self, locals, a, b) => !toBool(a.eval(self, locals)) }
var undefined_ #
var undefined_ = const Symbol("UNDEFINED")
Functions
dynamic safeFunctionCall(userFn, fnName, evalError) #
safeFunctionCall(userFn, fnName, evalError) { if (userFn == null) { throw evalError("Undefined function $fnName"); } if (userFn is! Function) { throw evalError("$fnName is not a function"); } return userFn; }
dynamic objectIndexSetField(o, i, v, evalError) #
objectIndexSetField(o, i, v, evalError) { if (o is List) { int arrayIndex = i.toInt(); if (o.length <= arrayIndex) { o.length = arrayIndex + 1; } o[arrayIndex] = v; } else if (o is Map) { o[i.toString()] = v; // toString dangerous? } else { throw evalError("Attempting to set a field on a non-list, non-map"); } return v; }
dynamic objectIndexGetField(o, i, evalError) #
objectIndexGetField(o, i, evalError) { if (o == null) throw evalError('Accessing null object'); if (o is List) { return o[i.toInt()]; } else if (o is Map) { return o[i.toString()]; // toString dangerous? } throw evalError("Attempted field access on a non-list, non-map"); }
dynamic autoConvertAdd(a, b) #
autoConvertAdd(a, b) { if (a != null && b != null) { // TODO(deboer): Support others. if (a is String && b is! String) { return a + b.toString(); } if (a is! String && b is String) { return a.toString() + b; } return a + b; } if (a != null) return a; if (b != null) return b; return null; }
dynamic parserEvalError(String s, String text, stack) #
parserEvalError(String s, String text, stack) => ['Eval Error: $s while evaling [$text]' + (stack != null ? '\n\nFROM:\n$stack' : '')];