From 3636c052eb054d93a8a3ddfb9fdd873d5fe83a5d Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Wed, 31 May 2023 21:41:44 +0000
Subject: [PATCH] link processing

---
 quartz/plugins/transformers/links.ts |   15 +++++++--------
 quartz/index.ts                      |    2 +-
 quartz/processors/emit.ts            |    8 ++++----
 quartz/path.ts                       |    1 -
 quartz.config.ts                     |    2 +-
 5 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/quartz.config.ts b/quartz.config.ts
index e8246a2..fabf473 100644
--- a/quartz.config.ts
+++ b/quartz.config.ts
@@ -11,6 +11,7 @@
   },
   plugins: {
     transformers: [
+      new LinkProcessing(),
       new FrontMatter(),
       new GitHubFlavoredMarkdown(),
       new Katex(),
@@ -18,7 +19,6 @@
       new CreatedModifiedDate({
         priority: ['frontmatter', 'filesystem'] // you can add 'git' here for last modified from Git but this makes the build slower
       }),
-      new LinkProcessing()
     ],
     filters: [
       new RemoveDrafts()
diff --git a/quartz/index.ts b/quartz/index.ts
index 49eec2a..a65597a 100644
--- a/quartz/index.ts
+++ b/quartz/index.ts
@@ -59,7 +59,7 @@
     const filePaths = fps.map(fp => `${argv.directory}${path.sep}${fp}`)
     const parsedFiles = await parseMarkdown(processor, argv.directory, filePaths, argv.verbose)
     const filteredContent = filterContent(cfg.plugins.filters, parsedFiles, argv.verbose)
-    await emitContent(output, cfg, filteredContent, argv.verbose)
+    await emitContent(argv.directory, output, cfg, filteredContent, argv.verbose)
     console.log(chalk.green(`Done in ${perf.timeSince()}`))
 
     if (argv.serve) {
diff --git a/quartz/path.ts b/quartz/path.ts
index 8967d79..4127fc0 100644
--- a/quartz/path.ts
+++ b/quartz/path.ts
@@ -12,7 +12,6 @@
   const slugParts: string = rawSlugSegments
     .map((segment) => slugSegment(segment))
     .join(path.posix.sep)
-    // .replace(/index$/, '')
     .replace(/\/$/, '')
   return path.normalize(slugParts) + sluggedAnchor
 }
diff --git a/quartz/plugins/transformers/links.ts b/quartz/plugins/transformers/links.ts
index 07a76b2..04b26c6 100644
--- a/quartz/plugins/transformers/links.ts
+++ b/quartz/plugins/transformers/links.ts
@@ -29,16 +29,16 @@
 
   markdownPlugins(): PluggableList {
     return [[remarkWikiLink, {
-      pathFormat: this.opts.markdownLinkResolution === "absolute" ? 'obsidian-absolute' : 'raw'
+      pathFormat: this.opts.markdownLinkResolution === "absolute" ? 'obsidian-absolute' : 'raw',
     }]]
   }
 
   htmlPlugins(): PluggableList {
     return [() => {
       return (tree, file) => {
-        const curSlug = file.data.slug! 
+        const curSlug = file.data.slug!
         const transformLink = (target: string) => {
-          const targetSlug = slugify(decodeURI(target))
+          const targetSlug = slugify(decodeURI(target).trim())
           if (this.opts.markdownLinkResolution === 'relative' && !path.isAbsolute(targetSlug)) {
             return './' + relative(curSlug, targetSlug)
           } else {
@@ -46,8 +46,8 @@
           }
         }
 
-        // rewrite all links
         visit(tree, 'element', (node, _index, _parent) => {
+          // rewrite all links
           if (
             node.tagName === 'a' &&
             node.properties &&
@@ -60,14 +60,13 @@
               node.properties.href = transformLink(node.properties.href)
             }
 
+            // rewrite link internals if prettylinks is on
             if (this.opts.prettyLinks && node.children.length === 1 && node.children[0].type === 'text') {
               node.children[0].value = path.basename(node.children[0].value)
             }
           }
-        })
 
-        // transform all images
-        visit(tree, 'element', (node, _index, _parent) => {
+          // transform all images
           if (
             node.tagName === 'img' &&
             node.properties &&
@@ -75,7 +74,7 @@
           ) {
             if (!isAbsoluteUrl(node.properties.src)) {
               const ext = path.extname(node.properties.src)
-              node.properties.src = transformLink("/assets/" + node.properties.src) + ext
+              node.properties.src = transformLink(path.join("assets", node.properties.src)) + ext
             }
           }
         })
diff --git a/quartz/processors/emit.ts b/quartz/processors/emit.ts
index e6e734e..ec465ba 100644
--- a/quartz/processors/emit.ts
+++ b/quartz/processors/emit.ts
@@ -8,7 +8,7 @@
 import { QUARTZ, slugify } from "../path"
 import { globbyStream } from "globby"
 
-export async function emitContent(output: string, cfg: QuartzConfig, content: ProcessedContent[], verbose: boolean) {
+export async function emitContent(contentFolder: string, output: string, cfg: QuartzConfig, content: ProcessedContent[], verbose: boolean) {
   const perf = new PerfTimer()
 
 
@@ -39,11 +39,11 @@
   // glob all non MD/MDX/HTML files in content folder and copy it over
   const assetsPath = path.join("public", "assets")
   for await (const fp of globbyStream("**", {
-    ignore: ["**/*.{md,mdx,html}"],
-    cwd: "./content",
+    ignore: ["**/*.md"],
+    cwd: contentFolder,
   })) {
     const ext = path.extname(fp as string)
-    const src = path.join("content", fp as string)
+    const src = path.join(contentFolder, fp as string)
     const dest = path.join(assetsPath, slugify(fp as string) + ext)
     const dir = path.dirname(dest)
     await fs.promises.mkdir(dir, { recursive: true }) // ensure dir exists

--
Gitblit v1.10.0