diff options
Diffstat (limited to 'lib/modifiers/summary/insertArticle.js')
-rw-r--r-- | lib/modifiers/summary/insertArticle.js | 22 |
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; |