diff options
Diffstat (limited to 'lib/models/summary.js')
-rw-r--r-- | lib/models/summary.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/models/summary.js b/lib/models/summary.js index ec7e05f..a25d9ec 100644 --- a/lib/models/summary.js +++ b/lib/models/summary.js @@ -130,6 +130,27 @@ Summary.prototype.getPrevArticle = function(current) { }; /** + Return the parent article, or parent part of an article + + @param {String|Article} current + @return {Article|Part|Null} +*/ +Summary.prototype.getParent = function (level) { + // Coerce to level + level = is.string(level)? level : level.getLevel(); + + // Get parent level + var parentLevel = getParentLevel(level); + if (!parentLevel) { + return null; + } + + // Get parent of the position + var parentArticle = this.getByLevel(parentLevel); + return parentArticle || null; +}; + +/** Render summary as text @param {String} parseExt Extension of the parser to use @@ -188,4 +209,15 @@ Summary.createFromParts = function createFromParts(file, parts) { }); }; +/** + Returns parent level of a level + + @param {String} level + @return {String} +*/ +function getParentLevel(level) { + var parts = level.split('.'); + return parts.slice(0, -1).join('.'); +} + module.exports = Summary; |