fromYamlMap static method
CategoryConfiguration
fromYamlMap(
- YamlMap yamlMap,
- String canonicalYamlPath,
- ResourceProvider resourceProvider
Implementation
static CategoryConfiguration fromYamlMap(YamlMap yamlMap,
String canonicalYamlPath, ResourceProvider resourceProvider) {
var newCategoryDefinitions = <String, CategoryDefinition>{};
for (var MapEntry(:key, value: categoryMap) in yamlMap.entries) {
var name = key.toString();
if (categoryMap is Map) {
var displayName = categoryMap['displayName']?.toString();
var documentationMarkdown = categoryMap['markdown']?.toString();
if (documentationMarkdown != null) {
documentationMarkdown = resourceProvider.pathContext.canonicalize(
resourceProvider.pathContext
.join(canonicalYamlPath, documentationMarkdown));
if (!resourceProvider.getFile(documentationMarkdown).exists) {
throw DartdocFileMissing(
'In categories definition for $name, "markdown" resolves to '
'the missing file $documentationMarkdown');
}
}
final externalItems = <ExternalItem>[];
var items = categoryMap['external'] as List?;
if (items != null) {
for (var item in items) {
if (item is! Map) {
throw DartdocOptionError("'external' field should be a map");
} else {
final itemName = item['name'] as String?;
if (itemName == null) {
throw DartdocOptionError(
"'external' item missing required field 'name'");
}
final itemUrl = item['url'] as String?;
if (itemUrl == null) {
throw DartdocOptionError(
"'external' item missing required field 'url'");
}
externalItems.add(ExternalItem(
name: itemName,
url: itemUrl,
docs: item['docs'] as String?,
));
}
}
}
newCategoryDefinitions[name] = CategoryDefinition(
name,
displayName,
documentationMarkdown,
externalItems: externalItems,
);
}
}
return CategoryConfiguration._(newCategoryDefinitions);
}