Skip to content

Commit 8ae0871

Browse files
committed
Determine file type based on documentation location
1 parent 4b0e6f7 commit 8ae0871

12 files changed

+32
-33
lines changed

lib/src/model/category.dart

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import 'package:dartdoc/src/dartdoc_options.dart';
99
import 'package:dartdoc/src/model/model.dart';
1010
import 'package:dartdoc/src/package_meta.dart';
1111
import 'package:dartdoc/src/render/category_renderer.dart';
12-
import 'package:dartdoc/src/render/filename_renderer.dart';
1312
import 'package:dartdoc/src/warnings.dart';
1413

1514
/// A category is a subcategory of a package, containing libraries tagged
@@ -121,7 +120,9 @@ class Category extends Nameable
121120
@override
122121
String get fullyQualifiedName => name;
123122

124-
String get filePath => _fileNameRenderer.renderFileName('topics/$name-topic');
123+
String get fileType => package.fileType;
124+
125+
String get filePath => 'topics/$name-topic.$fileType';
125126

126127
@override
127128
String get href => isCanonical ? '${package.baseHref}$filePath' : null;
@@ -202,7 +203,4 @@ class Category extends Nameable
202203

203204
CategoryRenderer get _categoryRenderer =>
204205
packageGraph.rendererFactory.categoryRenderer;
205-
206-
FileNameRenderer get _fileNameRenderer =>
207-
packageGraph.rendererFactory.fileNameRenderer;
208206
}

lib/src/model/class.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ class Class extends Container
184184
ModelElement get enclosingElement => library;
185185

186186
@override
187-
String get fileName => fileNameRenderer.renderFileName('$name-class');
187+
String get fileName => '$name-class.$fileType';
188188

189189
@override
190190
String get filePath => '${library.dirName}/$fileName';

lib/src/model/field.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,7 @@ class Field extends ModelElement
156156
FieldElement get field => (element as FieldElement);
157157

158158
@override
159-
String get fileName =>
160-
fileNameRenderer.renderFileName(isConst ? '$name-constant' : '$name');
159+
String get fileName => '${isConst ? '$name-constant' : name}.$fileType';
161160

162161
String _sourceCode;
163162

lib/src/model/library.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ class Library extends ModelElement with Categorization, TopLevelContainer {
375375
}
376376

377377
@override
378-
String get fileName => fileNameRenderer.renderFileName('$dirName-library');
378+
String get fileName => '$dirName-library.$fileType';
379379

380380
@override
381381
String get filePath => '${library.dirName}/$fileName';

lib/src/model/mixin.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class Mixin extends Class {
6464
bool get hasModifiers => super.hasModifiers || hasPublicSuperclassConstraints;
6565

6666
@override
67-
String get fileName => fileNameRenderer.renderFileName('$name-mixin');
67+
String get fileName => '$name-mixin.$fileType';
6868

6969
@override
7070
String get kind => 'mixin';

lib/src/model/model_element.dart

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import 'package:dartdoc/src/element_type.dart';
2525
import 'package:dartdoc/src/logging.dart';
2626
import 'package:dartdoc/src/model/model.dart';
2727
import 'package:dartdoc/src/model_utils.dart' as utils;
28-
import 'package:dartdoc/src/render/filename_renderer.dart';
2928
import 'package:dartdoc/src/render/model_element_renderer.dart';
3029
import 'package:dartdoc/src/render/parameter_renderer.dart';
3130
import 'package:dartdoc/src/source_linker.dart';
@@ -788,7 +787,9 @@ abstract class ModelElement extends Canonicalization
788787
return '';
789788
}
790789

791-
String get fileName => fileNameRenderer.renderFileName(name);
790+
String get fileName => '$name.$fileType';
791+
792+
String get fileType => package.fileType;
792793

793794
String get filePath;
794795

@@ -917,9 +918,6 @@ abstract class ModelElement extends Canonicalization
917918
return _linkedName;
918919
}
919920

920-
FileNameRenderer get fileNameRenderer =>
921-
packageGraph.rendererFactory.fileNameRenderer;
922-
923921
ModelElementRenderer get _modelElementRenderer =>
924922
packageGraph.rendererFactory.modelElementRenderer;
925923

lib/src/model/operator.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class Operator extends Method {
4444
if (friendlyNames.containsKey(actualName)) {
4545
actualName = "operator_${friendlyNames[actualName]}";
4646
}
47-
return fileNameRenderer.renderFileName(actualName);
47+
return '$actualName.$fileType';
4848
}
4949

5050
@override

lib/src/model/package.dart

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,19 @@ class Package extends LibraryContainer
181181
@override
182182
String get enclosingName => packageGraph.defaultPackageName;
183183

184-
String get filePath =>
185-
packageGraph.rendererFactory.fileNameRenderer.renderFileName('index');
184+
String get filePath => 'index.$fileType';
185+
186+
String get fileType {
187+
// TODO(jdkoren): Provide a way to determine file type of a remote package's
188+
// docs. Perhaps make this configurable through dartdoc options.
189+
// In theory, a remote package could be documented in any supported format.
190+
// In practice, devs depend on Dart, Flutter, and/or packages fetched
191+
// from pub.dev, and we know that all of those use html docs.
192+
if (package.documentedWhere == DocumentLocation.remote) {
193+
return 'html';
194+
}
195+
return packageGraph.rendererFactory.fileTypeRenderer.fileType;
196+
}
186197

187198
@override
188199
String get fullyQualifiedName => 'package:$name';

lib/src/model/top_level_variable.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,7 @@ class TopLevelVariable extends ModelElement
8585
}
8686

8787
@override
88-
String get fileName =>
89-
fileNameRenderer.renderFileName(isConst ? '$name-constant' : '$name');
88+
String get fileName => '${isConst ? '$name-constant' : name}.$fileType';
9089

9190
@override
9291
DefinedElementType get modelType => super.modelType;

lib/src/render/filename_renderer.dart renamed to lib/src/render/file_type_renderer.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
abstract class FileNameRenderer {
6-
String renderFileName(String name);
5+
abstract class FileTypeRenderer {
6+
String get fileType;
77
}
88

9-
class HtmlFileNameRenderer extends FileNameRenderer {
9+
class HtmlFileTypeRenderer extends FileTypeRenderer {
1010
@override
11-
String renderFileName(String name) => '$name.html';
11+
String get fileType => 'html';
1212
}

0 commit comments

Comments
 (0)