From dd4e474a6ff3b79de41761aaa1116f7c4d8adecf Mon Sep 17 00:00:00 2001 From: gemedet Date: Sun, 22 May 2016 03:00:58 -0600 Subject: [PATCH 1/3] Access data files from source folder --- lib/hexo/index.js | 2 +- lib/plugins/filter/before_generate/render_post.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/hexo/index.js b/lib/hexo/index.js index eb76d17d0d..d918bd1d77 100644 --- a/lib/hexo/index.js +++ b/lib/hexo/index.js @@ -324,7 +324,7 @@ Hexo.prototype._generate = function(options) { Locals.prototype.view_dir = pathFn.join(this.theme_dir, 'layout') + sep; // Run before_generate filters - return this.execFilter('before_generate', null, {context: this}) + return this.execFilter('before_generate', self.locals.get('data'), {context: this}) .then(function() { self.locals.invalidate(); siteLocals = self.locals.toObject(); diff --git a/lib/plugins/filter/before_generate/render_post.js b/lib/plugins/filter/before_generate/render_post.js index 072c73a134..2f31ad1c59 100644 --- a/lib/plugins/filter/before_generate/render_post.js +++ b/lib/plugins/filter/before_generate/render_post.js @@ -2,7 +2,7 @@ var Promise = require('bluebird'); -function renderPostFilter() { +function renderPostFilter(data) { var self = this; function renderPosts(model) { @@ -12,6 +12,7 @@ function renderPostFilter() { return Promise.map(posts, function(post) { post.content = post._content; + post.site = {data: data}; return self.post.render(post.full_source, post).then(function() { return post.save(); From 91a277c032ab78cb1258fa2371dcbe26c4983c3f Mon Sep 17 00:00:00 2001 From: gemedet Date: Sun, 22 May 2016 04:03:38 -0600 Subject: [PATCH 2/3] Update tests --- test/scripts/box/box.js | 2 +- test/scripts/filters/render_post.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/test/scripts/box/box.js b/test/scripts/box/box.js index 9b97f6a0db..ffc7e7f61a 100644 --- a/test/scripts/box/box.js +++ b/test/scripts/box/box.js @@ -479,7 +479,7 @@ describe('Box', function() { var box = newBox('test'); var processor = sinon.spy(); - box.watch().then(function() { + return box.watch().then(function() { box.addProcessor(processor); box.unwatch(); diff --git a/test/scripts/filters/render_post.js b/test/scripts/filters/render_post.js index b50d1b8b27..01c8429186 100644 --- a/test/scripts/filters/render_post.js +++ b/test/scripts/filters/render_post.js @@ -51,4 +51,23 @@ describe('Render post', function() { return page.remove(); }); }); + + it('use data variables', function() { + var id; + + return Page.insert({ + source: 'foo.md', + path: 'foo.html', + _content: '

Hello {{site.data.foo.name}}

' + }).then(function(page) { + id = page._id; + return renderPost({foo: {name: 'Hexo'}}); + }).then(function() { + var page = Page.findById(id); + page.content.trim().should.eql('

Hello Hexo

'); + + return page.remove(); + }); + }); + }); From 7dcd84121a6a34496eb163d58904ebb96331cf04 Mon Sep 17 00:00:00 2001 From: gemedet Date: Sun, 22 May 2016 04:35:19 -0600 Subject: [PATCH 3/3] Update tests --- test/scripts/hexo/hexo.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/scripts/hexo/hexo.js b/test/scripts/hexo/hexo.js index 55cbe86e54..7bfd48bd6d 100644 --- a/test/scripts/hexo/hexo.js +++ b/test/scripts/hexo/hexo.js @@ -90,6 +90,15 @@ describe('Hexo', function() { }); }); + it('call() - callback without args', function(callback) { + hexo.call('test', function(err, data) { + should.not.exist(err); + data.should.eql({}); + + callback(); + }); + }); + it('call() - console not registered', function() { var errorCallback = sinon.spy(function(err) { err.should.have.property('message', 'Console `nothing` has not been registered yet!');