diff options
Diffstat (limited to 'lib/book.js')
-rw-r--r-- | lib/book.js | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/book.js b/lib/book.js index 90322f2..8c9d8ae 100644 --- a/lib/book.js +++ b/lib/book.js @@ -1,7 +1,7 @@ var Q = require("q"); var _ = require("lodash"); var path = require("path"); - +var lunr = require('lunr'); var parsers = require("gitbook-parsers"); var fs = require("./utils/fs"); @@ -54,6 +54,14 @@ var Book = function(root, options, parent) { // Readme file this.readmeFile = "README.md"; + + // Search Index + this.searchIndex = lunr(function () { + this.ref('url'); + + this.field('title', { boost: 10 }); + this.field('body'); + }); }; // Initialize and parse the book: config, summary, glossary @@ -333,6 +341,10 @@ Book.prototype.parsePage = function(filename) { }); return page; + }) + .then(function(page) { + that.indexPage(page); + return page; }); }; @@ -400,4 +412,16 @@ Book.prototype.parentRoot = function() { return this.root; }; +// Index a page into the search index +Book.prototype.indexPage = function(page) { + var nav = this.navigation[page.path]; + if (!nav) return; + + this.searchIndex.add({ + url: page.path, + title: nav.title, + body: pageUtil.extractText(page.sections), + }); +}; + module.exports= Book; |