Index: chrome/common/extensions/docs/server2/features_utility.py |
diff --git a/chrome/common/extensions/docs/server2/features_utility.py b/chrome/common/extensions/docs/server2/features_utility.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8af0b7ba1ce08c7a47caaa910b35de49ef6c0faf |
--- /dev/null |
+++ b/chrome/common/extensions/docs/server2/features_utility.py |
@@ -0,0 +1,47 @@ |
+# Copyright 2013 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. |
+ |
+def ProcessFeaturesFile(features_json): |
+ '''Standardize a features file dictionary by ignoring whitelisted entries, |
+ thus also reducing keys with lists as values into simple dictionaries. |
+ Returns the standardized dictionary. |
+ ''' |
+ master_dict = {} |
+ |
+ for name, value in features_json.iteritems(): |
+ if isinstance(value, list): |
+ temp = None |
+ for subvalue in value: |
+ if not 'whitelist' in subvalue: |
+ temp = subvalue |
+ break |
+ else: |
+ # Ignore this entry in the features file. |
+ continue |
+ value = temp |
+ |
+ if 'whitelist' in value: |
+ continue |
+ master_dict[name] = { 'platform': [] } |
+ |
+ platforms = value.pop('extension_types') |
+ if platforms == 'all' or 'extension' in platforms: |
+ master_dict[name]['platform'].append('extension') |
+ if platforms == 'all' or 'platform_app' in platforms: |
+ master_dict[name]['platform'].append('app') |
+ |
+ master_dict[name]['name'] = name |
+ master_dict[name].update(value) |
+ |
+ return master_dict |
+ |
+def MergeDictionaries(dest, addition): |
+ '''Do an in place dictionary merge and combine sub dictionaries with a |
+ standard merge. |
+ ''' |
+ for key, value in addition.iteritems(): |
+ if key in dest: |
+ dest[key].update(value) |
+ else: |
+ dest[key] = value |
not at google - send to devlin
2013/07/24 21:45:56
I would rather there were all OO. Create an abstra
jshumway
2013/07/26 00:36:46
Did my best to 'OOify' it.
|