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.
8 from compiled_file_system import SingleFile
9 from extensions_paths import PUBLIC_TEMPLATES
12 class APICategorizer(object):
13 ''' This class gets api category from documented apis.
16 def __init__(self, file_system, compiled_fs_factory, platform):
17 self._file_system = file_system
18 self._cache = compiled_fs_factory.Create(file_system,
19 self._CollectDocumentedAPIs,
21 self._platform = platform
23 def _GenerateAPICategories(self):
24 return self._cache.GetFromFileListing(
25 posixpath.join(PUBLIC_TEMPLATES, self._platform) + '/').Get()
28 def _CollectDocumentedAPIs(self, base_dir, files):
30 for root, _, files in self._file_system.Walk(base_dir):
31 public_templates.extend(posixpath.join(root, name) for name in files)
32 template_names = set(os.path.splitext(name)[0].replace('_', '.')
33 for name in public_templates)
36 def GetCategory(self, api_name):
37 '''Return the type of api.'Chrome' means the public apis,
38 private means the api only used by chrome, and experimental means
39 the apis with "experimental" prefix.
41 documented_apis = self._GenerateAPICategories()
42 if (api_name.endswith('Private') or
43 api_name not in documented_apis):
45 if api_name.startswith('experimental.'):
49 def IsDocumented(self, api_name):
50 return (api_name in self._GenerateAPICategories())