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

Unified Diff: grit/format/policy_templates/writers/reg_writer.py

Issue 7994004: Initial source commit to grit-i18n project. (Closed) Base URL: http://grit-i18n.googlecode.com/svn/trunk/
Patch Set: Created 9 years, 3 months 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 side-by-side diff with in-line comments
Download patch
Index: grit/format/policy_templates/writers/reg_writer.py
===================================================================
--- grit/format/policy_templates/writers/reg_writer.py (revision 0)
+++ grit/format/policy_templates/writers/reg_writer.py (revision 0)
@@ -0,0 +1,92 @@
+# Copyright (c) 2011 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+from xml.dom import minidom
+from grit.format.policy_templates.writers import template_writer
+
+
+def GetWriter(config):
+ '''Factory method for creating RegWriter objects.
+ See the constructor of TemplateWriter for description of
+ arguments.
+ '''
+ return RegWriter(['win'], config)
+
+
+class RegWriter(template_writer.TemplateWriter):
+ '''Class for generating policy example files in .reg format (for Windows).
+ The generated files will define all the supported policies with example
+ values set for them. This class is used by PolicyTemplateGenerator to
+ write .reg files.
+ '''
+
+ NEWLINE = '\r\n'
+
+ def _EscapeRegString(self, string):
+ return string.replace('\\', '\\\\').replace('\"', '\\\"')
+
+ def _StartBlock(self, suffix):
+ key = 'HKEY_LOCAL_MACHINE\\' + self.config['win_reg_key_name']
+ if suffix:
+ key = key + '\\' + suffix
+ if key != self._last_key:
+ self._out.append('')
+ self._out.append('[%s]' % key)
+ self._last_key = key
+
+ def PreprocessPolicies(self, policy_list):
+ return self.FlattenGroupsAndSortPolicies(policy_list,
+ self.GetPolicySortingKey)
+
+ def GetPolicySortingKey(self, policy):
+ '''Extracts a sorting key from a policy. These keys can be used for
+ list.sort() methods to sort policies.
+ See TemplateWriter.SortPoliciesGroupsFirst for usage.
+ '''
+ is_list = policy['type'] == 'list'
+ # Lists come after regular policies.
+ return (is_list, policy['name'])
+
+ def WritePolicy(self, policy):
+ example_value = policy['example_value']
+
+ if policy['type'] == 'list':
+ self._StartBlock(policy['name'])
+ i = 1
+ for item in example_value:
+ escaped_str = self._EscapeRegString(item)
+ self._out.append('"%d"="%s"' % (i, escaped_str))
+ i = i + 1
+ else:
+ self._StartBlock(None)
+ if policy['type'] == 'string':
+ escaped_str = self._EscapeRegString(example_value)
+ example_value_str = '"' + escaped_str + '"'
+ elif policy['type'] == 'main':
+ if example_value == True:
+ example_value_str = 'dword:00000001'
+ else:
+ example_value_str = 'dword:00000000'
+ elif policy['type'] in ('int', 'int-enum'):
+ example_value_str = 'dword:%08x' % example_value
+ elif policy['type'] == 'string-enum':
+ example_value_str = '"%s"' % example_value
+ else:
+ raise Exception('unknown policy type %s:' % policy['type'])
+
+ self._out.append('"%s"=%s' % (policy['name'], example_value_str))
+
+ def BeginTemplate(self):
+ pass
+
+ def EndTemplate(self):
+ pass
+
+ def Init(self):
+ self._out = ['Windows Registry Editor Version 5.00']
+ self._last_key = None
+
+ def GetTemplateText(self):
+ return self.NEWLINE.join(self._out)
Property changes on: grit/format/policy_templates/writers/reg_writer.py
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698