diff options
Diffstat (limited to 'packages/gitbook/lib/modifiers/summary/moveArticle.js')
-rw-r--r-- | packages/gitbook/lib/modifiers/summary/moveArticle.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/gitbook/lib/modifiers/summary/moveArticle.js b/packages/gitbook/lib/modifiers/summary/moveArticle.js new file mode 100644 index 0000000..5cb1868 --- /dev/null +++ b/packages/gitbook/lib/modifiers/summary/moveArticle.js @@ -0,0 +1,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; |