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

Side by Side Diff: tools/dom/scripts/htmleventgenerator.py

Issue 11970019: Change /// @docsEditable to @DocsEditable annotation. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Template removal stuff. Created 7 years, 11 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 | « tools/dom/scripts/htmldartgenerator.py ('k') | tools/dom/scripts/systemhtml.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
3 # for details. All rights reserved. Use of this source code is governed by a 3 # for details. All rights reserved. Use of this source code is governed by a
4 # BSD-style license that can be found in the LICENSE file. 4 # BSD-style license that can be found in the LICENSE file.
5 5
6 """This module provides functionality to generate dart:html event classes.""" 6 """This module provides functionality to generate dart:html event classes."""
7 7
8 import logging 8 import logging
9 9
10 _logger = logging.getLogger('dartgenerator') 10 _logger = logging.getLogger('dartgenerator')
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 self._event_classes.add(interface.id) 469 self._event_classes.add(interface.id)
470 events_class_name = html_interface_name + 'Events' 470 events_class_name = html_interface_name + 'Events'
471 parent_events_class_name = self._GetParentEventsClassName(interface) 471 parent_events_class_name = self._GetParentEventsClassName(interface)
472 472
473 if not event_names: 473 if not event_names:
474 return parent_events_class_name 474 return parent_events_class_name
475 475
476 template_file = 'impl_%s.darttemplate' % events_class_name 476 template_file = 'impl_%s.darttemplate' % events_class_name
477 template = (self._template_loader.TryLoad(template_file) or 477 template = (self._template_loader.TryLoad(template_file) or
478 '\n' 478 '\n'
479 '/// @docsEditable true\n' 479 '@DocsEditable\n'
480 'class $CLASSNAME extends $SUPER {\n' 480 'class $CLASSNAME extends $SUPER {\n'
481 ' /// @docsEditable true\n' 481 ' @DocsEditable\n'
482 ' $CLASSNAME(EventTarget _ptr) : super(_ptr);\n' 482 ' $CLASSNAME(EventTarget _ptr) : super(_ptr);\n'
483 '$!MEMBERS}\n') 483 '$!MEMBERS}\n')
484 484
485 # TODO(jacobr): specify the type of _ptr as EventTarget 485 # TODO(jacobr): specify the type of _ptr as EventTarget
486 implementation_events_members = events_implementation_emitter.Emit( 486 implementation_events_members = events_implementation_emitter.Emit(
487 template, 487 template,
488 CLASSNAME=events_class_name, 488 CLASSNAME=events_class_name,
489 SUPER='%s' % parent_events_class_name) 489 SUPER='%s' % parent_events_class_name)
490 490
491 dom_event_names = set() 491 dom_event_names = set()
492 for event in event_names: 492 for event in event_names:
493 dom_name = event 493 dom_name = event
494 dom_name = _on_attribute_to_event_name_mapping.get(dom_name, dom_name) 494 dom_name = _on_attribute_to_event_name_mapping.get(dom_name, dom_name)
495 dom_event_names.add(dom_name) 495 dom_event_names.add(dom_name)
496 if html_interface_name in _html_manual_events: 496 if html_interface_name in _html_manual_events:
497 dom_event_names.update(_html_manual_events[html_interface_name]) 497 dom_event_names.update(_html_manual_events[html_interface_name])
498 for dom_name in sorted(dom_event_names): 498 for dom_name in sorted(dom_event_names):
499 if dom_name not in _html_event_names: 499 if dom_name not in _html_event_names:
500 _logger.warn('omitting %s event as there is no HTML name for it' % dom_n ame) 500 _logger.warn('omitting %s event as there is no HTML name for it' % dom_n ame)
501 continue 501 continue
502 502
503 html_name = _html_event_names[dom_name] 503 html_name = _html_event_names[dom_name]
504 full_event_name = '%sEvents.%s' % (html_interface_name, html_name) 504 full_event_name = '%sEvents.%s' % (html_interface_name, html_name)
505 if not full_event_name in custom_events: 505 if not full_event_name in custom_events:
506 implementation_events_members.Emit( 506 implementation_events_members.Emit(
507 "\n" 507 "\n"
508 " /// @docsEditable true\n" 508 " @DocsEditable\n"
509 " EventListenerList get $NAME => this['$DOM_NAME'];\n", 509 " EventListenerList get $NAME => this['$DOM_NAME'];\n",
510 NAME=html_name, 510 NAME=html_name,
511 DOM_NAME=dom_name) 511 DOM_NAME=dom_name)
512 512
513 return events_class_name 513 return events_class_name
514 514
515 # TODO(jacobr): this isn't quite right.... 515 # TODO(jacobr): this isn't quite right....
516 def _GetParentEventsClassName(self, interface): 516 def _GetParentEventsClassName(self, interface):
517 # Ugly hack as we don't specify that Document and DocumentFragment inherit 517 # Ugly hack as we don't specify that Document and DocumentFragment inherit
518 # from Element in our IDL. 518 # from Element in our IDL.
519 if interface.id == 'Document' or interface.id == 'DocumentFragment': 519 if interface.id == 'Document' or interface.id == 'DocumentFragment':
520 return 'ElementEvents' 520 return 'ElementEvents'
521 521
522 parent_events_class_name = 'Events' 522 parent_events_class_name = 'Events'
523 interfaces_with_events = set() 523 interfaces_with_events = set()
524 for parent in self._database.Hierarchy(interface): 524 for parent in self._database.Hierarchy(interface):
525 if parent != interface and parent.id in self._event_classes: 525 if parent != interface and parent.id in self._event_classes:
526 parent_name = self._renamer.RenameInterface(parent) 526 parent_name = self._renamer.RenameInterface(parent)
527 parent_events_class_name = parent_name + 'Events' 527 parent_events_class_name = parent_name + 'Events'
528 interfaces_with_events.add(parent) 528 interfaces_with_events.add(parent)
529 if len(interfaces_with_events) > 1: 529 if len(interfaces_with_events) > 1:
530 raise Exception('Only one parent event class allowed ' + interface.id) 530 raise Exception('Only one parent event class allowed ' + interface.id)
531 return parent_events_class_name 531 return parent_events_class_name
OLDNEW
« no previous file with comments | « tools/dom/scripts/htmldartgenerator.py ('k') | tools/dom/scripts/systemhtml.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698