| Index: grit/format/policy_templates/writers/doc_writer.py
|
| ===================================================================
|
| --- grit/format/policy_templates/writers/doc_writer.py (revision 158)
|
| +++ grit/format/policy_templates/writers/doc_writer.py (working copy)
|
| @@ -234,41 +234,32 @@
|
| if self.IsPolicySupportedOnPlatform(policy, 'mac'):
|
| self._AddListExampleMac(examples, policy)
|
|
|
| - def _PythonDictionaryToMacDictionary(self, dictionary, indent=''):
|
| - '''Converts a python dictionary to an equivalent XML plist.
|
| + def _PythonObjectToPlist(self, obj, indent=''):
|
| + '''Converts a python object to an equivalent XML plist.
|
|
|
| - Returns a list of lines, with one dictionary entry per line.'''
|
| - result = [indent + '<dict>']
|
| - indent += ' '
|
| - for k in sorted(dictionary.keys()):
|
| - v = dictionary[k]
|
| - result.append('%s<key>%s</key>' % (indent, k))
|
| - value_type = type(v)
|
| - if value_type == bool:
|
| - result.append('%s<%s/>' % (indent, 'true' if v else 'false'))
|
| - elif value_type == int:
|
| - result.append('%s<integer>%s</integer>' % (indent, v))
|
| - elif value_type == str:
|
| - result.append('%s<string>%s</string>' % (indent, v))
|
| - elif value_type == dict:
|
| - result += self._PythonDictionaryToMacDictionary(v, indent)
|
| - elif value_type == list:
|
| - array = []
|
| - if len(v) != 0:
|
| - if type(v[0]) == str:
|
| - array = ['%s <string>%s</string>' % (indent, x) for x in v]
|
| - elif type(v[0]) == dict:
|
| - for x in v:
|
| - array += self._PythonDictionaryToMacDictionary(x, indent + ' ')
|
| - else:
|
| - raise Exception('Must be list of string or dict.')
|
| - result.append('%s<array>' % indent)
|
| - result += array
|
| - result.append('%s</array>' % indent)
|
| - else:
|
| - raise Exception('Invalid example value type %s' % value_type)
|
| - result.append(indent[2:] + '</dict>')
|
| - return result
|
| + Returns a list of lines.'''
|
| + obj_type = type(obj)
|
| + if obj_type == bool:
|
| + return [ '%s<%s/>' % (indent, 'true' if obj else 'false') ]
|
| + elif obj_type == int:
|
| + return [ '%s<integer>%s</integer>' % (indent, obj) ]
|
| + elif obj_type == str:
|
| + return [ '%s<string>%s</string>' % (indent, obj) ]
|
| + elif obj_type == list:
|
| + result = [ '%s<array>' % indent ]
|
| + for item in obj:
|
| + result += self._PythonObjectToPlist(item, indent + ' ')
|
| + result.append('%s</array>' % indent)
|
| + return result
|
| + elif obj_type == dict:
|
| + result = [ '%s<dict>' % indent ]
|
| + for key in sorted(obj.keys()):
|
| + result.append('%s<key>%s</key>' % (indent + ' ', key))
|
| + result += self._PythonObjectToPlist(obj[key], indent + ' ')
|
| + result.append('%s</dict>' % indent)
|
| + return result
|
| + else:
|
| + raise Exception('Invalid object to convert: %s' % obj)
|
|
|
| def _AddDictionaryExampleMac(self, parent, policy):
|
| '''Adds an example value for Mac of a 'dict' policy to a DOM node.
|
| @@ -282,7 +273,7 @@
|
| self.AddElement(parent, 'dt', {}, 'Mac:')
|
| mac = self._AddStyledElement(parent, 'dd', ['.monospace', '.pre'])
|
| mac_text = ['<key>%s</key>' % (policy['name'])]
|
| - mac_text += self._PythonDictionaryToMacDictionary(example_value)
|
| + mac_text += self._PythonObjectToPlist(example_value)
|
| self.AddText(mac, '\n'.join(mac_text))
|
|
|
| def _AddDictionaryExampleWindows(self, parent, policy):
|
|
|