OLD | NEW |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 # Example run from the server2/ directory: | 6 # Example run from the server2/ directory: |
7 # $ converter.py ../static/ ../../api templates/articles/ templates/intros/ | 7 # $ converter.py ../static/ ../../api templates/articles/ templates/intros/ |
8 # templates/public/ static/images/ -r | 8 # templates/public/ static/images/ -r |
9 | 9 |
10 import json | 10 import json |
(...skipping 12 matching lines...) Expand all Loading... | |
23 from docs_server_utils import SanitizeAPIName | 23 from docs_server_utils import SanitizeAPIName |
24 | 24 |
25 IGNORED_FILES = [ | 25 IGNORED_FILES = [ |
26 # These are custom files. | 26 # These are custom files. |
27 '404', | 27 '404', |
28 'apps_api_index', | 28 'apps_api_index', |
29 'api_index', | 29 'api_index', |
30 'experimental', | 30 'experimental', |
31 'samples', | 31 'samples', |
32 'index', | 32 'index', |
33 # These are APIs that should not have docs. | 33 'devtools', # Has an intro, but marked as nodoc. |
not at google - send to devlin
2012/08/09 05:11:36
You moved this to articles right? So this shouldn'
cduvall
2012/08/09 17:54:05
This is still needed because devtools.json is in t
not at google - send to devlin
2012/08/10 04:48:21
Sorry my mistake, got this confused with the integ
| |
34 'test', | |
35 'experimental_idltest', | |
36 ] | 34 ] |
37 | 35 |
38 # These are mappings for APIs that have no intros. They are needed because the | 36 # These are mappings for APIs that have no intros. They are needed because the |
39 # names of the JSON files do not give enough information on the actual API name. | 37 # names of the JSON files do not give enough information on the actual API name. |
40 CUSTOM_MAPPINGS = { | 38 CUSTOM_MAPPINGS = { |
41 'experimental_input_virtual_keyboard': 'experimental_input_virtualKeyboard', | 39 'experimental_input_virtual_keyboard': 'experimental_input_virtualKeyboard', |
42 'input_ime': 'input_ime' | 40 'input_ime': 'input_ime' |
43 } | 41 } |
44 | 42 |
45 # These are the extension-only APIs that don't have explicit entries in | 43 # These are the extension-only APIs that don't have explicit entries in |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
179 contents = contents.strip() | 177 contents = contents.strip() |
180 contents = HandleDocFamily(contents) | 178 contents = HandleDocFamily(contents) |
181 | 179 |
182 # Attempt to guess if the page has no title. | 180 # Attempt to guess if the page has no title. |
183 if '<h1' not in contents and not is_api: | 181 if '<h1' not in contents and not is_api: |
184 title = _UnixName(name) | 182 title = _UnixName(name) |
185 title = ' '.join([part[0].upper() + part[1:] for part in title.split('_')]) | 183 title = ' '.join([part[0].upper() + part[1:] for part in title.split('_')]) |
186 contents = ('<h1 class="page_title">%s</h1>' % title) + contents | 184 contents = ('<h1 class="page_title">%s</h1>' % title) + contents |
187 return contents | 185 return contents |
188 | 186 |
187 def _GetNoDocs(api_dir, api_files): | |
188 exclude = [] | |
189 for api in api_files: | |
190 try: | |
191 with open(os.path.join(api_dir, api), 'r') as f: | |
192 if os.path.splitext(api)[-1] == '.idl': | |
193 if '[nodoc] namespace' in f.read(): | |
194 exclude.append(_UnixName(api)) | |
195 else: | |
196 api_json = json.loads(json_comment_eater.Nom(f.read())) | |
197 if api_json[0].get('nodoc', False): | |
198 exclude.append(_UnixName(api)) | |
199 except Exception: | |
200 pass | |
201 return exclude | |
202 | |
189 def _ProcessName(name): | 203 def _ProcessName(name): |
190 processed_name = [] | 204 processed_name = [] |
191 if name.startswith('experimental_'): | 205 if name.startswith('experimental_'): |
192 name = name[len('experimental_'):] | 206 name = name[len('experimental_'):] |
193 processed_name.append('experimental_') | 207 processed_name.append('experimental_') |
194 parts = name.split('_') | 208 parts = name.split('_') |
195 processed_name.append(parts[0]) | 209 processed_name.append(parts[0]) |
196 processed_name.extend([p[0].upper() + p[1:] for p in parts[1:]]) | 210 processed_name.extend([p[0].upper() + p[1:] for p in parts[1:]]) |
197 return ''.join(processed_name) | 211 return ''.join(processed_name) |
198 | 212 |
(...skipping 10 matching lines...) Expand all Loading... | |
209 exclude_files = [] | 223 exclude_files = [] |
210 else: | 224 else: |
211 exclude_files = [_UnixName(f) for f in os.listdir(exclude_dir)] | 225 exclude_files = [_UnixName(f) for f in os.listdir(exclude_dir)] |
212 exclude_files.extend(IGNORED_FILES) | 226 exclude_files.extend(IGNORED_FILES) |
213 api_files = _ListAllAPIs(api_dir) | 227 api_files = _ListAllAPIs(api_dir) |
214 original_files = [] | 228 original_files = [] |
215 for path, dirs, files in os.walk(template_dest): | 229 for path, dirs, files in os.walk(template_dest): |
216 original_files.extend(files) | 230 original_files.extend(files) |
217 if replace: | 231 if replace: |
218 _CleanAPIs(source_dir, api_dir, intros_dest, template_dest, exclude_files) | 232 _CleanAPIs(source_dir, api_dir, intros_dest, template_dest, exclude_files) |
233 exclude_files.extend(_GetNoDocs(api_dir, api_files)) | |
219 files = set(os.listdir(source_dir)) | 234 files = set(os.listdir(source_dir)) |
220 unix_files = [_UnixName(f) for f in files] | 235 unix_files = [_UnixName(f) for f in files] |
221 for name in [SanitizeAPIName(f) for f in _ListAllAPIs(api_dir)]: | 236 for name in [SanitizeAPIName(f) for f in _ListAllAPIs(api_dir)]: |
222 if _UnixName(name) not in unix_files: | 237 if _UnixName(name) not in unix_files: |
223 files.add(name + '.html') | 238 files.add(name + '.html') |
224 for file_ in files: | 239 for file_ in files: |
225 if (_UnixName(file_) in exclude_files or | 240 if (_UnixName(file_) in exclude_files or |
226 file_.startswith('.') or | 241 file_.startswith('.') or |
227 file_.startswith('_')): | 242 file_.startswith('_')): |
228 continue | 243 continue |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
335 if (not opts.file and len(args) != 6) or (opts.file and len(args) != 7): | 350 if (not opts.file and len(args) != 6) or (opts.file and len(args) != 7): |
336 parser.error('incorrect number of arguments.') | 351 parser.error('incorrect number of arguments.') |
337 | 352 |
338 if opts.file: | 353 if opts.file: |
339 _MoveSingleFile(*args, replace=opts.replace, svn=opts.svn) | 354 _MoveSingleFile(*args, replace=opts.replace, svn=opts.svn) |
340 else: | 355 else: |
341 _MoveAllFiles(*args, | 356 _MoveAllFiles(*args, |
342 replace=opts.replace, | 357 replace=opts.replace, |
343 exclude_dir=opts.exclude, | 358 exclude_dir=opts.exclude, |
344 svn=opts.svn) | 359 svn=opts.svn) |
OLD | NEW |