Skip to content

Decouple href and from a model's filename #2096

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Dec 17, 2019
Merged
Show file tree
Hide file tree
Changes from 3 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
47 changes: 19 additions & 28 deletions lib/src/html/html_generator_instance.dart
Original file line number Diff line number Diff line change
Expand Up @@ -289,8 +289,7 @@ class HtmlGeneratorInstance {
TemplateData data =
CategoryTemplateData(_options, packageGraph, _templateHelper, category);

_build(path.joinAll(category.href.split('/')), _templates.categoryTemplate,
data);
_build(category.filePath, _templates.categoryTemplate, data);
}

void generateLibrary(PackageGraph packageGraph, Library lib) {
Expand All @@ -302,107 +301,97 @@ class HtmlGeneratorInstance {
TemplateData data =
LibraryTemplateData(_options, packageGraph, _templateHelper, lib);

_build(path.join(lib.dirName, '${lib.fileName}'),
_templates.libraryTemplate, data);
_build(lib.filePath, _templates.libraryTemplate, data);
}

void generateClass(PackageGraph packageGraph, Library lib, Class clazz) {
TemplateData data =
ClassTemplateData(_options, packageGraph, _templateHelper, lib, clazz);
_build(path.joinAll(clazz.href.split('/')), _templates.classTemplate, data);
_build(clazz.filePath, _templates.classTemplate, data);
}

void generateExtension(
PackageGraph packageGraph, Library lib, Extension ext) {
PackageGraph packageGraph, Library lib, Extension extension) {
TemplateData data = ExtensionTemplateData(
_options, packageGraph, _templateHelper, lib, ext);
_build(
path.joinAll(ext.href.split('/')), _templates.extensionTemplate, data);
_options, packageGraph, _templateHelper, lib, extension);
_build(extension.filePath, _templates.extensionTemplate, data);
}

void generateMixins(PackageGraph packageGraph, Library lib, Mixin mixin) {
TemplateData data =
MixinTemplateData(_options, packageGraph, _templateHelper, lib, mixin);
_build(path.joinAll(mixin.href.split('/')), _templates.mixinTemplate, data);
_build(mixin.filePath, _templates.mixinTemplate, data);
}

void generateConstructor(PackageGraph packageGraph, Library lib, Class clazz,
Constructor constructor) {
TemplateData data = ConstructorTemplateData(
_options, packageGraph, _templateHelper, lib, clazz, constructor);

_build(path.joinAll(constructor.href.split('/')),
_templates.constructorTemplate, data);
_build(constructor.filePath, _templates.constructorTemplate, data);
}

void generateEnum(PackageGraph packageGraph, Library lib, Enum eNum) {
TemplateData data =
EnumTemplateData(_options, packageGraph, _templateHelper, lib, eNum);

_build(path.joinAll(eNum.href.split('/')), _templates.enumTemplate, data);
_build(eNum.filePath, _templates.enumTemplate, data);
}

void generateFunction(
PackageGraph packageGraph, Library lib, ModelFunction function) {
TemplateData data = FunctionTemplateData(
_options, packageGraph, _templateHelper, lib, function);

_build(path.joinAll(function.href.split('/')), _templates.functionTemplate,
data);
_build(function.filePath, _templates.functionTemplate, data);
}

void generateMethod(
PackageGraph packageGraph, Library lib, Container clazz, Method method) {
TemplateData data = MethodTemplateData(
_options, packageGraph, _templateHelper, lib, clazz, method);

_build(
path.joinAll(method.href.split('/')), _templates.methodTemplate, data);
_build(method.filePath, _templates.methodTemplate, data);
}

void generateConstant(
PackageGraph packageGraph, Library lib, Container clazz, Field property) {
TemplateData data = ConstantTemplateData(
_options, packageGraph, _templateHelper, lib, clazz, property);

_build(path.joinAll(property.href.split('/')), _templates.constantTemplate,
data);
_build(property.filePath, _templates.constantTemplate, data);
}

void generateProperty(
PackageGraph packageGraph, Library lib, Container clazz, Field property) {
TemplateData data = PropertyTemplateData(
_options, packageGraph, _templateHelper, lib, clazz, property);

_build(path.joinAll(property.href.split('/')), _templates.propertyTemplate,
data);
_build(property.filePath, _templates.propertyTemplate, data);
}

void generateTopLevelProperty(
PackageGraph packageGraph, Library lib, TopLevelVariable property) {
TemplateData data = TopLevelPropertyTemplateData(
_options, packageGraph, _templateHelper, lib, property);

_build(path.joinAll(property.href.split('/')),
_templates.topLevelPropertyTemplate, data);
_build(property.filePath, _templates.topLevelPropertyTemplate, data);
}

void generateTopLevelConstant(
PackageGraph packageGraph, Library lib, TopLevelVariable property) {
TemplateData data = TopLevelConstTemplateData(
_options, packageGraph, _templateHelper, lib, property);

_build(path.joinAll(property.href.split('/')),
_templates.topLevelConstantTemplate, data);
_build(property.filePath, _templates.topLevelConstantTemplate, data);
}

void generateTypeDef(
PackageGraph packageGraph, Library lib, Typedef typeDef) {
TemplateData data = TypedefTemplateData(
_options, packageGraph, _templateHelper, lib, typeDef);

_build(path.joinAll(typeDef.href.split('/')), _templates.typeDefTemplate,
data);
_build(typeDef.filePath, _templates.typeDefTemplate, data);
}

// TODO: change this to use resource_loader
Expand All @@ -420,9 +409,11 @@ class HtmlGeneratorInstance {
}

void _build(String filename, Template template, TemplateData data) {
// Replaces '/' separators with proper separators for the platform.
String outFile = path.joinAll(filename.split('/'));
String content = template.renderString(data);

_writer(filename, content);
_writer(outFile, content);
if (data.self is Indexable) _indexedElements.add(data.self as Indexable);
}
}
3 changes: 3 additions & 0 deletions lib/src/model/accessor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,9 @@ class Accessor extends ModelElement implements EnclosedElement {
return ModelElement.from(_accessor.enclosingElement, library, packageGraph);
}

@override
String get filePath => enclosingCombo.filePath;

@override
bool get isCanonical => enclosingCombo.isCanonical;

Expand Down
2 changes: 2 additions & 0 deletions lib/src/model/category.dart
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ class Category extends Nameable
@override
String get fullyQualifiedName => name;

String get filePath => 'topics/${name}-topic.html';

@override
String get href =>
isCanonical ? '${package.baseHref}topics/${name}-topic.html' : null;
Expand Down
3 changes: 3 additions & 0 deletions lib/src/model/class.dart
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,9 @@ class Class extends Container
@override
String get fileName => "${name}-class.html";

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

String get fullkind {
if (isAbstract) return 'abstract $kind';
return kind;
Expand Down
6 changes: 5 additions & 1 deletion lib/src/model/constructor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ class Constructor extends ModelElement
ModelElement get enclosingElement =>
ModelElement.from(_constructor.enclosingElement, library, packageGraph);

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

String get fullKind {
if (isConst) return 'const $kind';
if (isFactory) return 'factory $kind';
Expand All @@ -53,7 +57,7 @@ class Constructor extends ModelElement
}
assert(canonicalLibrary != null);
assert(canonicalLibrary == library);
return '${package.baseHref}${enclosingElement.library.dirName}/${enclosingElement.name}/$name.html';
return '${package.baseHref}${enclosingElement.library.dirName}/${enclosingElement.name}/$fileName';
}

@override
Expand Down
3 changes: 3 additions & 0 deletions lib/src/model/dynamic.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,7 @@ class Dynamic extends ModelElement {

@override
String get linkedName => 'dynamic';

@override
String get filePath => null;
}
3 changes: 3 additions & 0 deletions lib/src/model/extension.dart
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,9 @@ class Extension extends Container
return _allModelElements;
}

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

@override
String get href {
if (!identical(canonicalModelElement, this)) {
Expand Down
4 changes: 4 additions & 0 deletions lib/src/model/field.dart
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ class Field extends ModelElement
return _enclosingClass;
}

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

@override
String get href {
if (!identical(canonicalModelElement, this)) {
Expand Down
3 changes: 3 additions & 0 deletions lib/src/model/library.dart
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,9 @@ class Library extends ModelElement with Categorization, TopLevelContainer {
@override
String get fileName => '$dirName-library.html';

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

List<ModelFunction> _functions;

@override
Expand Down
4 changes: 4 additions & 0 deletions lib/src/model/method.dart
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ class Method extends ModelElement
return _enclosingContainer;
}

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

String get fullkind {
if (_method.isAbstract) return 'abstract $kind';
return kind;
Expand Down
2 changes: 2 additions & 0 deletions lib/src/model/model_element.dart
Original file line number Diff line number Diff line change
Expand Up @@ -791,6 +791,8 @@ abstract class ModelElement extends Canonicalization

String get fileName => "${name}.html";

String get filePath;

/// Returns the fully qualified name.
///
/// For example: libraryName.className.methodName
Expand Down
3 changes: 3 additions & 0 deletions lib/src/model/model_function.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ class ModelFunctionTyped extends ModelElement
@override
ModelElement get enclosingElement => library;

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

@override
String get href {
if (!identical(canonicalModelElement, this)) {
Expand Down
5 changes: 5 additions & 0 deletions lib/src/model/parameter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ class Parameter extends ModelElement implements EnclosedElement {
_parameter.defaultValueCode.isNotEmpty;
}

@override
String get filePath {
throw StateError('filePath not implemented for parameters');
}

@override
String get href {
throw StateError('href not implemented for parameters');
Expand Down
3 changes: 3 additions & 0 deletions lib/src/model/top_level_variable.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ class TopLevelVariable extends ModelElement
@override
ModelElement get enclosingElement => library;

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

@override
String get href {
if (!identical(canonicalModelElement, this)) {
Expand Down
4 changes: 4 additions & 0 deletions lib/src/model/type_parameter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ class TypeParameter extends ModelElement {
? ModelElement.from(element.enclosingElement, library, packageGraph)
: null;

@override
String get filePath =>
'${enclosingElement.library.dirName}/${enclosingElement.name}/$name';

@override
String get href {
if (!identical(canonicalModelElement, this)) {
Expand Down
3 changes: 3 additions & 0 deletions lib/src/model/typedef.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ class Typedef extends ModelElement
return Iterable.empty();
}

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

@override
String get href {
if (!identical(canonicalModelElement, this)) {
Expand Down