diff --git a/desirae.js b/desirae.js index 893ed46..a93f854 100644 --- a/desirae.js +++ b/desirae.js @@ -268,7 +268,7 @@ themename = desi.site.theme; } - // defaults to ruhoh-twitter defaults + // TODO NO DEFAULTS if ('__page__' === layoutname) { layoutname = desi.config.themes[themename].pageLayout || 'page'; } else if ('__post__' === layoutname) { @@ -663,16 +663,15 @@ desi.navigation = []; desi.content.root.forEach(function (entity) { - // XXX BUG TODO strip only strip _root so that nested nav will work as expected - var name = path.basename(entity.path, path.extname(entity.path)) + var name = path.join(entity.relativePath, path.basename(entity.name, path.extname(entity.name))) , nindex ; - if (alwaysAdd && /^(_root\/)index(\.\w+)$/i.test(entity.path)) { + // The index should not show up in the automatic listing + if (alwaysAdd && 'index' === name) { return; } - //if (-1 === desi.data.navigation.indexOf(name) && 'index' !== name) nindex = (desi.site.navigation).indexOf(name); if (!alwaysAdd && -1 === nindex) { return; @@ -680,6 +679,7 @@ nindex = desi.navigation.length; } + // TODO this happens before normalization... should fix that... desi.navigation[nindex] = { title: entity.yml && entity.yml.title || Desi.firstCap(name) , name: name @@ -920,19 +920,24 @@ // TODO nested names? navigation.forEach(function (nav) { + // TODO allow permalink nav.href = path.join(env.base_path, nav.name); - nav.path = path.join(env.base_path, nav.name); - // path.basename(nav.path, path.extname(nav.path)) - //console.log('!!! entity', entity); + if (!/\.x?html?$/.test(nav.href)) { + // add trailing slash + nav.href += '/'; + } + if (nav.href.replace(/(\/)?(\/index)?(\.html)?$/i, '') === entity.relative_url.replace(/(\/)?(\/index)?(\.html)?$/i, '')) { nav.active = true; } - if (env.explicitIndexes) { - nav.href = nav.href + '/index.html'; - nav.path = nav.path + '/index.html'; + + if (env.explicitIndexes && !/\.x?html?$/.test(nav.href)) { + nav.href = path.join(nav.href, 'index.html'); } + + nav.path = nav.href; }); view = { diff --git a/lib/transform-core.js b/lib/transform-core.js index 8a262c2..1635d44 100644 --- a/lib/transform-core.js +++ b/lib/transform-core.js @@ -60,7 +60,12 @@ // _root is not subject to the same permalink rules as collections, // so we just go ahead and define that here - entity.permalink = entity.yml.permalink || entity.path.replace(/\.\w+$/, ''); + console.log('root entity.path', entity.path); + if (/^index\.\w+$/.test(entity.path)) { + entity.permalink = '/'; + } else { + entity.permalink = entity.yml.permalink || entity.path.replace(/\.\w+$/, '/'); + } }; cores.normalize = function (desi, env, collection, entity) { @@ -127,7 +132,7 @@ if (!entity.permalink) { // try the fallback_permalink first (because we're looking at files that don't have yml) // then try the normal permalink (because :filename -> :title and whatnot, so it'll work) - Desi.permalinkify(desi, collection.fallback_permalink || collection.permalink, entity); + entity.permalink = Desi.permalinkify(desi, collection.fallback_permalink || collection.permalink, entity); } /* @@ -136,11 +141,6 @@ } */ - // The root index is the one exception - if (/^(index)?\/?index(\.x?html?)?$/.test(entity.permalink)) { - entity.permalink = ''; - } - // relative to the site entity.relative_file = path.join(env.base_path, entity.permalink) .replace(/\/$/, '/index.html');