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

Side by Side Diff: pkg/analysis_server/tool/spec/to_html.dart

Issue 2296023002: Update the styles for the analysis server specification. (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « pkg/analysis_server/tool/spec/spec_input.html ('k') | 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) 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;
11 11
12 import 'dart:convert'; 12 import 'dart:convert';
13 13
14 import 'package:analyzer/src/codegen/html.dart'; 14 import 'package:analyzer/src/codegen/html.dart';
15 import 'package:analyzer/src/codegen/tools.dart'; 15 import 'package:analyzer/src/codegen/tools.dart';
16 import 'package:html/dom.dart' as dom; 16 import 'package:html/dom.dart' as dom;
17 17
18 import 'api.dart'; 18 import 'api.dart';
19 import 'from_html.dart'; 19 import 'from_html.dart';
20 20
21 /** 21 /**
22 * Embedded stylesheet 22 * Embedded stylesheet
23 */ 23 */
24 final String stylesheet = ''' 24 final String stylesheet = '''
25 body { 25 body {
26 font-family: sans-serif, serif; 26 font-family: 'Roboto', sans-serif;
27 padding-left: 5%; 27 max-width: 800px;
28 padding-right: 5%; 28 margin: 0 auto;
29 padding: 0 16px;
30 font-size: 16px;
31 line-height: 1.5;
32 color: #111;
33 background-color: #fdfdfd;
34 font-weight: 300;
35 -webkit-font-smoothing: auto;
29 } 36 }
37
30 h1 { 38 h1 {
31 text-align: center; 39 text-align: center;
32 } 40 }
41
42 h2, h3, h4, h5 {
43 margin-bottom: 0;
44 }
45
33 h2.domain { 46 h2.domain {
34 border-bottom: 3px solid rgb(160, 160, 160); 47 border-bottom: 1px solid rgb(200, 200, 200);
48 margin-bottom: 0.5em;
35 } 49 }
50
51 h4 {
52 font-size: 18px;
53 }
54
55 h5 {
56 font-size: 16px;
57 }
58
59 p {
60 margin-top: 0;
61 }
62
36 pre { 63 pre {
37 margin: 0px; 64 margin: 0;
65 font-family: 'Source Code Pro', monospace;
66 font-size: 15px;
38 } 67 }
68
39 div.box { 69 div.box {
40 border: 1px solid rgb(0, 0, 0); 70 background-color: rgb(240, 245, 240);
41 background-color: rgb(207, 226, 243); 71 border-radius: 4px;
42 padding: 0.5em; 72 padding: 4px 12px;
73 margin: 16px 0;
43 } 74 }
75
44 div.hangingIndent { 76 div.hangingIndent {
45 padding-left: 3em; 77 padding-left: 3em;
46 text-indent: -3em; 78 text-indent: -3em;
47 } 79 }
80
81 dl dt {
82 font-weight: bold;
83 }
84
85 dl dd {
86 margin-left: 16px;
87 }
88
48 dt { 89 dt {
49 margin-top: 1em; 90 margin-top: 1em;
50 margin-bottom: 1em;
51 } 91 }
92
52 dt.notification { 93 dt.notification {
53 font-weight: bold; 94 font-weight: bold;
54 } 95 }
96
55 dt.refactoring { 97 dt.refactoring {
56 font-weight: bold; 98 font-weight: bold;
57 } 99 }
100
58 dt.request { 101 dt.request {
59 font-weight: bold; 102 font-weight: bold;
60 } 103 }
104
61 dt.typeDefinition { 105 dt.typeDefinition {
62 font-weight: bold; 106 font-weight: bold;
63 } 107 }
64 108
65 */ 109 a {
66 * Styles for index 110 text-decoration: none;
67 */ 111 }
112
113 a:focus, a:hover {
114 text-decoration: underline;
115 }
116
117 /* Styles for index */
68 118
69 .subindex { 119 .subindex {
70 } 120 }
71 121
72 .subindex ul { 122 .subindex ul {
73 padding-left: 0px; 123 padding-left: 0;
74 margin-left: 0px; 124 margin-left: 0;
75 125
76 -webkit-margin-before: 0px; 126 -webkit-margin-before: 0;
77 -webkit-margin-start: 0px; 127 -webkit-margin-start: 0;
78 -webkit-padding-start: 0px; 128 -webkit-padding-start: 0;
79 129
80 list-style-type: none; 130 list-style-type: none;
81 } 131 }
82 ''' 132 '''
83 .trim(); 133 .trim();
84 134
85 final GeneratedFile target = 135 final GeneratedFile target =
86 new GeneratedFile('doc/api.html', (String pkgPath) { 136 new GeneratedFile('doc/api.html', (String pkgPath) {
87 ToHtmlVisitor visitor = new ToHtmlVisitor(readApi(pkgPath)); 137 ToHtmlVisitor visitor = new ToHtmlVisitor(readApi(pkgPath));
88 dom.Document document = new dom.Document(); 138 dom.Document document = new dom.Document();
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 translateHtml(node, squashParagraphs: squashParagraphs); 399 translateHtml(node, squashParagraphs: squashParagraphs);
350 continue; 400 continue;
351 } 401 }
352 switch (node.localName) { 402 switch (node.localName) {
353 case 'domain': 403 case 'domain':
354 visitDomain(apiMappings.domains[node]); 404 visitDomain(apiMappings.domains[node]);
355 break; 405 break;
356 case 'head': 406 case 'head':
357 head(() { 407 head(() {
358 translateHtml(node, squashParagraphs: squashParagraphs); 408 translateHtml(node, squashParagraphs: squashParagraphs);
409 element('link', {
410 'rel': 'stylesheet',
411 'href': 'https://fonts.googleapis.com/css?family=Source+Code+Pro |Roboto:500,400italic,300,400',
412 'type': 'text/css'
413 });
359 element('style', {}, () { 414 element('style', {}, () {
360 writeln(stylesheet); 415 writeln(stylesheet);
361 }); 416 });
362 }); 417 });
363 break; 418 break;
364 case 'refactorings': 419 case 'refactorings':
365 visitRefactorings(api.refactorings); 420 visitRefactorings(api.refactorings);
366 break; 421 break;
367 case 'types': 422 case 'types':
368 visitTypes(api.types); 423 visitTypes(api.types);
(...skipping 29 matching lines...) Expand all
398 }); 453 });
399 } 454 }
400 455
401 @override 456 @override
402 void visitDomain(Domain domain) { 457 void visitDomain(Domain domain) {
403 if (domain.experimental) { 458 if (domain.experimental) {
404 return; 459 return;
405 } 460 }
406 h2('domain', () { 461 h2('domain', () {
407 anchor('domain_${domain.name}', () { 462 anchor('domain_${domain.name}', () {
408 write('Domain: ${domain.name}'); 463 write('${domain.name} domain');
409 }); 464 });
410 }); 465 });
411 translateHtml(domain.html); 466 translateHtml(domain.html);
412 if (domain.requests.isNotEmpty) { 467 if (domain.requests.isNotEmpty) {
413 h3(() { 468 h3(() {
414 write('Requests'); 469 write('Requests');
415 }); 470 });
416 dl(() { 471 dl(() {
417 domain.requests.forEach(visitRequest); 472 domain.requests.forEach(visitRequest);
418 }); 473 });
(...skipping 19 matching lines...) Expand all
438 write('#'); 493 write('#');
439 }); 494 });
440 write(')'); 495 write(')');
441 }); 496 });
442 dd(() { 497 dd(() {
443 box(() { 498 box(() {
444 showType( 499 showType(
445 'notification', notification.notificationType, notification.params); 500 'notification', notification.notificationType, notification.params);
446 }); 501 });
447 translateHtml(notification.html); 502 translateHtml(notification.html);
448 describePayload(notification.params, 'Parameters'); 503 describePayload(notification.params, 'parameters:');
449 }); 504 });
450 } 505 }
451 506
452 @override 507 @override
453 visitRefactoring(Refactoring refactoring) { 508 visitRefactoring(Refactoring refactoring) {
454 dt('refactoring', () { 509 dt('refactoring', () {
455 write(refactoring.kind); 510 write(refactoring.kind);
456 }); 511 });
457 dd(() { 512 dd(() {
458 translateHtml(refactoring.html); 513 translateHtml(refactoring.html);
459 describePayload(refactoring.feedback, 'Feedback', force: true); 514 describePayload(refactoring.feedback, 'Feedback:', force: true);
460 describePayload(refactoring.options, 'Options', force: true); 515 describePayload(refactoring.options, 'Options:', force: true);
461 }); 516 });
462 } 517 }
463 518
464 @override 519 @override
465 void visitRefactorings(Refactorings refactorings) { 520 void visitRefactorings(Refactorings refactorings) {
466 translateHtml(refactorings.html); 521 translateHtml(refactorings.html);
467 dl(() { 522 dl(() {
468 super.visitRefactorings(refactorings); 523 super.visitRefactorings(refactorings);
469 }); 524 });
470 } 525 }
(...skipping 10 matching lines...) Expand all
481 }); 536 });
482 write(')'); 537 write(')');
483 }); 538 });
484 dd(() { 539 dd(() {
485 box(() { 540 box(() {
486 showType('request', request.requestType, request.params); 541 showType('request', request.requestType, request.params);
487 br(); 542 br();
488 showType('response', request.responseType, request.result); 543 showType('response', request.responseType, request.result);
489 }); 544 });
490 translateHtml(request.html); 545 translateHtml(request.html);
491 describePayload(request.params, 'Parameters'); 546 describePayload(request.params, 'parameters:');
492 describePayload(request.result, 'Returns'); 547 describePayload(request.result, 'returns:');
493 }); 548 });
494 } 549 }
495 550
496 @override 551 @override
497 void visitTypeDefinition(TypeDefinition typeDefinition) { 552 void visitTypeDefinition(TypeDefinition typeDefinition) {
498 if (typeDefinition.experimental) { 553 if (typeDefinition.experimental) {
499 return; 554 return;
500 } 555 }
501 dt('typeDefinition', () { 556 dt('typeDefinition', () {
502 anchor('type_${typeDefinition.name}', () { 557 anchor('type_${typeDefinition.name}', () {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 void visitTypeObject(TypeObject typeObject) { 609 void visitTypeObject(TypeObject typeObject) {
555 dl(() { 610 dl(() {
556 super.visitTypeObject(typeObject); 611 super.visitTypeObject(typeObject);
557 }); 612 });
558 } 613 }
559 614
560 @override 615 @override
561 void visitTypeObjectField(TypeObjectField typeObjectField) { 616 void visitTypeObjectField(TypeObjectField typeObjectField) {
562 dt('field', () { 617 dt('field', () {
563 b(() { 618 b(() {
564 i(() { 619 write(typeObjectField.name);
565 write(typeObjectField.name); 620 if (typeObjectField.value != null) {
566 if (typeObjectField.value != null) { 621 write(' = ${JSON.encode(typeObjectField.value)}');
567 write(' = ${JSON.encode(typeObjectField.value)}'); 622 } else {
568 } else { 623 write(' (');
569 write(' ( '); 624 if (typeObjectField.optional) {
570 if (typeObjectField.optional) { 625 gray(() {
571 gray(() { 626 write('optional');
572 write('optional'); 627 });
573 }); 628 write(' ');
574 write(' ');
575 }
576 TypeVisitor typeVisitor = new TypeVisitor(api, short: true);
577 addAll(typeVisitor.collectHtml(() {
578 typeVisitor.visitTypeDecl(typeObjectField.type);
579 }));
580 write(' )');
581 } 629 }
582 }); 630 TypeVisitor typeVisitor = new TypeVisitor(api, short: true);
631 addAll(typeVisitor.collectHtml(() {
632 typeVisitor.visitTypeDecl(typeObjectField.type);
633 }));
634 write(')');
635 }
583 }); 636 });
584 }); 637 });
585 dd(() { 638 dd(() {
586 translateHtml(typeObjectField.html); 639 translateHtml(typeObjectField.html);
587 }); 640 });
588 } 641 }
589 642
590 @override 643 @override
591 void visitTypeReference(TypeReference typeReference) {} 644 void visitTypeReference(TypeReference typeReference) {}
592 645
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 bool verticalBarNeeded = false; 762 bool verticalBarNeeded = false;
710 for (TypeDecl choice in typeUnion.choices) { 763 for (TypeDecl choice in typeUnion.choices) {
711 if (verticalBarNeeded) { 764 if (verticalBarNeeded) {
712 write(' | '); 765 write(' | ');
713 } 766 }
714 visitTypeDecl(choice); 767 visitTypeDecl(choice);
715 verticalBarNeeded = true; 768 verticalBarNeeded = true;
716 } 769 }
717 } 770 }
718 } 771 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/tool/spec/spec_input.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698