MCPcopy
hub / github.com/vuepress/core / resolvePagePermalink

Function resolvePagePermalink

packages/core/src/page/resolvePagePermalink.ts:11–59  ·  view source on GitHub ↗
({
  app,
  frontmatter,
  slug,
  date,
  pathInferred,
  pathLocale,
}: {
  app: App
  frontmatter: PageFrontmatter
  slug: string
  date: string
  pathInferred: string | null
  pathLocale: string
})

Source from the content-addressed store, hash-verified

9 * @internal
10 */
11export const resolvePagePermalink = ({
12 app,
13 frontmatter,
14 slug,
15 date,
16 pathInferred,
17 pathLocale,
18}: {
19 app: App
20 frontmatter: PageFrontmatter
21 slug: string
22 date: string
23 pathInferred: string | null
24 pathLocale: string
25}): string | null => {
26 // frontmatter.permalink has the highest priority
27 if (frontmatter.permalink === null) {
28 return null
29 }
30 if (isString(frontmatter.permalink)) {
31 return frontmatter.permalink
32 }
33
34 // frontmatter.permalinkPattern has higher priority than app.options.permalinkPattern
35 if (frontmatter.permalinkPattern === null) {
36 return null
37 }
38
39 const permalinkPattern =
40 frontmatter.permalinkPattern || app.options.permalinkPattern
41
42 if (!isString(permalinkPattern)) {
43 return null
44 }
45
46 // resolve permalink according to the pattern
47 const [year, month, day] = date.split('-')
48 const link = path.join(
49 pathLocale,
50 permalinkPattern
51 .replace(/:year/, year)
52 .replace(/:month/, month)
53 .replace(/:day/, day)
54 .replace(/:slug/, slug)
55 .replace(/:raw/, pathInferred?.replace(/^\//, '') ?? ''),
56 )
57
58 return ensureLeadingSlash(link)
59}

Callers 2

createPageFunction · 0.85

Calls 2

isStringFunction · 0.90
ensureLeadingSlashFunction · 0.90

Tested by

no test coverage detected