Synchronisation du contenu avec lemmy
This commit is contained in:
@@ -100,8 +100,48 @@ function formatDateTime(value = null) {
|
||||
return formatted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convertit une valeur de frontmatter en DateTime si elle est valide.
|
||||
* @param {import("luxon").DateTime|Date|string|number|null|undefined} value Valeur lue depuis le frontmatter.
|
||||
* @returns {import("luxon").DateTime|null} DateTime utilisable ou null si invalide.
|
||||
*/
|
||||
function parseFrontmatterDate(value) {
|
||||
const zone = getHugoTimeZone();
|
||||
|
||||
if (DateTime.isDateTime(value)) {
|
||||
const zoned = value.setZone(zone);
|
||||
return zoned.isValid ? zoned : null;
|
||||
}
|
||||
|
||||
if (value instanceof Date) {
|
||||
const zoned = DateTime.fromJSDate(value, { zone });
|
||||
return zoned.isValid ? zoned : null;
|
||||
}
|
||||
|
||||
if (typeof value === "string") {
|
||||
const trimmed = value.trim();
|
||||
if (!trimmed) {
|
||||
return null;
|
||||
}
|
||||
const iso = DateTime.fromISO(trimmed, { setZone: true }).setZone(zone);
|
||||
if (iso.isValid) {
|
||||
return iso;
|
||||
}
|
||||
const rfc2822 = DateTime.fromRFC2822(trimmed, { setZone: true }).setZone(zone);
|
||||
return rfc2822.isValid ? rfc2822 : null;
|
||||
}
|
||||
|
||||
if (typeof value === "number" && Number.isFinite(value)) {
|
||||
const zoned = DateTime.fromMillis(value, { zone }).setZone(zone);
|
||||
return zoned.isValid ? zoned : null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
formatDateTime,
|
||||
getHugoTimeZone,
|
||||
toHugoDateTime,
|
||||
parseFrontmatterDate,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user