Merge pull request #460 from eamonnbell/fix-458-silent-failure

Fix #458 by ending case sensitivity of names of fields used in slug construction
This commit is contained in:
Shawn Erquhart 2017-06-23 14:07:25 -04:00 committed by GitHub
commit 782b005085

View File

@ -26,7 +26,22 @@ class LocalStorageAuthStore {
const slugFormatter = (template = "{{slug}}", entryData) => {
const date = new Date();
const identifier = entryData.get("title", entryData.get("path"));
const getIdentifier = (entryData) => {
const validIdentifierFields = ["title", "path"];
const identifiers = validIdentifierFields.map((field) =>
entryData.find((_, key) => key.toLowerCase().trim() === field)
);
const identifier = identifiers.find(ident => ident !== undefined);
if (identifier === undefined) {
throw new Error("Collection must have a field name that is a valid entry identifier");
}
return identifier;
};
return template.replace(/\{\{([^\}]+)\}\}/g, (_, field) => {
switch (field) {
case "year":
@ -36,7 +51,7 @@ const slugFormatter = (template = "{{slug}}", entryData) => {
case "day":
return (`0${ date.getDate() }`).slice(-2);
case "slug":
return slug(identifier.trim(), {lower: true});
return slug(getIdentifier(entryData).trim(), {lower: true});
default:
return slug(entryData.get(field, "").trim(), {lower: true});
}