diff options
Diffstat (limited to 'lib/modifiers/summary/moveArticleAfter.js')
-rw-r--r-- | lib/modifiers/summary/moveArticleAfter.js | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/lib/modifiers/summary/moveArticleAfter.js b/lib/modifiers/summary/moveArticleAfter.js deleted file mode 100644 index e268f73..0000000 --- a/lib/modifiers/summary/moveArticleAfter.js +++ /dev/null @@ -1,60 +0,0 @@ -var is = require('is'); -var removeArticle = require('./removeArticle'); -var insertArticle = 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 - var originLevel = is.string(origin)? origin : origin.getLevel(); - var afterTargetLevel = is.string(afterTarget)? afterTarget : afterTarget.getLevel(); - var article = summary.getByLevel(originLevel); - - var targetLevel = increment(afterTargetLevel); - - if (targetLevel < origin) { - // Remove first - var removed = removeArticle(summary, originLevel); - // Insert then - return insertArticle(removed, article, targetLevel); - } else { - // Insert right after first - var inserted = insertArticle(summary, article, targetLevel); - // Remove old one - return removeArticle(inserted, originLevel); - } -} - -/** - @param {String} - @return {Array<Number>} - */ -function levelToArray(l) { - return l.split('.').map(function (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); -} - -module.exports = moveArticleAfter; |