diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-05-04 09:47:50 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-05-04 09:47:50 +0200 |
commit | 5d11641a5f4ff607068d871f48a842ecc1d65bf1 (patch) | |
tree | a04b4bc79fa6e5215f8b4934c6f9c8805a007468 /lib/models | |
parent | 24d38e4fcfbbab2a42f49c6085f30f5d4544b217 (diff) | |
parent | 3fc90554f5e7e6ff2fb4f023319799e1e8f81454 (diff) | |
download | gitbook-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/models')
-rw-r--r-- | lib/models/summary.js | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/lib/models/summary.js b/lib/models/summary.js index ec7e05f..8a4afc7 100644 --- a/lib/models/summary.js +++ b/lib/models/summary.js @@ -56,7 +56,7 @@ Summary.prototype.getArticle = function(iter, partIter) { Return a part/article by its level @param {String} level - @return {Article} + @return {Article|Part} */ Summary.prototype.getByLevel = function(level) { function iterByLevel(article) { @@ -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; |