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

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

Issue 8771054: Add a script to generate HTML and DOM docs with cross-links to one another. (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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 /**
6 * A script to document the HTML library. This needs to be run from the
Bob Nystrom 2011/12/06 23:11:23 To document what about the HTML library? For a scr
7 * utils/dartdoc directory.
Bob Nystrom 2011/12/06 23:11:23 I'd move this into dartdoc. I know it's specific t
nweiz 2011/12/07 19:26:56 Moving this into dartdoc runs into the same proble
8 */
9 #library('html_doc');
10
11 #import('html_diff.dart');
12 #import('../../../frog/lang.dart');
13 #import('../../../frog/file_system_node.dart');
14 #import('../../../frog/file_system.dart');
15 #import('../../../utils/dartdoc/dartdoc.dart', prefix: 'doc');
16
17 HtmlDiff _diff;
18
19 void main() {
20 HtmlDiff.initWorld('../../frog', new NodeFileSystem());
21 doc.initializeDartDoc();
22 _diff = new HtmlDiff();
23 _diff.run();
24
25 process.argv[2] = 'dart:html';
Bob Nystrom 2011/12/06 23:11:23 This is pretty gross. Right now dartdoc isn't set
nweiz 2011/12/07 19:26:56 Done.
26 doc.registerMethodCallback(addMemberDoc);
27 doc.registerFieldCallback(addMemberDoc);
28 doc.registerTypeCallback(addTypeDoc);
29 doc.main();
30 }
31
32 String _andList(List<String> items) {
Jacob 2011/12/06 22:38:14 nit: name _andList is a bit confusing. Maybe some
Bob Nystrom 2011/12/06 23:11:23 Dartdoc also has code that does this. Since you're
nweiz 2011/12/07 19:26:56 Done.
33 if (items.length == 1) return items[0];
34 if (items.length == 2) return "${items[0]} and ${items[1]}";
35 return Strings.join(items.getRange(0, items.length - 1), ', ') +
36 ', and ' + items[items.length - 1];
37 }
38
39 String _linkMember(Member member) {
40 final typeName = member.declaringType.name;
41 var memberName = "$typeName.${member.name}";
42 if (member.isConstructor || member.isFactory) {
43 final separator = member.constructorName == '' ? '' : '.';
44 memberName = 'new $typeName$separator${member.constructorName}';
45 } else if (member.name.startsWith('get:')) {
46 memberName = "$typeName.${member.name.substring(4)}";
47 }
48
49 return "[$memberName](../${doc.memberUrl(member)})";
Bob Nystrom 2011/12/06 23:11:23 Yay markdown!
50 }
51
52 String _linkType(Type type) => "[${type.name}](../${doc.typeUrl(type)})";
53
54 Set<Member> _mergeProps(Set<Member> members) {
55 // Only print setters if the getter doesn't exist.
Bob Nystrom 2011/12/06 23:11:23 Make this a doc comment. I'd name this something d
nweiz 2011/12/07 19:26:56 Done.
56 return members.filter((m) {
57 if (!m.name.startsWith('set:')) return true;
58 var getName = m.name.replaceFirst('set:', 'get:');
59 return !members.some((maybeGet) => maybeGet.name == getName);
60 });
61 }
62
63 String addMemberDoc(Member member) {
64 if (_diff.domToHtml.containsKey(member)) {
65 var htmlMemberSet = _mergeProps(_diff.domToHtml[member]);
Jacob 2011/12/06 22:38:14 nit: var ==> final
nweiz 2011/12/07 19:26:56 Done.
66 var phrase = htmlMemberSet.every((m) => _diff.sameName(member, m)) ?
Bob Nystrom 2011/12/06 23:11:23 Some temporary variables would help here: final b
nweiz 2011/12/07 19:26:56 I think it reads pretty well... "if every member h
67 "available as" : "renamed to";
68 var htmlMembers = _andList(map(htmlMemberSet, _linkMember));
69 return "_This is $phrase $htmlMembers in the " +
70 "[dart:html](../html.html) library._";
71 } else if (_diff.htmlToDom.containsKey(member)) {
72 var domMemberSet = _mergeProps(_diff.htmlToDom[member]);
73 var phrase = domMemberSet.every((m) => _diff.sameName(m, member)) ?
74 "is the same as" : "renames";
75 var domMembers = _andList(map(domMemberSet, _linkMember));
76 return "_This $phrase ${domMembers} in the [dart:dom](../dom.html) " +
Jacob 2011/12/06 22:38:14 nit: personally i'd recommend violating the 80 cha
Bob Nystrom 2011/12/06 23:11:23 Don't need {} on domMembers.
nweiz 2011/12/07 19:26:56 That makes it harder to read in text editors that
nweiz 2011/12/07 19:26:56 Done.
77 "library._";
78 } else {
79 return "";
80 }
81 }
82
83 String addTypeDoc(Type type) {
84 if (_diff.domTypesToHtml.containsKey(type)) {
85 var htmlTypes = _andList(map(_diff.domTypesToHtml[type], _linkType));
86 return "_This corresponds to $htmlTypes in the [dart:html](../html.html) " +
87 "library._";
88 } else if (_diff.htmlTypesToDom.containsKey(type)) {
89 var domTypes = _andList(map(_diff.htmlTypesToDom[type], _linkType));
90 return "_This corresponds to $domTypes in the [dart:dom](../dom.html) " +
91 "library._";
92 } else {
93 return "";
94 }
95 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698