Skip to content

Commit 9e92254

Browse files
committed
human-friendly type names for model elements
1 parent 1b04a93 commit 9e92254

File tree

2 files changed

+40
-6
lines changed

2 files changed

+40
-6
lines changed

lib/src/html_generator.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -179,16 +179,12 @@ class HtmlGeneratorInstance {
179179
File jsonFile = createOutputFile(out, 'index.json');
180180
String json = JSON.encode(documentedElements.map((ModelElement e) {
181181
// TODO: find a better string for type
182-
Map data = {
183-
'name': e.name,
184-
'href': e.href,
185-
'type': e.runtimeType.toString()
186-
};
182+
Map data = {'name': e.name, 'href': e.href, 'type': e.kind};
187183
if (e is EnclosedElement) {
188184
EnclosedElement ee = e as EnclosedElement;
189185
data['enclosedBy'] = {
190186
'name': ee.enclosingElement.name,
191-
'type': ee.enclosingElement.runtimeType.toString()
187+
'type': ee.enclosingElement.kind
192188
};
193189
}
194190
return data;

lib/src/model.dart

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ abstract class ModelElement implements Comparable, Nameable {
125125
}
126126
}
127127

128+
/// A human-friendly name for the kind of element this is.
129+
String get kind;
130+
128131
String get _computeDocumentationComment =>
129132
element.computeDocumentationComment();
130133

@@ -381,6 +384,9 @@ class Dynamic extends ModelElement {
381384
ModelElement get enclosingElement => throw new UnsupportedError('');
382385

383386
String get _href => throw new StateError('dynamic should not have an href');
387+
388+
@override
389+
String get kind => 'dynamic';
384390
}
385391

386392
class Package implements Nameable {
@@ -520,6 +526,9 @@ class Library extends ModelElement {
520526
return library;
521527
}
522528

529+
@override
530+
String get kind => 'library';
531+
523532
/// Libraries are not enclosed by anything.
524533
ModelElement get enclosingElement => null;
525534

@@ -830,6 +839,7 @@ class Class extends ModelElement implements EnclosedElement {
830839
return new TypeParameter(f, lib);
831840
}).toList();
832841

842+
@override
833843
String get kind => 'class';
834844

835845
String get fileName => "${name}-class.html";
@@ -1312,6 +1322,9 @@ class ModelFunction extends ModelElement
13121322

13131323
String get fileName => "$name.html";
13141324

1325+
@override
1326+
String get kind => 'function';
1327+
13151328
@override
13161329
String get _href => '${library.dirName}/$fileName';
13171330
}
@@ -1327,6 +1340,9 @@ class Typedef extends ModelElement implements EnclosedElement {
13271340
}
13281341
}
13291342

1343+
@override
1344+
String get kind => 'typedef';
1345+
13301346
@override
13311347
ModelElement get enclosingElement => library;
13321348

@@ -1339,6 +1355,7 @@ class Typedef extends ModelElement implements EnclosedElement {
13391355
String get _href => '${library.dirName}/$fileName';
13401356
}
13411357

1358+
// TODO: rename this to property
13421359
class Field extends ModelElement implements EnclosedElement {
13431360
String _constantValue;
13441361
bool _isInherited = false;
@@ -1355,6 +1372,9 @@ class Field extends ModelElement implements EnclosedElement {
13551372
_setModelType();
13561373
}
13571374

1375+
@override
1376+
String get kind => 'property';
1377+
13581378
@override
13591379
ModelElement get enclosingElement =>
13601380
new ModelElement.from(_field.enclosingElement, library);
@@ -1476,6 +1496,9 @@ class Constructor extends ModelElement implements EnclosedElement {
14761496
Constructor(ConstructorElement element, Library library)
14771497
: super(element, library);
14781498

1499+
@override
1500+
String get kind => 'constructor';
1501+
14791502
@override
14801503
ModelElement get enclosingElement =>
14811504
new ModelElement.from(_constructor.enclosingElement, library);
@@ -1523,6 +1546,9 @@ class Method extends ModelElement
15231546
_isInherited = true;
15241547
}
15251548

1549+
@override
1550+
String get kind => 'method';
1551+
15261552
@override
15271553
ModelElement get enclosingElement =>
15281554
new ModelElement.from(_method.enclosingElement, library);
@@ -1613,6 +1639,9 @@ class Accessor extends ModelElement implements EnclosedElement {
16131639
Accessor(PropertyAccessorElement element, Library library)
16141640
: super(element, library);
16151641

1642+
@override
1643+
String get kind => 'accessor';
1644+
16161645
@override
16171646
ModelElement get enclosingElement =>
16181647
new ModelElement.from(_accessor.enclosingElement, library);
@@ -1642,6 +1671,9 @@ class TopLevelVariable extends ModelElement implements EnclosedElement {
16421671
}
16431672
}
16441673

1674+
@override
1675+
String get kind => 'top-level property';
1676+
16451677
@override
16461678
ModelElement get enclosingElement => library;
16471679

@@ -1690,6 +1722,9 @@ class Parameter extends ModelElement implements EnclosedElement {
16901722
t, new ModelElement.from(t.element, package._getLibraryFor(t.element)));
16911723
}
16921724

1725+
@override
1726+
String get kind => 'parameter';
1727+
16931728
@override
16941729
ModelElement get enclosingElement =>
16951730
new ModelElement.from(_parameter.enclosingElement, library);
@@ -1740,6 +1775,9 @@ class TypeParameter extends ModelElement {
17401775
_modelType = new ElementType(_typeParameter.type, this);
17411776
}
17421777

1778+
@override
1779+
String get kind => 'type parameter';
1780+
17431781
TypeParameterElement get _typeParameter => element as TypeParameterElement;
17441782

17451783
String toString() => element.name;

0 commit comments

Comments
 (0)