summaryrefslogtreecommitdiffstats
path: root/lib/models
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/models
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/models')
-rw-r--r--lib/models/summary.js34
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;