• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2006-2008 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 // This provides some helper methods for building and rendering an
6 // internal html page.  The flow is as follows:
7 // - instantiate a builder given a webframe that we're going to render content
8 //   into
9 // - load the template html and load the jstemplate javascript into the frame
10 // - given a json data object, run the jstemplate javascript which fills in
11 //   template values
12 
13 #ifndef CHROME_COMMON_JSTEMPLATE_BUILDER_H_
14 #define CHROME_COMMON_JSTEMPLATE_BUILDER_H_
15 #pragma once
16 
17 #include <string>
18 
19 class DictionaryValue;
20 namespace base {
21 class StringPiece;
22 }
23 
24 namespace jstemplate_builder {
25 
26 // A helper function that generates a string of HTML to be loaded.  The
27 // string includes the HTML and the javascript code necessary to generate the
28 // full page with support for JsTemplates.
29 std::string GetTemplateHtml(const base::StringPiece& html_template,
30                             const DictionaryValue* json,
31                             const base::StringPiece& template_id);
32 
33 // A helper function that generates a string of HTML to be loaded.  The
34 // string includes the HTML and the javascript code necessary to generate the
35 // full page with support for i18n Templates.
36 std::string GetI18nTemplateHtml(const base::StringPiece& html_template,
37                                 const DictionaryValue* json);
38 
39 // A helper function that generates a string of HTML to be loaded.  The
40 // string includes the HTML and the javascript code necessary to generate the
41 // full page with support for both i18n Templates and JsTemplates.
42 std::string GetTemplatesHtml(const base::StringPiece& html_template,
43                              const DictionaryValue* json,
44                              const base::StringPiece& template_id);
45 
46 // The following functions build up the different parts that the above
47 // templates use.
48 
49 // Appends a script tag with a variable name |templateData| that has the JSON
50 // assigned to it.
51 void AppendJsonHtml(const DictionaryValue* json, std::string* output);
52 
53 // Appends the source for JsTemplates in a script tag.
54 void AppendJsTemplateSourceHtml(std::string* output);
55 
56 // Appends the code that processes the JsTemplate with the JSON. You should
57 // call AppendJsTemplateSourceHtml and AppendJsonHtml before calling this.
58 void AppendJsTemplateProcessHtml(const base::StringPiece& template_id,
59                                  std::string* output);
60 
61 // Appends the source for i18n Templates in a script tag.
62 void AppendI18nTemplateSourceHtml(std::string* output);
63 
64 // Appends the code that processes the i18n Template with the JSON. You
65 // should call AppendJsTemplateSourceHtml and AppendJsonHtml before calling
66 // this.
67 void AppendI18nTemplateProcessHtml(std::string* output);
68 
69 }  // namespace jstemplate_builder
70 #endif  // CHROME_COMMON_JSTEMPLATE_BUILDER_H_
71