Dart Documentationangular.core.parser

angular.core.parser library

Properties

Operator NOT_IMPL_OP #

Operator NOT_IMPL_OP = (_, _x, _0, _1) { throw "Op not implemented"; }

Operator NULL_OP #

Operator NULL_OP = (_, _x, _0, _1) => null

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' : '')];

Abstract Classes

Classes

Typedefs