diff --git a/lib/src/model/enum.dart b/lib/src/model/enum.dart index 91c2e68a91..a534a3676d 100644 --- a/lib/src/model/enum.dart +++ b/lib/src/model/enum.dart @@ -63,6 +63,14 @@ class EnumField extends Field { } } + @override + String get extendedDocLink { + // Ordinal members don't get extended doc links. Inherited members + // (e.g. hashcode) follow the normal rules. + if (index != null) return ''; + return super.extendedDocLink; + } + @override String get href { if (!identical(canonicalModelElement, this)) { diff --git a/lib/src/model/getter_setter_combo.dart b/lib/src/model/getter_setter_combo.dart index 8684fa4952..2364bf8bde 100644 --- a/lib/src/model/getter_setter_combo.dart +++ b/lib/src/model/getter_setter_combo.dart @@ -135,7 +135,7 @@ mixin GetterSetterCombo on ModelElement { String get oneLineDoc { if (_oneLineDoc == null) { if (!hasAccessorsWithDocs) { - _oneLineDoc = computeOneLineDoc(); + _oneLineDoc = super.oneLineDoc; } else { StringBuffer buffer = StringBuffer(); if (hasPublicGetter && getter.oneLineDoc.isNotEmpty) { diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart index 08835728f9..1307754443 100644 --- a/lib/src/model/model_element.dart +++ b/lib/src/model/model_element.dart @@ -797,7 +797,7 @@ abstract class ModelElement extends Canonicalization /// does not exist. String get extendedDocLink { if (hasExtendedDocumentation) { - return '[...]'; + return ModelElementRendererHtml().renderExtendedDocLink(this); } return ''; } @@ -977,19 +977,8 @@ abstract class ModelElement extends Canonicalization @override String get name => element.name; - // TODO(jcollins-g): refactor once dartdoc will only run in a VM where mixins - // calling super is allowed (SDK constraint >= 2.1.0). - String computeOneLineDoc() => - '${_documentation.asOneLiner}${extendedDocLink.isEmpty ? "" : " $extendedDocLink"}'; - String _oneLineDoc; - @override - String get oneLineDoc { - if (_oneLineDoc == null) { - _oneLineDoc = computeOneLineDoc(); - } - return _oneLineDoc; - } + String get oneLineDoc => _documentation.asOneLiner; Member get originalMember => _originalMember; diff --git a/lib/src/render/model_element_renderer.dart b/lib/src/render/model_element_renderer.dart index 700e3f2dae..9d274d4fe4 100644 --- a/lib/src/render/model_element_renderer.dart +++ b/lib/src/render/model_element_renderer.dart @@ -7,6 +7,8 @@ import 'package:dartdoc/src/model/model_element.dart'; abstract class ModelElementRenderer { String renderLinkedName(ModelElement modelElement); + String renderExtendedDocLink(ModelElement modelElement); + String renderYoutubeUrl(String youTubeId, String aspectRatio); String renderAnimation( @@ -20,6 +22,11 @@ class ModelElementRendererHtml extends ModelElementRenderer { return '${modelElement.name}'; } + @override + String renderExtendedDocLink(ModelElement modelElement) { + return '[...]'; + } + @override String renderYoutubeUrl(String youTubeId, String aspectRatio) { // Blank lines before and after, and no indenting at the beginning and end diff --git a/lib/templates/_callable.html b/lib/templates/_callable.html index 967230cde9..7fb911b573 100644 --- a/lib/templates/_callable.html +++ b/lib/templates/_callable.html @@ -5,6 +5,6 @@ {{>categorization}} - {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{>features}} diff --git a/lib/templates/_class.html b/lib/templates/_class.html index 883309d075..08ffcf2436 100644 --- a/lib/templates/_class.html +++ b/lib/templates/_class.html @@ -2,5 +2,5 @@ {{{linkedName}}}{{{linkedGenericParameters}}} {{>categorization}}
- {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}}
diff --git a/lib/templates/_constant.html b/lib/templates/_constant.html index 41b7faf683..72d367c667 100644 --- a/lib/templates/_constant.html +++ b/lib/templates/_constant.html @@ -4,7 +4,7 @@ {{>categorization}}
- {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{>features}}
{{{ constantValueTruncated }}} diff --git a/lib/templates/_extension.html b/lib/templates/_extension.html index d35e458e3c..33754284c7 100644 --- a/lib/templates/_extension.html +++ b/lib/templates/_extension.html @@ -2,6 +2,6 @@ {{{linkedName}}} {{>categorization}}
- {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}}
diff --git a/lib/templates/_library.html b/lib/templates/_library.html index 5513d2799f..5263ab2d5e 100644 --- a/lib/templates/_library.html +++ b/lib/templates/_library.html @@ -2,5 +2,5 @@ {{{ linkedName }}} {{>categorization}}
- {{#isDocumented}}{{{ oneLineDoc }}}{{/isDocumented}} -
\ No newline at end of file + {{#isDocumented}}{{{ oneLineDoc }}} {{{ extendedDocLink }}}{{/isDocumented}} + diff --git a/lib/templates/_mixin.html b/lib/templates/_mixin.html index 883309d075..08ffcf2436 100644 --- a/lib/templates/_mixin.html +++ b/lib/templates/_mixin.html @@ -2,5 +2,5 @@ {{{linkedName}}}{{{linkedGenericParameters}}} {{>categorization}}
- {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}}
diff --git a/lib/templates/_property.html b/lib/templates/_property.html index 6921029b47..09f61f67e0 100644 --- a/lib/templates/_property.html +++ b/lib/templates/_property.html @@ -3,6 +3,6 @@ {{{ arrow }}} {{{ linkedReturnType }}} {{>categorization}} - {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{>features}} diff --git a/lib/templates/class.html b/lib/templates/class.html index ae308d6eae..8a6d799ee4 100644 --- a/lib/templates/class.html +++ b/lib/templates/class.html @@ -88,7 +88,7 @@

Constructors

{{{linkedName}}}({{{ linkedParams }}})
- {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{#isConst}}
const
{{/isConst}} diff --git a/lib/templates/enum.html b/lib/templates/enum.html index 497f7962a7..1d8a18f49b 100644 --- a/lib/templates/enum.html +++ b/lib/templates/enum.html @@ -91,7 +91,7 @@

Constructors

{{{linkedName}}}({{{ linkedParams }}})
- {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{#isConst}}
const
{{/isConst}} diff --git a/lib/templates/mixin.html b/lib/templates/mixin.html index ddf7435a51..da5f418c71 100644 --- a/lib/templates/mixin.html +++ b/lib/templates/mixin.html @@ -88,7 +88,7 @@

Constructors

{{{linkedName}}}({{{ linkedParams }}})
- {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{#isConst}}
const
{{/isConst}} diff --git a/test/model_test.dart b/test/model_test.dart index 58572a73ca..5f52a1081a 100644 --- a/test/model_test.dart +++ b/test/model_test.dart @@ -9,8 +9,9 @@ import 'dart:io'; import 'package:dartdoc/dartdoc.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/render/category_renderer.dart'; -import 'package:dartdoc/src/render/parameter_renderer.dart'; import 'package:dartdoc/src/render/enum_field_renderer.dart'; +import 'package:dartdoc/src/render/model_element_renderer.dart'; +import 'package:dartdoc/src/render/parameter_renderer.dart'; import 'package:dartdoc/src/render/typedef_renderer.dart'; import 'package:dartdoc/src/warnings.dart'; import 'package:test/test.dart'; @@ -584,7 +585,7 @@ void main() { expect( fakeLibrary.oneLineDoc, equals( - 'WOW FAKE PACKAGE IS BEST PACKAGE [...]')); + 'WOW FAKE PACKAGE IS BEST PACKAGE')); }); test('has properties', () { @@ -1196,7 +1197,7 @@ void main() { expect( add.oneLineDoc, equals( - 'Adds value to the end of this list,\nextending the length by one. [...]')); + 'Adds value to the end of this list,\nextending the length by one.')); }); test( @@ -1322,8 +1323,10 @@ void main() { }); test('bullet points work in top level variables', () { - expect(bulletDoced.oneLineDoc, - contains('[...]')); + expect( + bulletDoced.extendedDocLink, + equals( + ModelElementRendererHtml().renderExtendedDocLink(bulletDoced))); expect(bulletDoced.documentationAsHtml, contains('
  • ')); }); }); @@ -1999,6 +2002,7 @@ void main() { expect(dog.isConst, isTrue); expect( dog.constantValue, equals(EnumFieldRendererHtml().renderValue(dog))); + expect(dog.extendedDocLink, equals('')); }); test('constants have correct indicies', () { @@ -2757,10 +2761,11 @@ String topLevelFunction(int param1, bool param2, Cool coolBeans, test('has extended documentation', () { expect(lengthX.hasExtendedDocumentation, isTrue); - expect( - lengthX.oneLineDoc, - equals( - 'Returns a length. [...]')); + expect(lengthX.oneLineDoc, equals('Returns a length.')); + // TODO(jdkoren): This is left here to have at least one literal matching + // test for extendedDocLink. Move this when extracting renderer tests. + expect(lengthX.extendedDocLink, + equals('[...]')); expect(lengthX.documentation, contains('the fourth dimension')); expect(lengthX.documentation, isNot(contains('[...]'))); }); diff --git a/testing/test_package_custom_templates/templates/class.html b/testing/test_package_custom_templates/templates/class.html index 76cb435d30..5dc009393c 100644 --- a/testing/test_package_custom_templates/templates/class.html +++ b/testing/test_package_custom_templates/templates/class.html @@ -18,7 +18,7 @@

    Constructors

    {{{linkedName}}}({{{ linkedParams }}})
    - {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}}
    {{/publicConstructors}} @@ -30,7 +30,7 @@

    Constructors

    Methods

    {{#allPublicInstanceMethods}} - {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{/allPublicInstanceMethods}}
    diff --git a/testing/test_package_custom_templates/templates/index.html b/testing/test_package_custom_templates/templates/index.html index 4c570d828f..1125df5449 100644 --- a/testing/test_package_custom_templates/templates/index.html +++ b/testing/test_package_custom_templates/templates/index.html @@ -20,7 +20,7 @@

    {{name}}

    {{/isFirstPackage}}
    {{#defaultCategory.publicLibraries}} - {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{/defaultCategory.publicLibraries}} {{#categoriesWithPublicLibraries}}

    {{name}}

    @@ -29,7 +29,7 @@

    {{name}}

    {{{ linkedName }}}
    - {{#isDocumented}}{{{ oneLineDoc }}}{{/isDocumented}} + {{#isDocumented}}{{{ oneLineDoc }}} {{{ extendedDocLink }}}{{/isDocumented}}
    {{/publicLibraries}} {{/categoriesWithPublicLibraries}} diff --git a/testing/test_package_custom_templates/templates/library.html b/testing/test_package_custom_templates/templates/library.html index cffa0ad69d..85fb066c18 100644 --- a/testing/test_package_custom_templates/templates/library.html +++ b/testing/test_package_custom_templates/templates/library.html @@ -19,7 +19,7 @@

    Classes

    {{{linkedName}}}{{{linkedGenericParameters}}}
    - {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}}
    {{/library.publicClasses}}
    @@ -33,7 +33,7 @@

    Functions

    {{#library.publicFunctions}} {{{linkedName}}}{{{linkedGenericParameters}}} - {{{ oneLineDoc }}} + {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{/library.publicFunctions}}