Chromium Code Reviews| 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 |