From fd5c8d17d3b3cd0a13b0a21a2b78d85010e02e12 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Tue, 20 Jun 2023 03:37:45 +0000
Subject: [PATCH] basic search implementation
---
quartz/plugins/emitters/contentIndex.ts | 45 +++++----------------------------------------
1 files changed, 5 insertions(+), 40 deletions(-)
diff --git a/quartz/plugins/emitters/contentIndex.ts b/quartz/plugins/emitters/contentIndex.ts
index 0e03c23..cd7c924 100644
--- a/quartz/plugins/emitters/contentIndex.ts
+++ b/quartz/plugins/emitters/contentIndex.ts
@@ -1,20 +1,7 @@
-import { visit } from "unist-util-visit"
import { QuartzEmitterPlugin } from "../types"
-import { Element } from "hast"
import path from "path"
-import { trimPathSuffix } from "../../path"
-interface Options {
- indexAnchorLinks: boolean,
- indexExternalLinks: boolean,
-}
-
-const defaultOptions: Options = {
- indexAnchorLinks: false,
- indexExternalLinks: false,
-}
-
-export type ContentIndex = Map<string, ContentDetails>
+export type ContentIndex = Map<string, ContentDetails>
export type ContentDetails = {
title: string,
links?: string[],
@@ -22,39 +9,17 @@
content: string,
}
-export const ContentIndex: QuartzEmitterPlugin<Options> = (userOpts) => {
- const opts = { ...userOpts, ...defaultOptions }
+export const ContentIndex: QuartzEmitterPlugin = () => {
return {
name: "ContentIndex",
async emit(_contentDir, _cfg, content, _resources, emit) {
const fp = path.join("static", "contentIndex")
const linkIndex: ContentIndex = new Map()
- for (const [tree, file] of content) {
- let slug = trimPathSuffix(file.data.slug!)
-
- const outgoing: Set<string> = new Set()
- visit(tree, 'element', (node: Element) => {
- if (node.tagName === 'a' && node.properties && typeof node.properties.href === 'string') {
- let dest = node.properties.href
- if (dest.startsWith(".")) {
- const normalizedPath = path.normalize(path.join(slug, dest))
- dest = trimPathSuffix(normalizedPath)
- outgoing.add(dest)
- } else if (dest.startsWith("#")) {
- if (opts.indexAnchorLinks) {
- outgoing.add(dest)
- }
- } else {
- if (opts.indexExternalLinks) {
- outgoing.add(dest)
- }
- }
- }
- })
-
+ for (const [_tree, file] of content) {
+ let slug = file.data.slug!
linkIndex.set(slug, {
title: file.data.frontmatter?.title!,
- links: [...outgoing],
+ links: file.data.links ?? [],
tags: file.data.frontmatter?.tags,
content: file.data.text ?? ""
})
--
Gitblit v1.10.0