summaryrefslogtreecommitdiffstats
path: root/lib/modifiers/summary/insertArticle.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/modifiers/summary/insertArticle.js')
-rw-r--r--lib/modifiers/summary/insertArticle.js22
1 files changed, 14 insertions, 8 deletions
diff --git a/lib/modifiers/summary/insertArticle.js b/lib/modifiers/summary/insertArticle.js
index 0a010b4..849f39e 100644
--- a/lib/modifiers/summary/insertArticle.js
+++ b/lib/modifiers/summary/insertArticle.js
@@ -1,6 +1,6 @@
var is = require('is');
var SummaryArticle = require('../../models/summaryArticle');
-var editArticle = require('./editArticle');
+var mergeAtLevel = require('./mergeAtLevel');
var indexArticleLevels = require('./indexArticleLevels');
/**
@@ -23,12 +23,7 @@ function insertArticle(summary, level, article) {
// Find the index to insert at
var articles = parent.getArticles();
- var index = articles.findIndex(function(art) {
- return art.getLevel() === level;
- });
- if (!index) {
- return summary;
- }
+ var index = getLeafIndex(level);
// Insert the article at the right index
articles = articles.insert(index, article);
@@ -37,7 +32,18 @@ function insertArticle(summary, level, article) {
parent = parent.set('articles', articles);
parent = indexArticleLevels(parent);
- return editArticle(summary, parent.getLevel(), parent);
+ return mergeAtLevel(summary, parent.getLevel(), parent);
+}
+
+/**
+ @param {String}
+ @return {Number} The index of this level within its parent's children
+ */
+function getLeafIndex(level) {
+ var arr = level.split('.').map(function (char) {
+ return parseInt(char, 10);
+ });
+ return arr[arr.length - 1] - 1;
}
module.exports = insertArticle;