diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-04-28 14:28:41 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-04-28 14:28:41 +0200 |
commit | f946650ddb6b075aa626cc165b7b9ea53924a5b1 (patch) | |
tree | 44a1b2f31ea28ab1cba9c956026fb35f667d14b9 /lib/models | |
parent | 14fd6bbdce87a8b4c60a9dc571608428d738aafc (diff) | |
download | gitbook-f946650ddb6b075aa626cc165b7b9ea53924a5b1.zip gitbook-f946650ddb6b075aa626cc165b7b9ea53924a5b1.tar.gz gitbook-f946650ddb6b075aa626cc165b7b9ea53924a5b1.tar.bz2 |
Add "next" and "previous" to page JSON repr
Diffstat (limited to 'lib/models')
-rw-r--r-- | lib/models/summary.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/models/summary.js b/lib/models/summary.js index b04630f..3b46941 100644 --- a/lib/models/summary.js +++ b/lib/models/summary.js @@ -1,3 +1,4 @@ +var is = require('is'); var Immutable = require('immutable'); var error = require('../utils/error'); @@ -88,6 +89,46 @@ Summary.prototype.getFirstArticle = function() { }; /** + Return next article of an article + + @param {Article} current + @return {Article} +*/ +Summary.prototype.getNextArticle = function(current) { + var level = is.string(current)? current : current.getLevel(); + var wasPrev = false; + + return this.getArticle(function(article) { + if (wasPrev) return true; + + wasPrev = article.getLevel() == level; + return false; + }); +}; + +/** + Return previous article of an article + + @param {Article} current + @return {Article} +*/ +Summary.prototype.getPrevArticle = function(current) { + var level = is.string(current)? current : current.getLevel(); + var prev = undefined; + + this.getArticle(function(article) { + if (article.getLevel() == level) { + return true; + } + + prev = article; + return false; + }); + + return prev; +}; + +/** Render summary as text @return {Promise<String>} |