Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(139)

Side by Side Diff: chrome/common/extensions/docs/server2/jsc_view.py

Issue 438963003: Docserver: Add annotation to intro_tables.json to restrict content by platform (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 from copy import copy 5 from copy import copy
6 import logging 6 import logging
7 import posixpath 7 import posixpath
8 8
9 from api_models import GetNodeCategories 9 from api_models import GetNodeCategories
10 from api_schema_graph import APINodeCursor 10 from api_schema_graph import APINodeCursor
11 from docs_server_utils import MarkFirstAndLast 11 from docs_server_utils import MarkFirstAndLast
12 from extensions_paths import JSON_TEMPLATES, PRIVATE_TEMPLATES 12 from extensions_paths import JSON_TEMPLATES, PRIVATE_TEMPLATES
13 from operator import itemgetter 13 from operator import itemgetter
14 from platform_util import PlatformToExtensionType
14 import third_party.json_schema_compiler.model as model 15 import third_party.json_schema_compiler.model as model
15 16
16 17
17 def GetEventByNameFromEvents(events): 18 def GetEventByNameFromEvents(events):
18 '''Parses the dictionary |events| to find the definitions of members of the 19 '''Parses the dictionary |events| to find the definitions of members of the
19 type Event. Returns a dictionary mapping the name of a member to that 20 type Event. Returns a dictionary mapping the name of a member to that
20 member's definition. 21 member's definition.
21 ''' 22 '''
22 assert 'types' in events, \ 23 assert 'types' in events, \
23 'The dictionary |events| must contain the key "types".' 24 'The dictionary |events| must contain the key "types".'
(...skipping 28 matching lines...) Expand all
52 return '-'.join([prefix, node.simple_name]) 53 return '-'.join([prefix, node.simple_name])
53 54
54 55
55 def _FormatValue(value): 56 def _FormatValue(value):
56 '''Inserts commas every three digits for integer values. It is magic. 57 '''Inserts commas every three digits for integer values. It is magic.
57 ''' 58 '''
58 s = str(value) 59 s = str(value)
59 return ','.join([s[max(0, i - 3):i] for i in range(len(s), 0, -3)][::-1]) 60 return ','.join([s[max(0, i - 3):i] for i in range(len(s), 0, -3)][::-1])
60 61
61 62
62
63
64 class JSCView(object): 63 class JSCView(object):
65 '''Uses a Model from the JSON Schema Compiler and generates a dict that 64 '''Uses a Model from the JSON Schema Compiler and generates a dict that
66 a Handlebar template can use for a data source. 65 a Handlebar template can use for a data source.
67 ''' 66 '''
68 67
69 def __init__(self, 68 def __init__(self,
70 content_script_apis, 69 content_script_apis,
71 jsc_model, 70 jsc_model,
72 availability_finder, 71 availability_finder,
73 json_cache, 72 json_cache,
74 template_cache, 73 template_cache,
75 features_bundle, 74 features_bundle,
76 event_byname_future): 75 event_byname_future,
76 platform):
77 self._content_script_apis = content_script_apis 77 self._content_script_apis = content_script_apis
78 self._availability = availability_finder.GetAPIAvailability(jsc_model.name) 78 self._availability = availability_finder.GetAPIAvailability(jsc_model.name)
79 self._current_node = APINodeCursor(availability_finder, jsc_model.name) 79 self._current_node = APINodeCursor(availability_finder, jsc_model.name)
80 self._api_availabilities = json_cache.GetFromFile( 80 self._api_availabilities = json_cache.GetFromFile(
81 posixpath.join(JSON_TEMPLATES, 'api_availabilities.json')) 81 posixpath.join(JSON_TEMPLATES, 'api_availabilities.json'))
82 self._intro_tables = json_cache.GetFromFile( 82 self._intro_tables = json_cache.GetFromFile(
83 posixpath.join(JSON_TEMPLATES, 'intro_tables.json')) 83 posixpath.join(JSON_TEMPLATES, 'intro_tables.json'))
84 self._api_features = features_bundle.GetAPIFeatures() 84 self._api_features = features_bundle.GetAPIFeatures()
85 self._template_cache = template_cache 85 self._template_cache = template_cache
86 self._event_byname_future = event_byname_future 86 self._event_byname_future = event_byname_future
87 self._jsc_model = jsc_model 87 self._jsc_model = jsc_model
88 self._platform = platform
88 89
89 def _GetLink(self, link): 90 def _GetLink(self, link):
90 ref = link if '.' in link else (self._jsc_model.name + '.' + link) 91 ref = link if '.' in link else (self._jsc_model.name + '.' + link)
91 return { 'ref': ref, 'text': link, 'name': link } 92 return { 'ref': ref, 'text': link, 'name': link }
92 93
93 def ToDict(self): 94 def ToDict(self):
94 '''Returns a dictionary representation of |self._jsc_model|, which 95 '''Returns a dictionary representation of |self._jsc_model|, which
95 is a Namespace object from JSON Schema Compiler. 96 is a Namespace object from JSON Schema Compiler.
96 ''' 97 '''
97 assert self._jsc_model is not None 98 assert self._jsc_model is not None
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 # Look up the API name in intro_tables.json, which is structured 538 # Look up the API name in intro_tables.json, which is structured
538 # similarly to the data structure being created. If the name is found, loop 539 # similarly to the data structure being created. If the name is found, loop
539 # through the attributes and add them to this structure. 540 # through the attributes and add them to this structure.
540 table_info = self._intro_tables.Get().get(self._jsc_model.name) 541 table_info = self._intro_tables.Get().get(self._jsc_model.name)
541 if table_info is None: 542 if table_info is None:
542 return misc_rows 543 return misc_rows
543 544
544 for category in table_info.iterkeys(): 545 for category in table_info.iterkeys():
545 content = [] 546 content = []
546 for node in table_info[category]: 547 for node in table_info[category]:
548 ext_type = PlatformToExtensionType(self._platform)
549 # Don't display nodes restricted to a different platform.
550 if ext_type not in node.get('extension_types', [ext_type]):
not at google - send to devlin 2014/08/01 19:59:53 nit: use (ext_type,) not [ext_type]
551 continue
547 # If there is a 'partial' argument and it hasn't already been 552 # If there is a 'partial' argument and it hasn't already been
548 # converted to a Handlebar object, transform it to a template. 553 # converted to a Handlebar object, transform it to a template.
549 if 'partial' in node: 554 if 'partial' in node:
550 # Note: it's enough to copy() not deepcopy() because only a single 555 # Note: it's enough to copy() not deepcopy() because only a single
551 # top-level key is being modified. 556 # top-level key is being modified.
552 node = copy(node) 557 node = copy(node)
553 node['partial'] = self._template_cache.GetFromFile( 558 node['partial'] = self._template_cache.GetFromFile(
554 posixpath.join(PRIVATE_TEMPLATES, node['partial'])).Get() 559 posixpath.join(PRIVATE_TEMPLATES, node['partial'])).Get()
555 content.append(node) 560 content.append(node)
556 misc_rows.append({ 'title': category, 'content': content }) 561 misc_rows.append({ 'title': category, 'content': content })
557 return misc_rows 562 return misc_rows
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/cron.yaml ('k') | chrome/common/extensions/docs/server2/jsc_view_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698