diff --git a/lib/helpers/read-partials.js b/lib/helpers/read-partials.js index 9a6497a..644ca07 100644 --- a/lib/helpers/read-partials.js +++ b/lib/helpers/read-partials.js @@ -36,7 +36,7 @@ function readPartials(partialsRel, layoutsRel, metalsmith) { var partialAbs = path.join(partialsAbs, name); var partialPath = path.relative(layoutsAbs, partialAbs); - partials[name] = partialPath; + partials[name.replace(/\\/g, '/')] = partialPath; } return partials; diff --git a/test/fixtures/partials-subdirectories/build/index.html b/test/fixtures/partials-subdirectories/build/index.html new file mode 100644 index 0000000..3706802 --- /dev/null +++ b/test/fixtures/partials-subdirectories/build/index.html @@ -0,0 +1,3 @@ +

Nav

+

Content

+ diff --git a/test/fixtures/partials-subdirectories/expected/index.html b/test/fixtures/partials-subdirectories/expected/index.html new file mode 100644 index 0000000..3706802 --- /dev/null +++ b/test/fixtures/partials-subdirectories/expected/index.html @@ -0,0 +1,3 @@ +

Nav

+

Content

+ diff --git a/test/fixtures/partials-subdirectories/layouts/layout.html b/test/fixtures/partials-subdirectories/layouts/layout.html new file mode 100644 index 0000000..0d619fa --- /dev/null +++ b/test/fixtures/partials-subdirectories/layouts/layout.html @@ -0,0 +1,2 @@ +{{>nested/nav}} +{{{contents}}} diff --git a/test/fixtures/partials-subdirectories/layouts/partials/nested/nav.html b/test/fixtures/partials-subdirectories/layouts/partials/nested/nav.html new file mode 100644 index 0000000..8a1b726 --- /dev/null +++ b/test/fixtures/partials-subdirectories/layouts/partials/nested/nav.html @@ -0,0 +1 @@ +

Nav

diff --git a/test/fixtures/partials-subdirectories/src/index.html b/test/fixtures/partials-subdirectories/src/index.html new file mode 100644 index 0000000..f5e7012 --- /dev/null +++ b/test/fixtures/partials-subdirectories/src/index.html @@ -0,0 +1,4 @@ +--- +layout: layout.html +--- +

Content

diff --git a/test/index.js b/test/index.js index 9a75ffc..3a61eb2 100644 --- a/test/index.js +++ b/test/index.js @@ -122,6 +122,24 @@ describe('metalsmith-layouts', function(){ }); }); + it('should find partials in subdirectories correctly', function(done){ + // This test would only fail on Windows if readPartials did not + // replace backslashes in partial names + var instance = Metalsmith('test/fixtures/partials-subdirectories') + .use(layouts({ + engine: 'handlebars', + partials: 'layouts/partials' + })); + + instance.build(function(err){ + if (err) { + return done(err); + } + equal('test/fixtures/partials-subdirectories/expected', 'test/fixtures/partials-subdirectories/build'); + done(); + }); + }); + it('should accept a partials option', function(done){ Metalsmith('test/fixtures/partials-option') .use(layouts({