Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Side by Side Diff: third_party/pkg/angular/lib/core/parser/eval.dart

Issue 176943008: Update the Angular/DI tests to latest from github. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 library angular.core.parser.eval; 1 library angular.core.parser.eval;
2 2
3 import 'package:angular/core/parser/syntax.dart' as syntax; 3 import 'package:angular/core/parser/syntax.dart' as syntax;
4 import 'package:angular/core/parser/utils.dart'; 4 import 'package:angular/core/parser/utils.dart';
5 import 'package:angular/core/module.dart';
5 6
6 export 'package:angular/core/parser/eval_access.dart'; 7 export 'package:angular/core/parser/eval_access.dart';
7 export 'package:angular/core/parser/eval_calls.dart'; 8 export 'package:angular/core/parser/eval_calls.dart';
8 9
9 class Chain extends syntax.Chain { 10 class Chain extends syntax.Chain {
10 Chain(List<syntax.Expression> expressions) : super(expressions); 11 Chain(List<syntax.Expression> expressions) : super(expressions);
11 eval(scope) { 12 eval(scope, [FilterMap filters]) {
12 var result; 13 var result;
13 for (int i = 0, length = expressions.length; i < length; i++) { 14 for (int i = 0; i < expressions.length; i++) {
14 var last = expressions[i].eval(scope); 15 var last = expressions[i].eval(scope, filters);
15 if (last != null) result = last; 16 if (last != null) result = last;
16 } 17 }
17 return result; 18 return result;
18 } 19 }
19 } 20 }
20 21
21 class Filter extends syntax.Filter { 22 class Filter extends syntax.Filter {
22 final Function function;
23 final List allArguments; 23 final List allArguments;
24 Filter(syntax.Expression expression, String name, List<syntax.Expression> argu ments, 24 Filter(syntax.Expression expression, String name, List<syntax.Expression> argu ments,
25 Function this.function, List<syntax.Expression> this.allArguments) 25 List<syntax.Expression> this.allArguments)
26 : super(expression, name, arguments); 26 : super(expression, name, arguments);
27 eval(scope) => Function.apply(function, evalList(scope, allArguments)); 27
28 eval(scope, [FilterMap filters]) =>
29 Function.apply(filters(name), evalList(scope, allArguments, filters));
28 } 30 }
29 31
30 class Assign extends syntax.Assign { 32 class Assign extends syntax.Assign {
31 Assign(syntax.Expression target, value) : super(target, value); 33 Assign(syntax.Expression target, value) : super(target, value);
32 eval(scope) => target.assign(scope, value.eval(scope)); 34 eval(scope, [FilterMap filters]) =>
35 target.assign(scope, value.eval(scope, filters));
33 } 36 }
34 37
35 class Conditional extends syntax.Conditional { 38 class Conditional extends syntax.Conditional {
36 Conditional(syntax.Expression condition, 39 Conditional(syntax.Expression condition,
37 syntax.Expression yes, syntax.Expression no): super(condition, yes , no); 40 syntax.Expression yes, syntax.Expression no): super(condition, yes , no);
38 eval(scope) => toBool(condition.eval(scope)) 41 eval(scope, [FilterMap filters]) => toBool(condition.eval(scope))
39 ? yes.eval(scope) 42 ? yes.eval(scope)
40 : no.eval(scope); 43 : no.eval(scope);
41 } 44 }
42 45
43 class PrefixNot extends syntax.Prefix { 46 class PrefixNot extends syntax.Prefix {
44 PrefixNot(syntax.Expression expression) : super('!', expression); 47 PrefixNot(syntax.Expression expression) : super('!', expression);
45 eval(scope) => !toBool(expression.eval(scope)); 48 eval(scope, [FilterMap filters]) => !toBool(expression.eval(scope));
46 } 49 }
47 50
48 class Binary extends syntax.Binary { 51 class Binary extends syntax.Binary {
49 Binary(String operation, syntax.Expression left, syntax.Expression right): 52 Binary(String operation, syntax.Expression left, syntax.Expression right):
50 super(operation, left, right); 53 super(operation, left, right);
51 eval(scope) { 54 eval(scope, [FilterMap filters]) {
52 var left = this.left.eval(scope); 55 var left = this.left.eval(scope);
53 switch (operation) { 56 switch (operation) {
54 case '&&': return toBool(left) && toBool(this.right.eval(scope)); 57 case '&&': return toBool(left) && toBool(this.right.eval(scope));
55 case '||': return toBool(left) || toBool(this.right.eval(scope)); 58 case '||': return toBool(left) || toBool(this.right.eval(scope));
56 } 59 }
57 var right = this.right.eval(scope); 60 var right = this.right.eval(scope);
58 switch (operation) { 61 switch (operation) {
59 case '+' : return autoConvertAdd(left, right); 62 case '+' : return autoConvertAdd(left, right);
60 case '-' : return left - right; 63 case '-' : return left - right;
61 case '*' : return left * right; 64 case '*' : return left * right;
62 case '/' : return left / right; 65 case '/' : return left / right;
63 case '~/' : return left ~/ right; 66 case '~/' : return left ~/ right;
64 case '%' : return left % right; 67 case '%' : return left % right;
65 case '==' : return left == right; 68 case '==' : return left == right;
66 case '!=' : return left != right; 69 case '!=' : return left != right;
67 case '<' : return left < right; 70 case '<' : return left < right;
68 case '>' : return left > right; 71 case '>' : return left > right;
69 case '<=' : return left <= right; 72 case '<=' : return left <= right;
70 case '>=' : return left >= right; 73 case '>=' : return left >= right;
71 case '^' : return left ^ right; 74 case '^' : return left ^ right;
72 case '&' : return left & right; 75 case '&' : return left & right;
73 } 76 }
74 throw new EvalError('Internal error [$operation] not handled'); 77 throw new EvalError('Internal error [$operation] not handled');
75 } 78 }
76 } 79 }
77 80
78 class LiteralPrimitive extends syntax.LiteralPrimitive { 81 class LiteralPrimitive extends syntax.LiteralPrimitive {
79 LiteralPrimitive(dynamic value) : super(value); 82 LiteralPrimitive(dynamic value) : super(value);
80 eval(scope) => value; 83 eval(scope, [FilterMap filters]) => value;
81 } 84 }
82 85
83 class LiteralString extends syntax.LiteralString { 86 class LiteralString extends syntax.LiteralString {
84 LiteralString(String value) : super(value); 87 LiteralString(String value) : super(value);
85 eval(scope) => value; 88 eval(scope, [FilterMap filters]) => value;
86 } 89 }
87 90
88 class LiteralArray extends syntax.LiteralArray { 91 class LiteralArray extends syntax.LiteralArray {
89 LiteralArray(List<syntax.Expression> elements) : super(elements); 92 LiteralArray(List<syntax.Expression> elements) : super(elements);
90 eval(scope) => elements.map((e) => e.eval(scope)).toList(); 93 eval(scope, [FilterMap filters]) =>
94 elements.map((e) => e.eval(scope, filters)).toList();
91 } 95 }
92 96
93 class LiteralObject extends syntax.LiteralObject { 97 class LiteralObject extends syntax.LiteralObject {
94 LiteralObject(List<String> keys, List<syntax.Expression>values) : super(keys, values); 98 LiteralObject(List<String> keys, List<syntax.Expression>values) : super(keys, values);
95 eval(scope) => new Map.fromIterables(keys, values.map((e) => e.eval(scope))); 99 eval(scope, [FilterMap filters]) =>
100 new Map.fromIterables(keys, values.map((e) => e.eval(scope, filters)));
96 } 101 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698