fix
This commit is contained in:
59
book/node_modules/honkit/lib/modifiers/summary/moveArticleAfter.js
generated
vendored
Normal file
59
book/node_modules/honkit/lib/modifiers/summary/moveArticleAfter.js
generated
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const is_1 = __importDefault(require("is"));
|
||||
const removeArticle_1 = __importDefault(require("./removeArticle"));
|
||||
const insertArticle_1 = __importDefault(require("./insertArticle"));
|
||||
/**
|
||||
Returns a new summary, with the an article moved after another
|
||||
article. Unlike `moveArticle`, does not ensure that the article
|
||||
will be found at the target's level plus one.
|
||||
|
||||
@param {Summary} summary
|
||||
@param {String|SummaryArticle} origin
|
||||
@param {String|SummaryArticle} afterTarget
|
||||
@return {Summary}
|
||||
*/
|
||||
function moveArticleAfter(summary, origin, afterTarget) {
|
||||
// Coerce to level
|
||||
const originLevel = is_1.default.string(origin) ? origin : origin.getLevel();
|
||||
const afterTargetLevel = is_1.default.string(afterTarget) ? afterTarget : afterTarget.getLevel();
|
||||
const article = summary.getByLevel(originLevel);
|
||||
const targetLevel = increment(afterTargetLevel);
|
||||
if (targetLevel < origin) {
|
||||
// Remove first
|
||||
const removed = (0, removeArticle_1.default)(summary, originLevel);
|
||||
// Insert then
|
||||
return (0, insertArticle_1.default)(removed, article, targetLevel);
|
||||
}
|
||||
else {
|
||||
// Insert right after first
|
||||
const inserted = (0, insertArticle_1.default)(summary, article, targetLevel);
|
||||
// Remove old one
|
||||
return (0, removeArticle_1.default)(inserted, originLevel);
|
||||
}
|
||||
}
|
||||
/**
|
||||
@param {string}
|
||||
@return {Array<Number>}
|
||||
*/
|
||||
function levelToArray(l) {
|
||||
return l.split(".").map((char) => {
|
||||
return parseInt(char, 10);
|
||||
});
|
||||
}
|
||||
/**
|
||||
@param {Array<Number>}
|
||||
@return {string}
|
||||
*/
|
||||
function arrayToLevel(a) {
|
||||
return a.join(".");
|
||||
}
|
||||
function increment(level) {
|
||||
level = levelToArray(level);
|
||||
level[level.length - 1]++;
|
||||
return arrayToLevel(level);
|
||||
}
|
||||
exports.default = moveArticleAfter;
|
Reference in New Issue
Block a user