try to extract title, pubDate, updatedDate automagically

This commit is contained in:
2026-03-24 21:20:02 +00:00
parent 1248542cc6
commit f909e1adc9
+25 -6
View File
@@ -52,12 +52,23 @@ export default function gemtext(config: GemtextConfig = {}): AstroIntegration {
const body = lines.slice(bodyStartLineIndex).join("\n")
const slug =
typeof data["slug"] === "string" ?
data["slug"]
: fileURLToPath(fileUrl).slice(
fileURLToPath(fileUrl).lastIndexOf("/") + 1,
)
const filepath = fileURLToPath(fileUrl);
const filename = filepath.slice(filepath.lastIndexOf("/") + 1);
const slug =
typeof data["slug"] === "string" ?
data["slug"]
: filename;
data['title'] = data['title']
?? lines.slice(bodyStartLineIndex).find(line => line.startsWith('# '))?.slice(2);
data['pubDate'] = data['pubDate']
?? validDateOrUndefined(lines.slice(bodyStartLineIndex).find(line => line.startsWith('Published on: '))?.slice(14))
?? validDateOrUndefined(filename.replace(/\.[^.]\+$/, ''))
?? validDateOrUndefined(slug.replace(/\.[^.]\+$/, ''));
data['updatedDate'] = data['updatedDate']
?? validDateOrUndefined(lines.slice(bodyStartLineIndex).find(line => line.startsWith('Updated on: '))?.slice(14))
?? validDateOrUndefined(filename.replace(/\.[^.]\+$/, ''))
?? validDateOrUndefined(slug.replace(/\.[^.]\+$/, ''));
return {
data,
@@ -71,3 +82,11 @@ export default function gemtext(config: GemtextConfig = {}): AstroIntegration {
},
}
}
const validDateOrUndefined = (x: unknown) => {
const d = new Date(x as string);
if (isNaN(d.valueOf())) {
return undefined;
}
return d;
};