1

Synchronisation du contenu avec lemmy

This commit is contained in:
2025-12-11 00:02:53 +01:00
parent a0e9a87e8d
commit 181223d3d9
10 changed files with 1268 additions and 50 deletions

View File

@@ -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,
};