@@ -2,6 +2,7 @@ library dart_code_gen;
2
2
3
3
import 'package:angular/tools/reserved_dart_keywords.dart' ;
4
4
import 'package:angular/core/parser/syntax.dart' ;
5
+ import 'package:angular/core/parser/utils.dart' ;
5
6
6
7
escape (String s) => s.replaceAllMapped (new RegExp (r'(\"|\$|\n)' ), (m) {
7
8
var char = m[1 ];
@@ -11,7 +12,7 @@ escape(String s) => s.replaceAllMapped(new RegExp(r'(\"|\$|\n)'), (m) {
11
12
12
13
class DartCodeGen {
13
14
final HelperMap getters = new HelperMap ('_' ,
14
- getterTemplate, getterTemplateForReserved);
15
+ getterTemplate, getterTemplateForReserved, getterTemplateWithoutMapTest );
15
16
final HelperMap holders = new HelperMap ('_ensure\$ ' ,
16
17
holderTemplate, holderTemplateForReserved);
17
18
final HelperMap setters = new HelperMap ('_set\$ ' ,
@@ -223,14 +224,17 @@ class HelperMap {
223
224
final String prefix;
224
225
final Function template;
225
226
final Function templateForReserved;
227
+ final Function templateWithoutMapTest;
226
228
227
- HelperMap (this .prefix, this .template, this .templateForReserved);
229
+ HelperMap (this .prefix, this .template, this .templateForReserved, [ this .templateWithoutMapTest] );
228
230
229
231
String lookup (String key) {
230
232
String name = _computeName (key);
231
233
if (helpers.containsKey (key)) return name;
232
234
helpers[key] = isReserved (key)
233
235
? templateForReserved (name, key)
236
+ : isMapProperty (key) && templateWithoutMapTest != null
237
+ ? templateWithoutMapTest (name, key)
234
238
: template (name, key);
235
239
return name;
236
240
}
@@ -261,6 +265,9 @@ $name(o) {
261
265
}
262
266
""" ;
263
267
268
+ String getterTemplateWithoutMapTest (String name, String key) => """
269
+ $name (o) => o == null ? null : o.$key ;
270
+ """ ;
264
271
265
272
// ------------------------------------------------------------------
266
273
// Templates for generated holders (getters for assignment).
0 commit comments