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

Side by Side Diff: client/html/scripts/html_doc.dart

Issue 8871001: Thoroughly document html_diff and html_doc. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 9 years 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
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 * A script to document the HTML library, including annotations on the mapping 6 * A script to document the HTML library, including annotations on the mapping
7 * to and from the DOM library. To use it, from utils/dartdoc, run: 7 * to and from the DOM library. To use it, from utils/dartdoc, run:
8 * 8 *
9 * $ htmldoc 9 * $ htmldoc
10 * 10 *
(...skipping 20 matching lines...) Expand all
31 _diff = new HtmlDiff(); 31 _diff = new HtmlDiff();
32 _diff.run(); 32 _diff.run();
33 world.reset(); 33 world.reset();
34 34
35 doc.addMethodDocumenter(addMemberDoc); 35 doc.addMethodDocumenter(addMemberDoc);
36 doc.addFieldDocumenter(addMemberDoc); 36 doc.addFieldDocumenter(addMemberDoc);
37 doc.addTypeDocumenter(addTypeDoc); 37 doc.addTypeDocumenter(addTypeDoc);
38 doc.document('html'); 38 doc.document('html');
39 } 39 }
40 40
41 // TODO(nweiz): document this file 41 /**
42 42 * Returns a Markdown-formatted link to [member], relative to a type page that
43 * may be in a different library than [member].
44 */
43 String _linkMember(Member member) { 45 String _linkMember(Member member) {
44 final typeName = member.declaringType.name; 46 final typeName = member.declaringType.name;
45 var memberName = "$typeName.${member.name}"; 47 var memberName = "$typeName.${member.name}";
46 if (member.isConstructor || member.isFactory) { 48 if (member.isConstructor || member.isFactory) {
47 final separator = member.constructorName == '' ? '' : '.'; 49 final separator = member.constructorName == '' ? '' : '.';
48 memberName = 'new $typeName$separator${member.constructorName}'; 50 memberName = 'new $typeName$separator${member.constructorName}';
49 } else if (member.name.startsWith('get:')) { 51 } else if (member.name.startsWith('get:')) {
50 memberName = "$typeName.${member.name.substring(4)}"; 52 memberName = "$typeName.${member.name.substring(4)}";
51 } 53 }
52 54
53 return "[$memberName](../${doc.memberUrl(member)})"; 55 return "[$memberName](../${doc.memberUrl(member)})";
54 } 56 }
55 57
58 /**
59 * Returns a Markdown-formatted link to [type], relative to a type page that
60 * may be in a different library than [type].
61 */
56 String _linkType(Type type) => "[${type.name}](../${doc.typeUrl(type)})"; 62 String _linkType(Type type) => "[${type.name}](../${doc.typeUrl(type)})";
57 63
58 /** 64 /**
59 * Unify getters and setters of the same property. We only want to print 65 * Unify getters and setters of the same property. We only want to print
60 * explicit setters if no getter exists. 66 * explicit setters if no getter exists.
67 *
68 * If [members] contains no setters, returns it unmodified.
61 */ 69 */
62 Set<Member> _unifyProperties(Set<Member> members) { 70 Set<Member> _unifyProperties(Set<Member> members) {
63 // Only print setters if the getter doesn't exist. 71 // Only print setters if the getter doesn't exist.
64 return members.filter((m) { 72 return members.filter((m) {
65 if (!m.name.startsWith('set:')) return true; 73 if (!m.name.startsWith('set:')) return true;
66 var getName = m.name.replaceFirst('set:', 'get:'); 74 var getName = m.name.replaceFirst('set:', 'get:');
67 return !members.some((maybeGet) => maybeGet.name == getName); 75 return !members.some((maybeGet) => maybeGet.name == getName);
68 }); 76 });
69 } 77 }
70 78
79 /**
80 * Returns additional Markdown-formatted documentation for [member], linking it
81 * to the corresponding `dart:html` or `dart:dom` [Member](s). If [member] is
82 * not in `dart:html` or `dart:dom`, returns no additional documentation.
83 */
71 String addMemberDoc(Member member) { 84 String addMemberDoc(Member member) {
72 if (_diff.domToHtml.containsKey(member)) { 85 if (_diff.domToHtml.containsKey(member)) {
73 final htmlMemberSet = _unifyProperties(_diff.domToHtml[member]); 86 final htmlMemberSet = _unifyProperties(_diff.domToHtml[member]);
74 final allSameName = htmlMemberSet.every((m) => _diff.sameName(member, m)); 87 final allSameName = htmlMemberSet.every((m) => _diff.sameName(member, m));
75 final phrase = allSameName ? "available as" : "renamed to"; 88 final phrase = allSameName ? "available as" : "renamed to";
76 final htmlMembers = doc.joinWithCommas(map(htmlMemberSet, _linkMember)); 89 final htmlMembers = doc.joinWithCommas(map(htmlMemberSet, _linkMember));
77 return "_This is $phrase $htmlMembers in the " + 90 return "_This is $phrase $htmlMembers in the " +
78 "[dart:html](../html.html) library._"; 91 "[dart:html](../html.html) library._";
79 } else if (_diff.htmlToDom.containsKey(member)) { 92 } else if (_diff.htmlToDom.containsKey(member)) {
80 final domMemberSet = _unifyProperties(_diff.htmlToDom[member]); 93 final domMemberSet = _unifyProperties(_diff.htmlToDom[member]);
81 final allSameName = domMemberSet.every((m) => _diff.sameName(m, member)); 94 final allSameName = domMemberSet.every((m) => _diff.sameName(m, member));
82 final phrase = allSameName ? "is the same as" : "renames"; 95 final phrase = allSameName ? "is the same as" : "renames";
83 final domMembers = doc.joinWithCommas(map(domMemberSet, _linkMember)); 96 final domMembers = doc.joinWithCommas(map(domMemberSet, _linkMember));
84 return "_This $phrase $domMembers in the [dart:dom](../dom.html) " + 97 return "_This $phrase $domMembers in the [dart:dom](../dom.html) " +
85 "library._"; 98 "library._";
86 } else { 99 } else {
87 return ""; 100 return "";
88 } 101 }
89 } 102 }
90 103
104 /**
105 * Returns additional Markdown-formatted documentation for [type], linking it to
106 * the corresponding `dart:html` or `dart:dom` [Type](s). If [type] is not in
107 * `dart:html` or `dart:dom`, returns no additional documentation.
108 */
91 String addTypeDoc(Type type) { 109 String addTypeDoc(Type type) {
92 if (_diff.domTypesToHtml.containsKey(type)) { 110 if (_diff.domTypesToHtml.containsKey(type)) {
93 var htmlTypes = doc.joinWithCommas( 111 var htmlTypes = doc.joinWithCommas(
94 map(_diff.domTypesToHtml[type], _linkType)); 112 map(_diff.domTypesToHtml[type], _linkType));
95 return "_This corresponds to $htmlTypes in the [dart:html](../html.html) " + 113 return "_This corresponds to $htmlTypes in the [dart:html](../html.html) " +
96 "library._"; 114 "library._";
97 } else if (_diff.htmlTypesToDom.containsKey(type)) { 115 } else if (_diff.htmlTypesToDom.containsKey(type)) {
98 var domTypes = doc.joinWithCommas( 116 var domTypes = doc.joinWithCommas(
99 map(_diff.htmlTypesToDom[type], _linkType)); 117 map(_diff.htmlTypesToDom[type], _linkType));
100 return "_This corresponds to $domTypes in the [dart:dom](../dom.html) " + 118 return "_This corresponds to $domTypes in the [dart:dom](../dom.html) " +
101 "library._"; 119 "library._";
102 } else { 120 } else {
103 return ""; 121 return "";
104 } 122 }
105 } 123 }
OLDNEW
« client/html/scripts/html_diff.dart ('K') | « client/html/scripts/html_diff.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698