Compare commits

...

2 Commits

Author SHA1 Message Date
Anton Bulakh
ba6a833af8
Merge ab0b73693f860f354b82a5c326253b92c32eb088 into 7be47742a6dc86f22d148ca9d304f7a9eea318cf 2025-01-31 06:46:47 -05:00
Anton Bulakh
ab0b73693f
fix(aliases): Make sure the graph shows aliased pages
Given pages A and B, where B has an alias Z, if page A had a link [[Z]]
you'd expect the graph to show an edge from A to B and B to have A as a
backlink.

That didn't happen, here's a fix
2025-01-18 06:20:06 +02:00
2 changed files with 13 additions and 0 deletions

View File

@ -99,6 +99,13 @@ async function renderGraph(container: string, fullSlug: FullSlug) {
const tags: SimpleSlug[] = []
const validLinks = new Set(data.keys())
const aliases = new Map<SimpleSlug, SimpleSlug>()
for (const [slug, details] of data.entries()) {
for (const alias of details.aliases) {
aliases.set(simplifySlug(alias), slug)
}
}
const tweens = new Map<string, TweenNode>()
for (const [source, details] of data.entries()) {
const outgoing = details.links ?? []
@ -107,6 +114,10 @@ async function renderGraph(container: string, fullSlug: FullSlug) {
if (validLinks.has(dest)) {
links.push({ source: source, target: dest })
}
const aliased = aliases.get(dest)
if (aliased) {
links.push({ source: source, target: aliased })
}
}
if (showTags) {

View File

@ -14,6 +14,7 @@ export type ContentDetails = {
title: string
links: SimpleSlug[]
tags: string[]
aliases: FullSlug[]
content: string
richContent?: string
date?: Date
@ -125,6 +126,7 @@ export const ContentIndex: QuartzEmitterPlugin<Partial<Options>> = (opts) => {
title: file.data.frontmatter?.title!,
links: file.data.links ?? [],
tags: file.data.frontmatter?.tags ?? [],
aliases: file.data.aliases ?? [],
content: file.data.text ?? "",
richContent: opts?.rssFullHtml
? escapeHTML(toHtml(tree as Root, { allowDangerousHtml: true }))