195640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org#!/usr/bin/env python
295640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org# Copyright (c) 2012 The Chromium Authors. All rights reserved.
301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org# Use of this source code is governed by a BSD-style license that can be
401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org# found in the LICENSE file.
501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgfrom grit.gather import interface
801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
1001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass JsonLoader(interface.GathererBase):
1101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''A simple gatherer that loads and parses a JSON file.'''
1201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
1301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  def Parse(self):
14ec8016c73b3b945b6284746230913d88653f35e7benrg@chromium.org    '''Reads and parses the text of self._json_text into the data structure in
1501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    self._data.
1601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    '''
17b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.org    self._json_text = self._LoadInputFile()
18ec8016c73b3b945b6284746230913d88653f35e7benrg@chromium.org    self._data = None
19ec8016c73b3b945b6284746230913d88653f35e7benrg@chromium.org
2001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    globs = {}
2101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    exec('data = ' + self._json_text, globs)
2201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    self._data = globs['data']
2301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  def GetData(self):
2501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    '''Returns the parsed JSON data.'''
2601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    return self._data
27