diff --git a/History.md b/History.md index a03cbb5..58d4046 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,8 @@ +0.0.2 - February 5, 2013 +------------------------ +* mix in metadata + 0.0.1 - February 4, 2013 ------------------------ :sparkles: \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 8c5fe08..db4e4a9 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,6 @@ var consolidate = require('consolidate'); +var defaults = require('defaults'); var each = require('async').each; /** @@ -21,10 +22,12 @@ function plugin(opts){ if (!opts.engine) throw new Error('"engine" option required'); return function(files, metalsmith, done){ + var metadata = metalsmith.metadata(); + each(Object.keys(files), convert, done); function convert(file, done){ - var data = files[file]; + var data = defaults(files[file], metadata); var template = data.template; if (!template) return done(); var tmpl = metalsmith.join(opts.dir, template); diff --git a/package.json b/package.json index 22f9d54..9faad44 100644 --- a/package.json +++ b/package.json @@ -2,16 +2,17 @@ "name": "metalsmith-templates", "description": "A metalsmith plugin to render files with templates.", "repository": "git://github.com/segmentio/metalsmith-templates.git", - "version": "0.0.1", + "version": "0.0.2", "license": "MIT", "main": "lib/index.js", "dependencies": { "consolidate": "~0.10.0", - "async": "~0.2.10" + "async": "~0.2.10", + "defaults": "~1.0.0" }, "devDependencies": { "mocha": "1.x", - "metalsmith": "0.0.0", + "metalsmith": "0.0.2", "swig": "~1.3.2", "assert-dir-equal": "0.0.1" } diff --git a/test/fixtures/metadata/build/one.html b/test/fixtures/metadata/build/one.html new file mode 100644 index 0000000..9e7b8da --- /dev/null +++ b/test/fixtures/metadata/build/one.html @@ -0,0 +1,8 @@ + + + Local Title + + + one + + \ No newline at end of file diff --git a/test/fixtures/metadata/build/two.html b/test/fixtures/metadata/build/two.html new file mode 100644 index 0000000..8316a12 --- /dev/null +++ b/test/fixtures/metadata/build/two.html @@ -0,0 +1,8 @@ + + + Global Title + + + two + + \ No newline at end of file diff --git a/test/fixtures/metadata/expected/one.html b/test/fixtures/metadata/expected/one.html new file mode 100644 index 0000000..9e7b8da --- /dev/null +++ b/test/fixtures/metadata/expected/one.html @@ -0,0 +1,8 @@ + + + Local Title + + + one + + \ No newline at end of file diff --git a/test/fixtures/metadata/expected/two.html b/test/fixtures/metadata/expected/two.html new file mode 100644 index 0000000..8316a12 --- /dev/null +++ b/test/fixtures/metadata/expected/two.html @@ -0,0 +1,8 @@ + + + Global Title + + + two + + \ No newline at end of file diff --git a/test/fixtures/metadata/src/one.html b/test/fixtures/metadata/src/one.html new file mode 100644 index 0000000..0435b6f --- /dev/null +++ b/test/fixtures/metadata/src/one.html @@ -0,0 +1,6 @@ +--- +title: Local Title +template: layout.html +--- + +one \ No newline at end of file diff --git a/test/fixtures/metadata/src/two.html b/test/fixtures/metadata/src/two.html new file mode 100644 index 0000000..8435ec1 --- /dev/null +++ b/test/fixtures/metadata/src/two.html @@ -0,0 +1,5 @@ +--- +template: layout.html +--- + +two \ No newline at end of file diff --git a/test/fixtures/metadata/templates/layout.html b/test/fixtures/metadata/templates/layout.html new file mode 100644 index 0000000..f6f2b3d --- /dev/null +++ b/test/fixtures/metadata/templates/layout.html @@ -0,0 +1,8 @@ + + + {{title}} + + + {{body}} + + \ No newline at end of file diff --git a/test/index.js b/test/index.js index 62146f2..a459a72 100644 --- a/test/index.js +++ b/test/index.js @@ -24,4 +24,15 @@ describe('metalsmith-templates', function(){ done(); }); }); + + it('should mix in global metadata', function(done){ + Metalsmith('test/fixtures/metadata') + .metadata({ title: 'Global Title' }) + .use(templates({ engine: 'swig' })) + .build(function(err){ + if (err) return done(err); + equal('test/fixtures/metadata/expected', 'test/fixtures/metadata/build'); + done(); + }); + }); }); \ No newline at end of file