summaryrefslogtreecommitdiffstats
path: root/lib/modifiers/summary/removeArticle.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-05-04 09:47:50 +0200
committerSamy Pessé <samypesse@gmail.com>2016-05-04 09:47:50 +0200
commit5d11641a5f4ff607068d871f48a842ecc1d65bf1 (patch)
treea04b4bc79fa6e5215f8b4934c6f9c8805a007468 /lib/modifiers/summary/removeArticle.js
parent24d38e4fcfbbab2a42f49c6085f30f5d4544b217 (diff)
parent3fc90554f5e7e6ff2fb4f023319799e1e8f81454 (diff)
downloadgitbook-5d11641a5f4ff607068d871f48a842ecc1d65bf1.zip
gitbook-5d11641a5f4ff607068d871f48a842ecc1d65bf1.tar.gz
gitbook-5d11641a5f4ff607068d871f48a842ecc1d65bf1.tar.bz2
Merge pull request #1260 from GitbookIO/move-article
Adds move and remove article modifier.
Diffstat (limited to 'lib/modifiers/summary/removeArticle.js')
-rw-r--r--lib/modifiers/summary/removeArticle.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/modifiers/summary/removeArticle.js b/lib/modifiers/summary/removeArticle.js
new file mode 100644
index 0000000..8a30d0a
--- /dev/null
+++ b/lib/modifiers/summary/removeArticle.js
@@ -0,0 +1,37 @@
+var is = require('is');
+var mergeAtLevel = require('./mergeAtLevel');
+var indexArticleLevels = require('./indexArticleLevels');
+
+/**
+ Remove an article from a level.
+
+ @param {Summary} summary
+ @param {String|SummaryArticle} level: level to remove
+ @return {Summary}
+*/
+function removeArticle(summary, level) {
+ // Coerce to level
+ level = is.string(level)? level : level.getLevel();
+
+ var parent = summary.getParent(level);
+
+ var articles = parent.getArticles();
+ // Find the index to remove
+ var index = articles.findIndex(function(art) {
+ return art.getLevel() === level;
+ });
+ if (index === -1) {
+ return summary;
+ }
+
+ // Remove from children
+ articles = articles.remove(index);
+ parent = parent.set('articles', articles);
+
+ // Reindex the level from here
+ parent = indexArticleLevels(parent);
+
+ return mergeAtLevel(summary, parent.getLevel(), parent);
+}
+
+module.exports = removeArticle;