Chromium Code Reviews| 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 |