OLD | NEW |
---|---|
(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 } | |
OLD | NEW |