Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import copy | 5 import copy |
| 6 import json | |
| 7 import os | 6 import os |
| 8 | 7 |
| 9 from docs_server_utils import GetLinkToRefType | 8 from docs_server_utils import GetLinkToRefType |
| 10 import compiled_file_system as compiled_fs | 9 import compiled_file_system as compiled_fs |
| 11 from file_system import FileNotFoundError | 10 from file_system import FileNotFoundError |
| 12 import third_party.json_schema_compiler.json_comment_eater as json_comment_eater | 11 import third_party.json_schema_compiler.json_parse as json_parse |
| 13 import third_party.json_schema_compiler.model as model | 12 import third_party.json_schema_compiler.model as model |
| 14 import third_party.json_schema_compiler.idl_schema as idl_schema | 13 import third_party.json_schema_compiler.idl_schema as idl_schema |
| 15 import third_party.json_schema_compiler.idl_parser as idl_parser | 14 import third_party.json_schema_compiler.idl_parser as idl_parser |
| 16 | 15 |
| 17 # Increment this version when there are changes to the data stored in any of | 16 # Increment this version when there are changes to the data stored in any of |
| 18 # the caches used by APIDataSource. This allows the cache to be invalidated | 17 # the caches used by APIDataSource. This allows the cache to be invalidated |
| 19 # without having to flush memcache on the production server. | 18 # without having to flush memcache on the production server. |
| 20 _VERSION = 2 | 19 _VERSION = 3 |
| 21 | 20 |
| 22 def _RemoveNoDocs(item): | 21 def _RemoveNoDocs(item): |
| 23 if type(item) == dict: | 22 if isinstance(item, (dict, json_parse.OrderedDict)): |
| 24 if item.get('nodoc', False): | 23 if item.get('nodoc', False): |
|
not at google - send to devlin
2012/11/16 18:45:56
might be cleaner exposing like json_parse.IsDict(.
cduvall
2012/11/17 01:55:12
Done.
| |
| 25 return True | 24 return True |
| 26 to_remove = [] | 25 to_remove = [] |
| 27 for key, value in item.items(): | 26 for key, value in item.items(): |
| 28 if _RemoveNoDocs(value): | 27 if _RemoveNoDocs(value): |
| 29 to_remove.append(key) | 28 to_remove.append(key) |
| 30 for k in to_remove: | 29 for k in to_remove: |
| 31 del item[k] | 30 del item[k] |
| 32 elif type(item) == list: | 31 elif type(item) == list: |
| 33 to_remove = [] | 32 to_remove = [] |
| 34 for i in item: | 33 for i in item: |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 267 | 266 |
| 268 def Create(self, request): | 267 def Create(self, request): |
| 269 return APIDataSource(self._permissions_cache, | 268 return APIDataSource(self._permissions_cache, |
| 270 self._json_cache, | 269 self._json_cache, |
| 271 self._idl_cache, | 270 self._idl_cache, |
| 272 self._idl_names_cache, | 271 self._idl_names_cache, |
| 273 self._base_path, | 272 self._base_path, |
| 274 self._samples_factory.Create(request)) | 273 self._samples_factory.Create(request)) |
| 275 | 274 |
| 276 def _LoadPermissions(self, json_str): | 275 def _LoadPermissions(self, json_str): |
| 277 return json.loads(json_comment_eater.Nom(json_str)) | 276 return json_parse.Parse(json_str) |
| 278 | 277 |
| 279 def _LoadJsonAPI(self, api): | 278 def _LoadJsonAPI(self, api): |
| 280 return _JscModel(json.loads(json_comment_eater.Nom(api))[0]) | 279 return _JscModel(json_parse.Parse(api)[0]) |
| 281 | 280 |
| 282 def _LoadIdlAPI(self, api): | 281 def _LoadIdlAPI(self, api): |
| 283 idl = idl_parser.IDLParser().ParseData(api) | 282 idl = idl_parser.IDLParser().ParseData(api) |
| 284 return _JscModel(idl_schema.IDLSchema(idl).process()[0]) | 283 return _JscModel(idl_schema.IDLSchema(idl).process()[0]) |
| 285 | 284 |
| 286 def _GetIDLNames(self, apis): | 285 def _GetIDLNames(self, apis): |
| 287 return [model.UnixName(os.path.splitext(api.split('/')[-1])[0]) | 286 return [model.UnixName(os.path.splitext(api.split('/')[-1])[0]) |
| 288 for api in apis if api.endswith('.idl')] | 287 for api in apis if api.endswith('.idl')] |
| 289 | 288 |
| 290 def __init__(self, | 289 def __init__(self, |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 315 path = model.UnixName(path.replace('experimental_', '')) | 314 path = model.UnixName(path.replace('experimental_', '')) |
| 316 for filename in ['_permission_features.json', '_manifest_features.json']: | 315 for filename in ['_permission_features.json', '_manifest_features.json']: |
| 317 api_perms = self._GetPermsFromFile(filename).get(path, None) | 316 api_perms = self._GetPermsFromFile(filename).get(path, None) |
| 318 if api_perms is not None: | 317 if api_perms is not None: |
| 319 break | 318 break |
| 320 if api_perms and api_perms['channel'] in ('trunk', 'dev', 'beta'): | 319 if api_perms and api_perms['channel'] in ('trunk', 'dev', 'beta'): |
| 321 api_perms[api_perms['channel']] = True | 320 api_perms[api_perms['channel']] = True |
| 322 return api_perms | 321 return api_perms |
| 323 | 322 |
| 324 def _GenerateHandlebarContext(self, handlebar, path): | 323 def _GenerateHandlebarContext(self, handlebar, path): |
| 325 return_dict = { | 324 return_dict = handlebar.ToDict() |
| 326 'permissions': self._GetFeature(path), | 325 return_dict['permissions'] = self._GetFeature(path) |
| 327 'samples': _LazySamplesGetter(path, self._samples) | 326 return_dict['samples'] = _LazySamplesGetter(path, self._samples) |
| 328 } | |
| 329 return_dict.update(handlebar.ToDict()) | |
| 330 return return_dict | 327 return return_dict |
| 331 | 328 |
| 332 def __getitem__(self, key): | 329 def __getitem__(self, key): |
| 333 return self.get(key) | 330 return self.get(key) |
| 334 | 331 |
| 335 def get(self, key): | 332 def get(self, key): |
| 336 path, ext = os.path.splitext(key) | 333 path, ext = os.path.splitext(key) |
| 337 unix_name = model.UnixName(path) | 334 unix_name = model.UnixName(path) |
| 338 idl_names = self._idl_names_cache.GetFromFileListing(self._base_path) | 335 idl_names = self._idl_names_cache.GetFromFileListing(self._base_path) |
| 339 cache, ext = ((self._idl_cache, '.idl') if (unix_name in idl_names) else | 336 cache, ext = ((self._idl_cache, '.idl') if (unix_name in idl_names) else |
| 340 (self._json_cache, '.json')) | 337 (self._json_cache, '.json')) |
| 341 return self._GenerateHandlebarContext( | 338 return self._GenerateHandlebarContext( |
| 342 cache.GetFromFile('%s/%s%s' % (self._base_path, unix_name, ext)), | 339 cache.GetFromFile('%s/%s%s' % (self._base_path, unix_name, ext)), |
| 343 path) | 340 path) |
| OLD | NEW |