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

Unified Diff: Source/core/scripts/make_event_factory.py

Issue 14905002: Use jinja2 templating engine for Python code generators (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/scripts/make_event_factory.py
diff --git a/Source/core/scripts/make_event_factory.py b/Source/core/scripts/make_event_factory.py
index c5a5f0b1e089c85a3274d9afe5d7e69612891dba..e772d192e315214b06ae292b69122b41a8e2dbd5 100644
--- a/Source/core/scripts/make_event_factory.py
+++ b/Source/core/scripts/make_event_factory.py
@@ -34,25 +34,7 @@ import shutil
from in_file import InFile
import in_generator
import license
-
-
-IMPLEMENTATION_TEMPLATE = """%(license)s
-#include "config.h"
-#include "%(namespace)sFactory.h"
-
-#include "%(namespace)sHeaders.h"
-#include "RuntimeEnabledFeatures.h"
-
-namespace WebCore {
-
-PassRefPtr<%(namespace)s> %(namespace)sFactory::create(const String& type)
-{
-%(factory_implementation)s
- return 0;
-}
-
-} // namespace WebCore
-"""
+import template_expander
class EventFactoryWriter(in_generator.Writer):
@@ -66,36 +48,26 @@ class EventFactoryWriter(in_generator.Writer):
}
class_name = 'EventFactory'
+ def __init__(self, in_file_path):
+ super(EventFactoryWriter, self).__init__(in_file_path)
+ self._events = self.in_file.name_dictionaries
+ for event in self._events:
+ event['name'] = os.path.basename(event['name'])
+ event['interfaceName'] = event['interfaceName'] or event['name']
+
def _namespace(self):
return self.in_file.parameters['namespace']
- def _events(self):
- return self.in_file.name_dictionaries
-
- def _factory_implementation(self, event):
- runtime_condition = ''
- if event['runtimeConditional']:
- runtime_condition = ' && RuntimeEnabledFeatures::' + event['runtimeConditional'] + '()'
- name = os.path.basename(event['name'])
- interface_name = event['interfaceName'] if event['interfaceName'] else name
- implementation = """ if (type == "%(name)s"%(runtime_condition)s)
- return %(interface_name)s::create();""" % {
- 'name': name,
- 'runtime_condition': runtime_condition,
- 'interface_name': interface_name,
- }
- return self.wrap_with_condition(implementation, event['conditional'])
-
def generate_header(self):
pass
def generate_implementation(self):
- return IMPLEMENTATION_TEMPLATE % {
+ params = {
'namespace': self._namespace().strip('"'),
'license': license.license_for_generated_cpp(),
- 'factory_implementation': "\n".join(map(self._factory_implementation, self._events())),
+ 'events': self._events,
}
-
+ return template_expander.applytemplate("../dom/EventFactory.cpp.tmpl", params)
abarth-chromium 2013/05/06 18:27:32 Should we receive the path to EventFactory.cpp.tmp
if __name__ == "__main__":
in_generator.Maker(EventFactoryWriter).main(sys.argv)

Powered by Google App Engine
This is Rietveld 408576698