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

Side by Side Diff: grit/format/policy_templates/template_formatter.py

Issue 1442863002: Remove contents of grit's SVN repository. (Closed) Base URL: http://grit-i18n.googlecode.com/svn/trunk/
Patch Set: Created 5 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6
7 import sys
8 from functools import partial
9
10 from grit.format.policy_templates import policy_template_generator
11 from grit.format.policy_templates import writer_configuration
12 from grit.node import misc
13 from grit.node import structure
14
15
16 def GetFormatter(type):
17 return partial(_TemplateFormatter,
18 'grit.format.policy_templates.writers.%s_writer' % type)
19
20
21 def _TemplateFormatter(writer_module_name, root, lang, output_dir):
22 '''Creates a template file corresponding to an <output> node of the grit
23 tree.
24
25 More precisely, processes the whole grit tree for a given <output> node whose
26 type is one of adm, plist, plist_strings, admx, adml, doc, json, reg.
27 The result of processing is a policy template file with the given type and
28 language of the <output> node. This function does the interfacing with
29 grit, but the actual template-generating work is done in
30 policy_template_generator.PolicyTemplateGenerator.
31
32 Args:
33 writer_name: A string identifying the TemplateWriter subclass used
34 for generating the output.
35 root: the <grit> root node of the grit tree.
36 lang: the language of outputted text, e.g.: 'en'
37 output_dir: The output directory, currently unused here.
38
39 Yields the text of the template file.
40 '''
41 __import__(writer_module_name)
42 writer_module = sys.modules[writer_module_name]
43 config = writer_configuration.GetConfigurationForBuild(root.defines)
44 policy_data = _ParseGritNodes(root, lang)
45 policy_generator = \
46 policy_template_generator.PolicyTemplateGenerator(config, policy_data)
47 writer = writer_module.GetWriter(config)
48 yield policy_generator.GetTemplateText(writer)
49
50
51 def _ParseGritNodes(root, lang):
52 '''Collects the necessary information from the grit tree:
53 the message strings and the policy definitions.
54
55 Args:
56 root: The root of the grit tree.
57 lang: the language of outputted text, e.g.: 'en'
58
59 Returns:
60 Policy data.
61 '''
62 policy_data = None
63 for item in root.ActiveDescendants():
64 with item:
65 if (isinstance(item, structure.StructureNode) and
66 item.attrs['type'] == 'policy_template_metafile'):
67 assert policy_data is None
68 json_text = item.gatherer.Translate(
69 lang,
70 pseudo_if_not_available=item.PseudoIsAllowed(),
71 fallback_to_english=item.ShouldFallbackToEnglish())
72 policy_data = eval(json_text)
73 return policy_data
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698