});
const getReferenceFromPath = (path) =>
- /Sources\/([A-Z][0-9A-Za-z]*\/[A-Z][0-9A-Za-z]*)\.djot$/u.exec(path)
- ?.[1]?.replace?.("/", ":");
+ /Sources\/([A-Z][0-9A-Za-z]*(?:\/[A-Z][0-9A-Za-z]*)+)\.djot$/u
+ .exec(path)?.[1]?.replace?.("/", ":"); // only replaces first slash
const listOfInternalLinks = (references, wrapper = ($) => $) => ({
tag: "bullet_list",
e.attributes ??= {};
const { attributes, reference, destination } = e;
if (
- /^(?:[A-Z][0-9A-Za-z]*|[@#])?:(?:[A-Z][0-9A-Za-z]*)?$/u
+ /^(?:[A-Z][0-9A-Za-z]*|[@#])?:(?:[A-Z][0-9A-Za-z]*(?:\/[A-Z][0-9A-Za-z]*)*)?$/u
.test(reference ?? "")
) {
const [namespacePrefix, pageName] = splitReference(
const resolvedReference = pageName == ""
? `Namespace:${expandedNamespace}`
: `${expandedNamespace}:${pageName}`;
- this.#internalLinks.add(resolvedReference);
e.reference = resolvedReference;
attributes["data-realm"] = "internal";
attributes["data-pagename"] = pageName;
attributes["data-namespace"] = expandedNamespace;
+ if (
+ resolvedReference.startsWith("Editor:") &&
+ (attributes.class ?? "").split(/\s/gu).includes("sig")
+ ) {
+ // This is a special internal link; do not record it.
+ /* do nothing */
+ } else {
+ // This is a non‐special internal link; record it.
+ internalLinks.add(resolvedReference);
+ }
} else {
attributes["data-realm"] = "external";
const remote = destination ??
`GitWikiWeb: git cat-file returned nonzero exit code: ${catstatus.code}.`,
);
} else {
+ const reference = `${namespace}:${pageName}`;
const page = new GitWikiWebPage(
namespace,
pageName,
source,
config,
);
- const reference = `${namespace}:${pageName}`;
pages.set(reference, page);
requiredButMissingPages.delete(reference);
}