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
())