mirror of
https://github.com/alrayyes/wiki.git
synced 2025-05-01 14:38:14 +00:00
base path refactor, more docs
This commit is contained in:
parent
08f8e3b4a4
commit
906f91f8ee
37 changed files with 1861 additions and 156 deletions
|
@ -1,5 +1,5 @@
|
|||
import { QuartzTransformerPlugin } from "../types"
|
||||
import { clientSideSlug, relative, relativeToRoot, slugify, trimPathSuffix } from "../../path"
|
||||
import { CanonicalSlug, transformInternalLink } from "../../path"
|
||||
import path from "path"
|
||||
import { visit } from 'unist-util-visit'
|
||||
import isAbsoluteUrl from "is-absolute-url"
|
||||
|
@ -27,9 +27,9 @@ export const CrawlLinks: QuartzTransformerPlugin<Partial<Options> | undefined> =
|
|||
htmlPlugins() {
|
||||
return [() => {
|
||||
return (tree, file) => {
|
||||
const curSlug = clientSideSlug(file.data.slug!)
|
||||
const curSlug = file.data.slug!
|
||||
const transformLink = (target: string) => {
|
||||
const targetSlug = clientSideSlug(slugify(decodeURI(target).trim()))
|
||||
const targetSlug = transformInternalLink(target)
|
||||
if (opts.markdownLinkResolution === 'relative' && !path.isAbsolute(targetSlug)) {
|
||||
return './' + relative(curSlug, targetSlug)
|
||||
} else if (opts.markdownLinkResolution === 'shortest') {
|
||||
|
@ -38,13 +38,13 @@ export const CrawlLinks: QuartzTransformerPlugin<Partial<Options> | undefined> =
|
|||
|
||||
// if the file name is unique, then it's just the filename
|
||||
const matchingFileNames = allSlugs.filter(slug => {
|
||||
const parts = clientSideSlug(slug).split(path.posix.sep)
|
||||
const parts = toServerSlug(slug).split(path.posix.sep)
|
||||
const fileName = parts.at(-1)
|
||||
return targetSlug === fileName
|
||||
})
|
||||
|
||||
if (matchingFileNames.length === 1) {
|
||||
const targetSlug = clientSideSlug(matchingFileNames[0])
|
||||
const targetSlug = toServerSlug(matchingFileNames[0])
|
||||
return './' + relativeToRoot(curSlug, targetSlug)
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ export const CrawlLinks: QuartzTransformerPlugin<Partial<Options> | undefined> =
|
|||
return './' + relativeToRoot(curSlug, targetSlug)
|
||||
}
|
||||
|
||||
const outgoing: Set<string> = new Set()
|
||||
const outgoing: Set<CanonicalSlug> = new Set()
|
||||
visit(tree, 'element', (node, _index, _parent) => {
|
||||
// rewrite all links
|
||||
if (
|
||||
|
@ -113,6 +113,6 @@ export const CrawlLinks: QuartzTransformerPlugin<Partial<Options> | undefined> =
|
|||
|
||||
declare module 'vfile' {
|
||||
interface DataMap {
|
||||
links: string[]
|
||||
links: CanonicalSlug[]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ import { Root } from "mdast"
|
|||
import { visit } from "unist-util-visit"
|
||||
import { toString } from "mdast-util-to-string"
|
||||
import { slug as slugAnchor } from 'github-slugger'
|
||||
import { CanonicalSlug } from "../../path"
|
||||
|
||||
export interface Options {
|
||||
maxDepth: 1 | 2 | 3 | 4 | 5 | 6,
|
||||
|
@ -19,7 +20,7 @@ const defaultOptions: Options = {
|
|||
interface TocEntry {
|
||||
depth: number,
|
||||
text: string,
|
||||
slug: string
|
||||
slug: CanonicalSlug
|
||||
}
|
||||
|
||||
export const TableOfContents: QuartzTransformerPlugin<Partial<Options> | undefined> = (userOpts) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue