summaryrefslogtreecommitdiffstats
path: root/lib/modifiers/summary/moveArticle.js
blob: 5cb1868476fe1d158962d002bb974eef9ad76d1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var is = require('is');
var removeArticle = require('./removeArticle');
var insertArticle = require('./insertArticle');

/**
    Returns a new summary, with the given article removed from its
    origin level, and placed at the given target level.

    @param {Summary} summary
    @param {String|SummaryArticle} origin: level to remove
    @param {String|SummaryArticle} target: the level where the article will be found
    @return {Summary}
*/
function moveArticle(summary, origin, target) {
    // Coerce to level
    var originLevel = is.string(origin)? origin : origin.getLevel();
    var targetLevel = is.string(target)? target : target.getLevel();
    var article = summary.getByLevel(originLevel);

    // Remove first
    var removed = removeArticle(summary, originLevel);
    return insertArticle(removed, article, targetLevel);
}

module.exports = moveArticle;