Index: grit/gather/json_loader.py |
=================================================================== |
--- grit/gather/json_loader.py (revision 0) |
+++ grit/gather/json_loader.py (revision 0) |
@@ -0,0 +1,53 @@ |
+# Copyright (c) 2010 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. |
+ |
+ |
+import types |
+ |
+from grit.gather import interface |
+from grit import util |
+ |
+ |
+class JsonLoader(interface.GathererBase): |
+ '''A simple gatherer that loads and parses a JSON file.''' |
+ |
+ def __init__(self, json_text): |
+ '''Initializes a gatherer object with JSON input. |
+ |
+ Args: |
+ json_text: A string containing a JSON expression. |
+ ''' |
+ super(type(self), self).__init__() |
+ self._json_text = json_text |
+ self._data = None |
+ |
+ def Parse(self): |
+ '''Parses the text of self._json_text into the data structure in |
+ self._data. |
+ ''' |
+ globs = {} |
+ exec('data = ' + self._json_text, globs) |
+ self._data = globs['data'] |
+ |
+ def GetData(self): |
+ '''Returns the parsed JSON data.''' |
+ return self._data |
+ |
+ def FromFile(filename_or_stream, extkey, encoding): |
+ '''Creates a JSONLoader instance from a file or stream. |
+ |
+ Args: |
+ filename_or_stream: The source of JSON data. |
+ extkey: Unused, see interface.py. |
+ encoding: The encoding used in the JSON file. (Note that it should |
+ not contain localized strings.) |
+ |
+ Returns: |
+ The JSONLoader instance holding the JSON data unparsed. |
+ ''' |
+ if isinstance(filename_or_stream, types.StringTypes): |
+ filename_or_stream = \ |
+ util.WrapInputStream(file(filename_or_stream, 'rU'), encoding) |
+ return JsonLoader(filename_or_stream.read()) |
+ FromFile = staticmethod(FromFile) |
Property changes on: grit/gather/json_loader.py |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |