Index: chrome/common/extensions/docs/server2/template_renderer.py |
diff --git a/chrome/common/extensions/docs/server2/template_renderer.py b/chrome/common/extensions/docs/server2/template_renderer.py |
index ab578db7b827bf1eaecc7a9e95c3a295441f0917..3a0a95787ff09553bb30217544090bf6abfb4a1c 100644 |
--- a/chrome/common/extensions/docs/server2/template_renderer.py |
+++ b/chrome/common/extensions/docs/server2/template_renderer.py |
@@ -16,23 +16,33 @@ class TemplateRenderer(object): |
def __init__(self, server_instance): |
self._server_instance = server_instance |
- def Render(self, template, request): |
+ def Render(self, template, request, data_sources=None, warn=True): |
+ '''Renders |template| using |request|. Specify |data_sources| to only |
+ include the DataSources with the given names when rendering the template. |
Yoyo Zhou
2013/11/17 22:12:47
nit: document warn
not at google - send to devlin
2013/11/18 18:05:36
Done.
|
+ ''' |
assert isinstance(template, Handlebar), type(template) |
- server_instance = self._server_instance |
- render_context = { |
- 'api_list': server_instance.api_list_data_source_factory.Create(), |
- 'apis': server_instance.api_data_source_factory.Create(request), |
+ render_context = self._CreateDataSources(request) |
+ if data_sources is not None: |
+ render_context = dict((name, d) for name, d in render_context.iteritems() |
+ if name in data_sources) |
+ render_context.update({ |
'apps_samples_url': GITHUB_BASE, |
- 'base_path': server_instance.base_path, |
+ 'base_path': self._server_instance.base_path, |
'extensions_samples_url': EXTENSIONS_SAMPLES, |
- 'false': False, |
- 'samples': server_instance.samples_data_source_factory.Create(request), |
- 'static': server_instance.base_path + 'static', |
- 'true': True, |
- } |
- render_context.update(CreateDataSources(server_instance, request=request)) |
- render_data = template.render(render_context) |
- if render_data.errors: |
+ 'static': self._server_instance.base_path + 'static', |
+ }) |
+ render_data = template.Render(render_context) |
+ if warn and render_data.errors: |
logging.error('Handlebar error(s) rendering %s:\n%s' % |
(template._name, ' \n'.join(render_data.errors))) |
return render_data.text |
+ |
+ def _CreateDataSources(self, request): |
+ server_instance = self._server_instance |
+ data_sources = CreateDataSources(server_instance, request=request) |
+ data_sources.update({ |
+ 'api_list': server_instance.api_list_data_source_factory.Create(), |
+ 'apis': server_instance.api_data_source_factory.Create(request), |
+ 'samples': server_instance.samples_data_source_factory.Create(request), |
+ }) |
+ return data_sources |