Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/dartdoc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ library;
export 'package:dartdoc/src/dartdoc.dart';
export 'package:dartdoc/src/dartdoc_options.dart';
export 'package:dartdoc/src/generator/generator.dart';
export 'package:dartdoc/src/model/indexable.dart' show Kind;
export 'package:dartdoc/src/model/kind.dart';
export 'package:dartdoc/src/model/package_builder.dart';
export 'package:dartdoc/src/model/package_graph.dart';
export 'package:dartdoc/src/package_config_provider.dart';
Expand Down
2 changes: 1 addition & 1 deletion lib/src/generator/generator_backend.dart
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ abstract class GeneratorBackend {
}

/// Emits a JSON catalog of [indexedElements] for use with a search index.
void generateSearchIndex(List<Indexable> indexedElements) {
void generateSearchIndex(List<Documentable> indexedElements) {
var json = generator_util.generateSearchIndexJson(
indexedElements,
packageOrder: options.packageOrder,
Expand Down
4 changes: 2 additions & 2 deletions lib/src/generator/generator_frontend.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class GeneratorFrontEnd implements Generator {

/// Traverses the [packageGraph] and generates documentation for all contained
/// elements.
List<Indexable> _generateDocs(PackageGraph packageGraph) {
List<Documentable> _generateDocs(PackageGraph packageGraph) {
runtimeStats.resetAccumulators({
'writtenCategoryFileCount',
'writtenClassFileCount',
Expand All @@ -69,7 +69,7 @@ class GeneratorFrontEnd implements Generator {
_generatorBackend.generatePackage(
packageGraph, packageGraph.defaultPackage);

var indexAccumulator = <Indexable>[];
var indexAccumulator = <Documentable>[];
var multiplePackages = packageGraph.localPackages.length > 1;

void generateConstants(Container container, Library library) {
Expand Down
13 changes: 7 additions & 6 deletions lib/src/generator/generator_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ import 'dart:convert';

import 'package:collection/collection.dart';
import 'package:dartdoc/src/model/directives/categorization.dart';
import 'package:dartdoc/src/model/indexable.dart';
import 'package:dartdoc/src/model/documentable.dart';
import 'package:dartdoc/src/model/inheritable.dart';
import 'package:dartdoc/src/model/library.dart';
import 'package:dartdoc/src/model/model_element.dart';
import 'package:dartdoc/src/model/nameable.dart';

String generateCategoryJson(Iterable<Categorization> categories, bool pretty) {
final indexItems = [
Expand Down Expand Up @@ -37,7 +39,7 @@ String generateCategoryJson(Iterable<Categorization> categories, bool pretty) {
/// [indexedElements] and [packageOrder].
///
/// Passing `pretty: true` will use a [JsonEncoder] with a single-space indent.
String generateSearchIndexJson(Iterable<Indexable> indexedElements,
String generateSearchIndexJson(Iterable<Documentable> indexedElements,
{required List<String> packageOrder, required bool pretty}) {
var indexItems = <Map<String, Object?>>[];

Expand All @@ -52,8 +54,7 @@ String generateSearchIndexJson(Iterable<Indexable> indexedElements,
'qualifiedName': element.canonicalQualifiedName,
'href': element.href,
'kind': element.kind.index,
// TODO(srawlins): Only include this for [Inheritable] items.
'overriddenDepth': element.overriddenDepth,
if (element is Inheritable) 'overriddenDepth': element.overriddenDepth,
};

if (element is ModelElement) {
Expand Down Expand Up @@ -131,7 +132,7 @@ final _htmlTagPattern =
RegExp(r'<[^>]*>', multiLine: true, caseSensitive: true);

// Compares two elements, first by fully qualified name, then by kind.
int _compareElementRepresentations(Indexable a, Indexable b) {
int _compareElementRepresentations(Documentable a, Documentable b) {
final value =
compareNatural(a.canonicalQualifiedName, b.canonicalQualifiedName);
if (value == 0) {
Expand All @@ -140,7 +141,7 @@ int _compareElementRepresentations(Indexable a, Indexable b) {
return value;
}

extension on Indexable {
extension on Nameable {
/// The fully qualified name of this element, but using the canonical library,
/// if it has one.
String get canonicalQualifiedName {
Expand Down
1 change: 1 addition & 0 deletions lib/src/generator/template_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
/// @docImport 'generator_backend.dart';
library;

import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';

typedef ContainerSidebar = String Function(
Expand Down
75 changes: 3 additions & 72 deletions lib/src/generator/templates.runtime_renderers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -841,7 +841,6 @@ class _Renderer_Category extends RendererBase<Category> {
..._Renderer_MarkdownFileDocumentation.propertyMap<CT_>(),
..._Renderer_LibraryContainer.propertyMap<CT_>(),
..._Renderer_TopLevelContainer.propertyMap<CT_>(),
..._Renderer_Indexable.propertyMap<CT_>(),
'aboveSidebarPath': Property(
getValue: (CT_ c) => c.aboveSidebarPath,
renderVariable:
Expand Down Expand Up @@ -6888,73 +6887,6 @@ class _Renderer_HasNoPage extends RendererBase<HasNoPage> {
}
}

class _Renderer_Indexable extends RendererBase<Indexable> {
static final Map<Type, Object> _propertyMapCache = {};
static Map<String, Property<CT_>> propertyMap<CT_ extends Indexable>() =>
_propertyMapCache.putIfAbsent(
CT_,
() => {
'href': Property(
getValue: (CT_ c) => c.href,
renderVariable:
(CT_ c, Property<CT_> self, List<String> remainingNames) {
if (remainingNames.isEmpty) {
return self.getValue(c).toString();
}
var name = remainingNames.first;
var nextProperty =
_Renderer_String.propertyMap().getValue(name);
return nextProperty.renderVariable(
self.getValue(c) as String,
nextProperty,
[...remainingNames.skip(1)]);
},
isNullValue: (CT_ c) => c.href == null,
renderValue: (CT_ c, RendererBase<CT_> r,
List<MustachioNode> ast, StringSink sink) {
_render_String(c.href!, ast, r.template, sink, parent: r);
},
),
'kind': Property(
getValue: (CT_ c) => c.kind,
renderVariable: (CT_ c, Property<CT_> self,
List<String> remainingNames) =>
self.renderSimpleVariable(c, remainingNames, 'Kind'),
isNullValue: (CT_ c) => false,
renderValue: (CT_ c, RendererBase<CT_> r,
List<MustachioNode> ast, StringSink sink) {
renderSimple(c.kind, ast, r.template, sink,
parent: r, getters: _invisibleGetters['Kind']!);
},
),
'overriddenDepth': Property(
getValue: (CT_ c) => c.overriddenDepth,
renderVariable: (CT_ c, Property<CT_> self,
List<String> remainingNames) =>
self.renderSimpleVariable(c, remainingNames, 'int'),
isNullValue: (CT_ c) => c.overriddenDepth == null,
renderValue: (CT_ c, RendererBase<CT_> r,
List<MustachioNode> ast, StringSink sink) {
renderSimple(c.overriddenDepth, ast, r.template, sink,
parent: r, getters: _invisibleGetters['int']!);
},
),
}) as Map<String, Property<CT_>>;

_Renderer_Indexable(Indexable context, RendererBase<Object>? parent,
Template template, StringSink sink)
: super(context, parent, template, sink);

@override
Property<Indexable>? getProperty(String key) {
if (propertyMap<Indexable>().containsKey(key)) {
return propertyMap<Indexable>()[key];
} else {
return null;
}
}
}

class _Renderer_Inheritable extends RendererBase<Inheritable> {
static final Map<Type, Object> _propertyMapCache = {};
static Map<String, Property<CT_>> propertyMap<CT_ extends Inheritable>() =>
Expand Down Expand Up @@ -10072,7 +10004,6 @@ class _Renderer_ModelElement extends RendererBase<ModelElement> {
..._Renderer_Locatable.propertyMap<CT_>(),
..._Renderer_Nameable.propertyMap<CT_>(),
..._Renderer_SourceCode.propertyMap<CT_>(),
..._Renderer_Indexable.propertyMap<CT_>(),
..._Renderer_FeatureSet.propertyMap<CT_>(),
..._Renderer_DocumentationComment.propertyMap<CT_>(),
'annotations': Property(
Expand Down Expand Up @@ -12313,7 +12244,7 @@ class _Renderer_Package extends RendererBase<Package> {
}
}

String renderIndex(PackageTemplateData context, Template template) {
String renderSearchPage(PackageTemplateData context, Template template) {
var buffer = StringBuffer();
_render_PackageTemplateData(context, template.ast, template, buffer);
return buffer.toString();
Expand Down Expand Up @@ -12551,13 +12482,13 @@ class _Renderer_PackageTemplateData extends RendererBase<PackageTemplateData> {
}
}

String renderError(PackageTemplateData context, Template template) {
String renderIndex(PackageTemplateData context, Template template) {
var buffer = StringBuffer();
_render_PackageTemplateData(context, template.ast, template, buffer);
return buffer.toString();
}

String renderSearchPage(PackageTemplateData context, Template template) {
String renderError(PackageTemplateData context, Template template) {
var buffer = StringBuffer();
_render_PackageTemplateData(context, template.ast, template, buffer);
return buffer.toString();
Expand Down
1 change: 1 addition & 0 deletions lib/src/model/accessor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember;
import 'package:collection/collection.dart' show IterableExtension;
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/utils.dart';
import 'package:dartdoc/src/warnings.dart';
Expand Down
4 changes: 2 additions & 2 deletions lib/src/model/category.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/warnings.dart';

Expand All @@ -18,8 +19,7 @@ class Category
Locatable,
MarkdownFileDocumentation,
LibraryContainer,
TopLevelContainer,
Indexable
TopLevelContainer
implements Documentable {
/// The package in which this category is contained.
///
Expand Down
1 change: 1 addition & 0 deletions lib/src/model/class.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:analyzer/dart/element/element.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';

/// A [Container] defined with a `class` declaration.
Expand Down
1 change: 1 addition & 0 deletions lib/src/model/constructor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/source/line_info.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/model_utils.dart';

Expand Down
2 changes: 1 addition & 1 deletion lib/src/model/directives/categorization.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ final RegExp _categoryRegExp =
RegExp(r'[ ]*{@(category|subCategory) (.+?)}[ ]*\n?', multiLine: true);

/// Mixin parsing the `@category` directive for ModelElements.
mixin Categorization on DocumentationComment implements Indexable {
mixin Categorization on DocumentationComment {
@override
String buildDocumentationAddition(String rawDocs) =>
_stripAndSetDartdocCategories(super.buildDocumentationAddition(rawDocs));
Expand Down
6 changes: 4 additions & 2 deletions lib/src/model/documentable.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/io_utils.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/warnings.dart';

import 'model.dart';
Expand All @@ -29,10 +30,11 @@ abstract class Documentable with Nameable {

DartdocOptionContext get config;

String? get href;

/// A human-friendly name for the kind of element this is.
Kind get kind;

String? get href;

/// The full path of the sidebar for elements "above" this element.
///
/// A `null` value indicates no content is displayed in the "above" sidebar.
Expand Down
1 change: 1 addition & 0 deletions lib/src/model/dynamic.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';

class Dynamic extends ModelElement with HasNoPage {
Expand Down
1 change: 1 addition & 0 deletions lib/src/model/enum.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/model_utils.dart' as model_utils;
import 'package:meta/meta.dart';
Expand Down
1 change: 1 addition & 0 deletions lib/src/model/extension.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/model_utils.dart';
import 'package:meta/meta.dart';
Expand Down
1 change: 1 addition & 0 deletions lib/src/model/extension_type.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:meta/meta.dart';

Expand Down
1 change: 1 addition & 0 deletions lib/src/model/field.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'dart:convert';

import 'package:analyzer/dart/element/element.dart';
import 'package:dartdoc/src/model/attribute.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';

class Field extends ModelElement
Expand Down
5 changes: 4 additions & 1 deletion lib/src/model/inheritable.dart
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,10 @@ mixin Inheritable on ContainerMember {
return isOverride;
}();

@override
/// The depth of overrides at which this element lives.
///
/// Just a count of how long the chain of this element's `overriddenElement`.
/// For use in ranking search results.
int get overriddenDepth {
var depth = 0;
var e = this;
Expand Down
13 changes: 1 addition & 12 deletions lib/src/model/indexable.dart → lib/src/model/kind.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:dartdoc/src/model/model.dart';

enum Kind {
accessor,
constant,
Expand Down Expand Up @@ -82,12 +80,3 @@ enum Kind {
_ => throw ArgumentError('Unknown kind "$value"'),
};
}

/// Something able to be indexed.
mixin Indexable implements Nameable {
String? get href;

Kind get kind;

int? get overriddenDepth => 0;
}
1 change: 1 addition & 0 deletions lib/src/model/library.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/scope.dart';
import 'package:analyzer/source/line_info.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/package_meta.dart' show PackageMeta;
import 'package:dartdoc/src/warnings.dart';
Expand Down
1 change: 1 addition & 0 deletions lib/src/model/method.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember;
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/attribute.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';

class Method extends ModelElement
Expand Down
1 change: 1 addition & 0 deletions lib/src/model/mixin.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/model_utils.dart' as model_utils;
import 'package:dartdoc/src/special_elements.dart';
Expand Down
1 change: 0 additions & 1 deletion lib/src/model/model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ export 'extension_type.dart';
export 'field.dart';
export 'getter_setter_combo.dart';
export 'has_no_page.dart';
export 'indexable.dart';
export 'inheritable.dart';
export 'inheriting_container.dart';
export 'library.dart';
Expand Down
Loading