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

Side by Side Diff: utils/dartdoc/dartdoc.dart

Issue 9316050: Correctly sort libraries by name, not key. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /** 5 /**
6 * To use it, from this directory, run: 6 * To use it, from this directory, run:
7 * 7 *
8 * $ ./dartdoc <path to .dart file> 8 * $ ./dartdoc <path to .dart file>
9 * 9 *
10 * This will create a "docs" directory with the docs for your libraries. To 10 * This will create a "docs" directory with the docs for your libraries. To
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 * this is `null` then no search box will be shown. 126 * this is `null` then no search box will be shown.
127 */ 127 */
128 String searchEngineId = null; 128 String searchEngineId = null;
129 129
130 /* The URL that the embedded search results should be displayed on. */ 130 /* The URL that the embedded search results should be displayed on. */
131 String searchResultsUrl = 'results.html'; 131 String searchResultsUrl = 'results.html';
132 132
133 /** Set this to add footer text to each generated page. */ 133 /** Set this to add footer text to each generated page. */
134 String footerText = ''; 134 String footerText = '';
135 135
136 /**
137 * From exposes the set of libraries in `world.libraries`. That maps library
138 * *keys* to [Library] objects. The keys are *not* exactly the same as their
139 * names. This means if we order by key, we won't actually have them sorted
140 * correctly. This list contains the libraries in correct order by their
141 * *name*.
142 */
143 List<Library> _sortedLibraries;
144
136 CommentMap _comments; 145 CommentMap _comments;
137 146
138 /** The library that we're currently generating docs for. */ 147 /** The library that we're currently generating docs for. */
139 Library _currentLibrary; 148 Library _currentLibrary;
140 149
141 /** The type that we're currently generating docs for. */ 150 /** The type that we're currently generating docs for. */
142 Type _currentType; 151 Type _currentType;
143 152
144 /** The member that we're currently generating docs for. */ 153 /** The member that we're currently generating docs for. */
145 Member _currentMember; 154 Member _currentMember;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 world.process(); 206 world.process();
198 break; 207 break;
199 208
200 default: 209 default:
201 // Normal entrypoint script. 210 // Normal entrypoint script.
202 world.processDartScript(entrypoint); 211 world.processDartScript(entrypoint);
203 } 212 }
204 213
205 world.resolveAll(); 214 world.resolveAll();
206 215
216 // Sort the libraries by name (not key).
217 _sortedLibraries = world.libraries.getValues();
218 _sortedLibraries.sort((a, b) {
219 return a.name.toUpperCase().compareTo(b.name.toUpperCase());
220 });
221
207 // Generate the docs. 222 // Generate the docs.
208 if (mode == MODE_LIVE_NAV) docNavigationJson(); 223 if (mode == MODE_LIVE_NAV) docNavigationJson();
209 224
210 docIndex(); 225 docIndex();
211 for (final library in world.libraries.getValues()) { 226 for (final library in _sortedLibraries) {
212 docLibrary(library); 227 docLibrary(library);
213 } 228 }
214 } finally { 229 } finally {
215 options.dietParse = oldDietParse; 230 options.dietParse = oldDietParse;
216 } 231 }
217 } 232 }
218 233
219 void startFile(String path) { 234 void startFile(String path) {
220 _filePath = path; 235 _filePath = path;
221 _file = new StringBuffer(); 236 _file = new StringBuffer();
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 } 355 }
341 356
342 void docIndex() { 357 void docIndex() {
343 startFile('index.html'); 358 startFile('index.html');
344 359
345 writeHeader(mainTitle, []); 360 writeHeader(mainTitle, []);
346 361
347 writeln('<h2>$mainTitle</h2>'); 362 writeln('<h2>$mainTitle</h2>');
348 writeln('<h3>Libraries</h3>'); 363 writeln('<h3>Libraries</h3>');
349 364
350 for (final library in orderByName(world.libraries)) { 365 for (final library in _sortedLibraries) {
351 docIndexLibrary(library); 366 docIndexLibrary(library);
352 } 367 }
353 368
354 writeFooter(); 369 writeFooter();
355 endFile(); 370 endFile();
356 } 371 }
357 372
358 void docIndexLibrary(Library library) { 373 void docIndexLibrary(Library library) {
359 writeln('<h4>${a(libraryUrl(library), library.name)}</h4>'); 374 writeln('<h4>${a(libraryUrl(library), library.name)}</h4>');
360 } 375 }
361 376
362 /** 377 /**
363 * Walks the libraries and creates a JSON object containing the data needed 378 * Walks the libraries and creates a JSON object containing the data needed
364 * to generate navigation for them. 379 * to generate navigation for them.
365 */ 380 */
366 void docNavigationJson() { 381 void docNavigationJson() {
367 startFile('nav.json'); 382 startFile('nav.json');
368 383
369 final libraries = {}; 384 final libraries = {};
370 385
371 for (final library in orderByName(world.libraries)) { 386 for (final library in _sortedLibraries) {
372 docLibraryNavigationJson(library, libraries); 387 docLibraryNavigationJson(library, libraries);
373 } 388 }
374 389
375 writeln(JSON.stringify(libraries)); 390 writeln(JSON.stringify(libraries));
376 endFile(); 391 endFile();
377 } 392 }
378 393
379 void docLibraryNavigationJson(Library library, Map libraries) { 394 void docLibraryNavigationJson(Library library, Map libraries) {
380 final types = []; 395 final types = [];
381 396
382 for (final type in orderByName(library.types)) { 397 for (final type in orderByName(library.types)) {
383 if (type.isTop) continue; 398 if (type.isTop) continue;
384 if (type.name.startsWith('_')) continue; 399 if (type.name.startsWith('_')) continue;
385 400
386 final kind = type.isClass ? 'class' : 'interface'; 401 final kind = type.isClass ? 'class' : 'interface';
387 final url = typeUrl(type); 402 final url = typeUrl(type);
388 types.add({ 'name': typeName(type), 'kind': kind, 'url': url }); 403 types.add({ 'name': typeName(type), 'kind': kind, 'url': url });
389 } 404 }
390 405
391 libraries[library.name] = types; 406 libraries[library.name] = types;
392 } 407 }
393 408
394 void docNavigation() { 409 void docNavigation() {
395 writeln( 410 writeln(
396 ''' 411 '''
397 <div class="nav"> 412 <div class="nav">
398 '''); 413 ''');
399 414
400 if (mode == MODE_STATIC) { 415 if (mode == MODE_STATIC) {
401 for (final library in orderByName(world.libraries)) { 416 for (final library in _sortedLibraries) {
402 write('<h2><div class="icon-library"></div>'); 417 write('<h2><div class="icon-library"></div>');
403 418
404 if ((_currentLibrary == library) && (_currentType == null)) { 419 if ((_currentLibrary == library) && (_currentType == null)) {
405 write('<strong>${library.name}</strong>'); 420 write('<strong>${library.name}</strong>');
406 } else { 421 } else {
407 write('${a(libraryUrl(library), library.name)}'); 422 write('${a(libraryUrl(library), library.name)}');
408 } 423 }
409 write('</h2>'); 424 write('</h2>');
410 425
411 // Only expand classes in navigation for current library. 426 // Only expand classes in navigation for current library.
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 1201
1187 return new md.Element.text('code', name); 1202 return new md.Element.text('code', name);
1188 } 1203 }
1189 1204
1190 // TODO(rnystrom): Move into SourceSpan? 1205 // TODO(rnystrom): Move into SourceSpan?
1191 int getSpanColumn(SourceSpan span) { 1206 int getSpanColumn(SourceSpan span) {
1192 final line = span.file.getLine(span.start); 1207 final line = span.file.getLine(span.start);
1193 return span.file.getColumn(line, span.start); 1208 return span.file.getColumn(line, span.start);
1194 } 1209 }
1195 } 1210 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698