| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 * Code for displaying the API as HTML. This is used both for generating a | 6 * Code for displaying the API as HTML. This is used both for generating a |
| 7 * full description of the API as a web page, and for generating doc comments | 7 * full description of the API as a web page, and for generating doc comments |
| 8 * in generated code. | 8 * in generated code. |
| 9 */ | 9 */ |
| 10 library to.html; | 10 library to.html; |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 abstract class HtmlMixin { | 118 abstract class HtmlMixin { |
| 119 void anchor(String id, void callback()) { | 119 void anchor(String id, void callback()) { |
| 120 element('a', {'name': id}, callback); | 120 element('a', {'name': id}, callback); |
| 121 } | 121 } |
| 122 | 122 |
| 123 void b(void callback()) => element('b', {}, callback); | 123 void b(void callback()) => element('b', {}, callback); |
| 124 void body(void callback()) => element('body', {}, callback); | 124 void body(void callback()) => element('body', {}, callback); |
| 125 void box(void callback()) { | 125 void box(void callback()) { |
| 126 element('div', {'class': 'box'}, callback); | 126 element('div', {'class': 'box'}, callback); |
| 127 } | 127 } |
| 128 |
| 128 void br() => element('br', {}); | 129 void br() => element('br', {}); |
| 129 void dd(void callback()) => element('dd', {}, callback); | 130 void dd(void callback()) => element('dd', {}, callback); |
| 130 void dl(void callback()) => element('dl', {}, callback); | 131 void dl(void callback()) => element('dl', {}, callback); |
| 131 void dt(String cls, void callback()) => | 132 void dt(String cls, void callback()) => |
| 132 element('dt', {'class': cls}, callback); | 133 element('dt', {'class': cls}, callback); |
| 133 void element(String name, Map<dynamic, String> attributes, [void callback()]); | 134 void element(String name, Map<dynamic, String> attributes, [void callback()]); |
| 134 void gray(void callback()) => | 135 void gray(void callback()) => |
| 135 element('span', {'style': 'color:#999999'}, callback); | 136 element('span', {'style': 'color:#999999'}, callback); |
| 136 void h1(void callback()) => element('h1', {}, callback); | 137 void h1(void callback()) => element('h1', {}, callback); |
| 137 void h2(String cls, void callback()) { | 138 void h2(String cls, void callback()) { |
| 138 if (cls == null) { | 139 if (cls == null) { |
| 139 return element('h2', {}, callback); | 140 return element('h2', {}, callback); |
| 140 } | 141 } |
| 141 return element('h2', {'class': cls}, callback); | 142 return element('h2', {'class': cls}, callback); |
| 142 } | 143 } |
| 144 |
| 143 void h3(void callback()) => element('h3', {}, callback); | 145 void h3(void callback()) => element('h3', {}, callback); |
| 144 void h4(void callback()) => element('h4', {}, callback); | 146 void h4(void callback()) => element('h4', {}, callback); |
| 145 void h5(void callback()) => element('h5', {}, callback); | 147 void h5(void callback()) => element('h5', {}, callback); |
| 146 void hangingIndent(void callback()) => | 148 void hangingIndent(void callback()) => |
| 147 element('div', {'class': 'hangingIndent'}, callback); | 149 element('div', {'class': 'hangingIndent'}, callback); |
| 148 void head(void callback()) => element('head', {}, callback); | 150 void head(void callback()) => element('head', {}, callback); |
| 149 void html(void callback()) => element('html', {}, callback); | 151 void html(void callback()) => element('html', {}, callback); |
| 150 void i(void callback()) => element('i', {}, callback); | 152 void i(void callback()) => element('i', {}, callback); |
| 151 void link(String id, void callback()) { | 153 void link(String id, void callback()) { |
| 152 element('a', {'href': '#$id'}, callback); | 154 element('a', {'href': '#$id'}, callback); |
| 153 } | 155 } |
| 156 |
| 154 void p(void callback()) => element('p', {}, callback); | 157 void p(void callback()) => element('p', {}, callback); |
| 155 void pre(void callback()) => element('pre', {}, callback); | 158 void pre(void callback()) => element('pre', {}, callback); |
| 156 void title(void callback()) => element('title', {}, callback); | 159 void title(void callback()) => element('title', {}, callback); |
| 157 void tt(void callback()) => element('tt', {}, callback); | 160 void tt(void callback()) => element('tt', {}, callback); |
| 158 } | 161 } |
| 159 | 162 |
| 160 /** | 163 /** |
| 161 * Visitor that generates HTML documentation of the API. | 164 * Visitor that generates HTML documentation of the API. |
| 162 */ | 165 */ |
| 163 class ToHtmlVisitor extends HierarchicalApiVisitor | 166 class ToHtmlVisitor extends HierarchicalApiVisitor |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 519 element('div', {'class': 'subindex'}, () { | 522 element('div', {'class': 'subindex'}, () { |
| 520 generateNotificationsIndex(domain.notifications); | 523 generateNotificationsIndex(domain.notifications); |
| 521 }); | 524 }); |
| 522 } | 525 } |
| 523 } | 526 } |
| 524 | 527 |
| 525 void generateRequestsIndex(Iterable<Request> requests) { | 528 void generateRequestsIndex(Iterable<Request> requests) { |
| 526 h5(() => write("Requests")); | 529 h5(() => write("Requests")); |
| 527 element('ul', {}, () { | 530 element('ul', {}, () { |
| 528 for (var request in requests) { | 531 for (var request in requests) { |
| 529 element('li', {}, () => link('request_${request.longMethod}', () => | 532 element( |
| 530 write(request.method))); | 533 'li', |
| 534 {}, |
| 535 () => link( |
| 536 'request_${request.longMethod}', () => write(request.method))); |
| 531 } | 537 } |
| 532 }); | 538 }); |
| 533 } | 539 } |
| 534 | 540 |
| 535 void generateNotificationsIndex(Iterable<Notification> notifications) { | 541 void generateNotificationsIndex(Iterable<Notification> notifications) { |
| 536 h5(() => write("Notifications")); | 542 h5(() => write("Notifications")); |
| 537 element('div', {'class': 'subindex'}, () { | 543 element('div', {'class': 'subindex'}, () { |
| 538 element('ul', {}, () { | 544 element('ul', {}, () { |
| 539 for (var notification in notifications) { | 545 for (var notification in notifications) { |
| 540 element('li', {}, () => link('notification_${notification.longEvent}', | 546 element( |
| 541 () => write(notification.event))); | 547 'li', |
| 548 {}, |
| 549 () => link('notification_${notification.longEvent}', |
| 550 () => write(notification.event))); |
| 542 } | 551 } |
| 543 }); | 552 }); |
| 544 }); | 553 }); |
| 545 } | 554 } |
| 546 | 555 |
| 547 void generateTypesIndex(Set<String> types) { | 556 void generateTypesIndex(Set<String> types) { |
| 548 h3(() { | 557 h3(() { |
| 549 write("Types"); | 558 write("Types"); |
| 550 write(' ('); | 559 write(' ('); |
| 551 link('types', () => write('\u2191')); | 560 link('types', () => write('\u2191')); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 564 h3(() { | 573 h3(() { |
| 565 write("Refactorings"); | 574 write("Refactorings"); |
| 566 write(' ('); | 575 write(' ('); |
| 567 link('refactorings', () => write('\u2191')); | 576 link('refactorings', () => write('\u2191')); |
| 568 write(')'); | 577 write(')'); |
| 569 }); | 578 }); |
| 570 // TODO: Individual refactorings are not yet hyperlinked. | 579 // TODO: Individual refactorings are not yet hyperlinked. |
| 571 element('div', {'class': 'subindex'}, () { | 580 element('div', {'class': 'subindex'}, () { |
| 572 element('ul', {}, () { | 581 element('ul', {}, () { |
| 573 for (var refactoring in refactorings) { | 582 for (var refactoring in refactorings) { |
| 574 element('li', {}, () => link('refactoring_${refactoring.kind}', | 583 element( |
| 575 () => write(refactoring.kind))); | 584 'li', |
| 585 {}, |
| 586 () => link('refactoring_${refactoring.kind}', |
| 587 () => write(refactoring.kind))); |
| 576 } | 588 } |
| 577 }); | 589 }); |
| 578 }); | 590 }); |
| 579 } | 591 } |
| 580 } | 592 } |
| 581 | 593 |
| 582 /** | 594 /** |
| 583 * Visitor that generates a compact representation of a type, such as: | 595 * Visitor that generates a compact representation of a type, such as: |
| 584 * | 596 * |
| 585 * { | 597 * { |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 689 bool verticalBarNeeded = false; | 701 bool verticalBarNeeded = false; |
| 690 for (TypeDecl choice in typeUnion.choices) { | 702 for (TypeDecl choice in typeUnion.choices) { |
| 691 if (verticalBarNeeded) { | 703 if (verticalBarNeeded) { |
| 692 write(' | '); | 704 write(' | '); |
| 693 } | 705 } |
| 694 visitTypeDecl(choice); | 706 visitTypeDecl(choice); |
| 695 verticalBarNeeded = true; | 707 verticalBarNeeded = true; |
| 696 } | 708 } |
| 697 } | 709 } |
| 698 } | 710 } |
| OLD | NEW |