diff --git a/src/config/io/markdown.ts b/src/config/io/markdown.ts index 1708663..841db0a 100644 --- a/src/config/io/markdown.ts +++ b/src/config/io/markdown.ts @@ -33,33 +33,35 @@ const remarkParseAtTypes: RemarkPlugin<[]> = () => (root: Md.Root): Md.Root => { const node = rawNode as Md.Literal; node.value = node.value.replace( - /@@(?([A-Z]\w*\.)+)((?[a-z]\w*)((?\(\))|(?\(s\)))?)?(?=[$.,;:)\s]|$)/g, + /@@((?([A-Z]\w*\.)*)(?([A-Z]\w*))(\.(?!\s|$))?)?((?[a-z]\w*)((?\(\))|(?\(s\)))?)?(?=[$.,;:)\s]|$)/g, (_full, ...args) => { type Capture = { - path: string | undefined; + module: string | undefined; + type: string | undefined; member: string | undefined; function: string | undefined; signal: string | undefined; }; const groups = args.pop() as Capture; - const pathp = groups.path.split('.').filter(Boolean); - let type = (pathp.length >= 1 ? pathp.pop() : ""); - let module = pathp.join('_'); - if (module) { - const isQs = module.startsWith("Quickshell"); - module = `99M${isQs ? "QS" : "QT_qml"}_${module}`; - } else module = ""; // WARNING: rehype parser can't currently handle intra-module links + if (groups.module) { + groups.module = groups.module.substring( + 0, + groups.module.length - 1 + ); + const isQs = groups.module.startsWith("Quickshell"); + groups.module = `99M${isQs ? "QS" : "QT_qml"}_${groups.module.replace(".", "_")}`; + } else groups.module = ""; // WARNING: rehype parser can't currently handle intra-module links - type = type ? `99N${type}` : ""; + groups.type = groups.type ? `99N${groups.type}` : ""; groups.member = groups.member ? `99V${groups.member}` : ""; - const typep = groups.member + const type = groups.member ? `99T${groups.function ? "func" : groups.signal ? "signal" : "prop"}` : ""; - return `TYPE${module}${type}${groups.member}${typep}99TYPE`; + return `TYPE${groups.module}${groups.type}${groups.member}${type}99TYPE`; } ); } diff --git a/src/styles/docs/docs.css b/src/styles/docs/docs.css index 3a646d8..2980e01 100644 --- a/src/styles/docs/docs.css +++ b/src/styles/docs/docs.css @@ -9,7 +9,7 @@ margin-inline: 0.618rem; margin-top: 3.5rem; display: flex; - justify-content: safe center; + justify-content: center; flex-direction: row; flex-grow: 1; transition: filter 0.3s;