44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const parseStructureFile_1 = __importDefault(require("./parseStructureFile"));
|
|
const summary_1 = __importDefault(require("../models/summary"));
|
|
const modifiers_1 = __importDefault(require("../modifiers"));
|
|
const SummaryModifier = modifiers_1.default.Summary;
|
|
/**
|
|
Parse summary in a book, the summary can only be parsed
|
|
if the readme as be detected before.
|
|
|
|
@param {Book} book
|
|
@return {Promise<Book>}
|
|
*/
|
|
function parseSummary(book) {
|
|
const readme = book.getReadme();
|
|
const logger = book.getLogger();
|
|
const readmeFile = readme.getFile();
|
|
return (0, parseStructureFile_1.default)(book, "summary").spread((file, result) => {
|
|
let summary;
|
|
if (!file) {
|
|
logger.warn.ln("no summary file in this book");
|
|
summary = new summary_1.default();
|
|
}
|
|
else {
|
|
logger.debug.ln("summary file found at", file.getPath());
|
|
summary = summary_1.default.createFromParts(file, result.parts);
|
|
}
|
|
// Insert readme as first entry if not in SUMMARY.md
|
|
const readmeArticle = summary.getByPath(readmeFile.getPath());
|
|
if (readmeFile.exists() && !readmeArticle) {
|
|
summary = SummaryModifier.unshiftArticle(summary, {
|
|
title: "Introduction",
|
|
ref: readmeFile.getPath()
|
|
});
|
|
}
|
|
// Set new summary
|
|
return book.setSummary(summary);
|
|
});
|
|
}
|
|
exports.default = parseSummary;
|