From 99fe8e8c688fddc675932e62b0cccd2de7882977 Mon Sep 17 00:00:00 2001 From: Zef Hemel Date: Fri, 13 Oct 2023 17:32:31 +0200 Subject: [PATCH] Ignore tags in first paragraph of page for paragraph indexing --- plugs/index/paragraph.ts | 14 ++++++++++---- website/SilverBullet.md | 4 ++-- "website/\360\237\224\214 Directive.md" | 1 + "website/\360\237\224\214 Plugs.md" | 4 ++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/plugs/index/paragraph.ts b/plugs/index/paragraph.ts index 8933c5faf..0116e6781 100644 --- a/plugs/index/paragraph.ts +++ b/plugs/index/paragraph.ts @@ -22,11 +22,13 @@ export type ParagraphObject = ObjectValue< export async function indexParagraphs({ name: page, tree }: IndexTreeEvent) { const objects: ParagraphObject[] = []; addParentPointers(tree); + let paragraphCounter = 0; await traverseTreeAsync(tree, async (p) => { if (p.type !== "Paragraph") { return false; } + paragraphCounter++; if (findParentMatching(p, (n) => n.type === "ListItem")) { // Not looking at paragraphs nested in a list @@ -35,10 +37,14 @@ export async function indexParagraphs({ name: page, tree }: IndexTreeEvent) { // So we're looking at indexable a paragraph now const tags = new Set(["paragraph"]); - // tag the paragraph with any hashtags inside it - collectNodesOfType(p, "Hashtag").forEach((tagNode) => { - tags.add(tagNode.children![0].text!.substring(1)); - }); + if (paragraphCounter > 1) { + // Only attach hashtags to later paragraphs than the first + + // tag the paragraph with any hashtags inside it + collectNodesOfType(p, "Hashtag").forEach((tagNode) => { + tags.add(tagNode.children![0].text!.substring(1)); + }); + } const attrs = await extractAttributes(p, false); const pos = p.from!; diff --git a/website/SilverBullet.md b/website/SilverBullet.md index 64390a1f9..ae30ab41b 100644 --- a/website/SilverBullet.md +++ b/website/SilverBullet.md @@ -72,10 +72,10 @@ rating: 5 But where things get _really_ interesting is when using features like [[Live Queries]] that allow you to query all types of [[Objects]] indexed based on the pages in your space. -Let’s explore this with a meta example of using this for this very website. All pages in this space that represent a plug are tagged with the #plug tag. Now, if we would want to render a list of all plugs in one place using the [[template/plug]] template, we can simply do this: +Let’s explore this with a meta example of using this for this very website. All pages in this space that represent a plug are tagged with the `#plug` tag. Now, if we would want to render a list of all plugs in one place using the [[template/plug]] template, we can simply do this: ```query -plug where tags = "page" render [[template/plug]] +plug render [[template/plug]] ``` Hover over that list, click the edit button to see the query that generates this view. diff --git "a/website/\360\237\224\214 Directive.md" "b/website/\360\237\224\214 Directive.md" index 5484ff8c6..4571cadd3 100644 --- "a/website/\360\237\224\214 Directive.md" +++ "b/website/\360\237\224\214 Directive.md" @@ -3,6 +3,7 @@ > **Warning** Deprecated > Directives are now deprecated and will likely soon be removed, use [[Live Templates]] and [[Live Queries]] instead. + The directive plug is a built-in plug implementing various so-called “directive” that all take the form of `` and close with ``. Currently the following directives are supported: * `#query` to perform queries: [[Live Queries]] diff --git "a/website/\360\237\224\214 Plugs.md" "b/website/\360\237\224\214 Plugs.md" index f14e337b7..eba7f4ebc 100644 --- "a/website/\360\237\224\214 Plugs.md" +++ "b/website/\360\237\224\214 Plugs.md" @@ -17,12 +17,12 @@ Plugs are distributed as self-contained JavaScript bundles (ending with `.plug.j ## Core plugs These plugs are distributed with SilverBullet and are automatically enabled: ```query -plug where tags = "page" and uri = null order by name render [[template/plug]] +plug where uri = null order by name render [[template/plug]] ``` ## Third-party plugs These plugs are written either by third parties or distributed separately from the main SB distribution: ```query -plug where tags = "page" and uri != null order by name render [[template/plug]] +plug where uri != null order by name render [[template/plug]] ``` ## How to develop your own plug