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

Side by Side Diff: pkg/polymer/lib/src/declaration.dart

Issue 173473002: Adapting observe to use smoke (this is built on top of the previous change that (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
« no previous file with comments | « pkg/observe/pubspec.yaml ('k') | pkg/smoke/lib/mirrors.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of polymer; 5 part of polymer;
6 6
7 /** 7 /**
8 * **Warning**: this class is experiental and subject to change. 8 * **Warning**: this class is experiental and subject to change.
9 * 9 *
10 * The implementation for the `polymer-element` element. 10 * The implementation for the `polymer-element` element.
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 // do not override explicit entries 284 // do not override explicit entries
285 if (attr == '') continue; 285 if (attr == '') continue;
286 286
287 var property = new Symbol(attr); 287 var property = new Symbol(attr);
288 var path = new PropertyPath([property]); 288 var path = new PropertyPath([property]);
289 if (_publish != null && _publish.containsKey(path)) { 289 if (_publish != null && _publish.containsKey(path)) {
290 continue; 290 continue;
291 } 291 }
292 292
293 var decl = smoke.getDeclaration(_type, property); 293 var decl = smoke.getDeclaration(_type, property);
294 if (decl == null || !decl.isProperty || decl.isFinal) { 294 if (decl == null || decl.isMethod || decl.isFinal) {
295 window.console.warn('property for attribute $attr of polymer-element ' 295 window.console.warn('property for attribute $attr of polymer-element '
296 'name=$name not found.'); 296 'name=$name not found.');
297 continue; 297 continue;
298 } 298 }
299 if (_publish == null) _publish = {}; 299 if (_publish == null) _publish = {};
300 _publish[path] = decl; 300 _publish[path] = decl;
301 } 301 }
302 } 302 }
303 303
304 // NOTE: the following is not possible in Dart; fields must be declared. 304 // NOTE: the following is not possible in Dart; fields must be declared.
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 return new StyleElement() 447 return new StyleElement()
448 ..text = cssText 448 ..text = cssText
449 ..attributes[_STYLE_SCOPE_ATTRIBUTE] = '$name-$scopeDescriptor'; 449 ..attributes[_STYLE_SCOPE_ATTRIBUTE] = '$name-$scopeDescriptor';
450 } 450 }
451 451
452 /** 452 /**
453 * Fetch a list of all *Changed methods so we can observe the associated 453 * Fetch a list of all *Changed methods so we can observe the associated
454 * properties. 454 * properties.
455 */ 455 */
456 void inferObservers() { 456 void inferObservers() {
457 var options = const smoke.QueryOptions(includeProperties: false, 457 var options = const smoke.QueryOptions(includeFields: false,
458 includeMethods: true, includeInherited: true); 458 includeProperties: false, includeMethods: true, includeInherited: true);
459 for (var decl in smoke.query(_type, options)) { 459 for (var decl in smoke.query(_type, options)) {
460 String name = smoke.symbolToName(decl.name); 460 String name = smoke.symbolToName(decl.name);
461 if (name.endsWith(_OBSERVE_SUFFIX) && name != 'attributeChanged') { 461 if (name.endsWith(_OBSERVE_SUFFIX) && name != 'attributeChanged') {
462 // TODO(jmesserly): now that we have a better system, should we 462 // TODO(jmesserly): now that we have a better system, should we
463 // deprecate *Changed methods? 463 // deprecate *Changed methods?
464 if (_observe == null) _observe = new HashMap(); 464 if (_observe == null) _observe = new HashMap();
465 name = name.substring(0, name.length - 7); 465 name = name.substring(0, name.length - 7);
466 _observe[new PropertyPath(name)] = [decl.name]; 466 _observe[new PropertyPath(name)] = [decl.name];
467 } 467 }
468 } 468 }
469 } 469 }
470 470
471 /** 471 /**
472 * Fetch a list of all methods annotated with [ObserveProperty] so we can 472 * Fetch a list of all methods annotated with [ObserveProperty] so we can
473 * observe the associated properties. 473 * observe the associated properties.
474 */ 474 */
475 void explodeObservers() { 475 void explodeObservers() {
476 var options = const smoke.QueryOptions(includeProperties: false, 476 var options = const smoke.QueryOptions(includeFields: false,
477 includeMethods: true, includeInherited: true, 477 includeProperties: false, includeMethods: true, includeInherited: true,
478 withAnnotations: const [ObserveProperty]); 478 withAnnotations: const [ObserveProperty]);
479 for (var decl in smoke.query(_type, options)) { 479 for (var decl in smoke.query(_type, options)) {
480 for (var meta in decl.annotations) { 480 for (var meta in decl.annotations) {
481 if (meta is! ObserveProperty) continue; 481 if (meta is! ObserveProperty) continue;
482 if (_observe == null) _observe = new HashMap(); 482 if (_observe == null) _observe = new HashMap();
483 for (String name in meta.names) { 483 for (String name in meta.names) {
484 _observe.putIfAbsent(new PropertyPath(name), () => []).add(decl.name); 484 _observe.putIfAbsent(new PropertyPath(name), () => []).add(decl.name);
485 } 485 }
486 } 486 }
487 } 487 }
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 644
645 // Dart note: we need this function because we have additional renames JS does 645 // Dart note: we need this function because we have additional renames JS does
646 // not have. The JS renames are simply case differences, whereas we have ones 646 // not have. The JS renames are simply case differences, whereas we have ones
647 // like doubleclick -> dblclick and stripping the webkit prefix. 647 // like doubleclick -> dblclick and stripping the webkit prefix.
648 String _eventNameFromType(String eventType) { 648 String _eventNameFromType(String eventType) {
649 final result = _reverseEventTranslations[eventType]; 649 final result = _reverseEventTranslations[eventType];
650 return result != null ? result : eventType; 650 return result != null ? result : eventType;
651 } 651 }
652 652
653 final _ATTRIBUTES_REGEX = new RegExp(r'\s|,'); 653 final _ATTRIBUTES_REGEX = new RegExp(r'\s|,');
OLDNEW
« no previous file with comments | « pkg/observe/pubspec.yaml ('k') | pkg/smoke/lib/mirrors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698