feat: added headers to links in local pages

This commit is contained in:
venus
2026-10-20 16:11:11 -05:00
parent 98e46644c0
commit efb0fbea94
2 changed files with 34 additions and 5 deletions
+16 -4
View File
@@ -57,20 +57,32 @@ export function normalizeObsidianMarkdown(content) {
// 2. Convert wikilinks with label: [[target-slug|Custom Label]] -> [Custom Label](/posts/target-slug/)
normalized = normalized.replace(/\[\[([^|\]]+)\|([^\]]+)\]\]/g, (match, target, label) => {
const slug = slugify(target);
return `[${label.trim()}](/posts/${slug}/)`;
return `[${label.trim()}](${wikilinkUrl(target)})`;
});
// 3. Convert simple wikilinks: [[target-slug]] -> [target-slug](/posts/target-slug/)
normalized = normalized.replace(/\[\[([^\]]+)\]\]/g, (match, target) => {
const trimmed = target.trim();
const slug = slugify(trimmed);
return `[${trimmed}](/posts/${slug}/)`;
return `[${trimmed}](${wikilinkUrl(trimmed)})`;
});
return normalized;
}
function wikilinkUrl(target) {
const trimmed = target.trim();
const fragmentIndex = trimmed.indexOf("#");
if (fragmentIndex === -1) {
return `/posts/${slugify(trimmed)}/`;
}
const noteSlug = slugify(trimmed.slice(0, fragmentIndex));
const headerSlug = slugify(trimmed.slice(fragmentIndex + 1));
const fragment = headerSlug ? `#${headerSlug}` : "";
return `/posts/${noteSlug}/${fragment}`;
}
function slugify(text) {
return text
.toLowerCase()