- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / docs / server2 / template_renderer.py
1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import logging
6
7 from data_source_registry import CreateDataSources
8 from third_party.handlebar import Handlebar
9 from url_constants import GITHUB_BASE, EXTENSIONS_SAMPLES
10
11
12 class TemplateRenderer(object):
13   '''Renders templates with the server's available data sources.
14   '''
15
16   def __init__(self, server_instance):
17     self._server_instance = server_instance
18
19   def Render(self, template, request):
20     assert isinstance(template, Handlebar), type(template)
21     server_instance = self._server_instance
22     render_context = {
23       'api_list': server_instance.api_list_data_source_factory.Create(),
24       'apis': server_instance.api_data_source_factory.Create(request),
25       'apps_samples_url': GITHUB_BASE,
26       'base_path': server_instance.base_path,
27       'extensions_samples_url': EXTENSIONS_SAMPLES,
28       'false': False,
29       'intros': server_instance.intro_data_source_factory.Create(),
30       'samples': server_instance.samples_data_source_factory.Create(request),
31       'static': server_instance.base_path + 'static',
32       'true': True,
33     }
34     render_context.update(CreateDataSources(server_instance, request=request))
35     render_data = template.render(render_context)
36     if render_data.errors:
37       logging.error('Handlebar error(s) rendering %s:\n%s' %
38           (template._name, '  \n'.join(render_data.errors)))
39     return render_data.text