1# Copyright 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import logging
6
7from extensions_paths import JSON_TEMPLATES
8from data_source import DataSource
9
10
11class StringsDataSource(DataSource):
12  '''Provides templates with access to a key to string mapping defined in a
13  JSON configuration file.
14  '''
15  def __init__(self, server_instance, _):
16    self._cache = server_instance.compiled_fs_factory.ForJson(
17        server_instance.host_file_system_provider.GetMaster())
18
19  def _GetStringsData(self):
20    return self._cache.GetFromFile('%sstrings.json' % JSON_TEMPLATES)
21
22  def Refresh(self, path):
23    return self._GetStringsData()
24
25  def get(self, key):
26    string = self._GetStringsData().Get().get(key)
27    if string is None:
28      logging.warning('String "%s" not found' % key)
29    return string
30