Correctly extract hashtag content in links and Page Picker filter (fix #1196) (#1199)

main
Marek S. Łukasiewicz 2025-01-07 19:57:46 +01:00 committed by GitHub
parent fdd3d1b650
commit 1508f6bcbf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 5 deletions

View File

@ -15,6 +15,7 @@ import { Fragment, renderHtml, type Tag } from "./html_render.ts";
import { isLocalPath } from "@silverbulletmd/silverbullet/lib/resolve";
import type { PageMeta } from "@silverbulletmd/silverbullet/types";
import * as TagConstants from "../../plugs/index/constants.ts";
import { extractHashtag } from "@silverbulletmd/silverbullet/lib/tags";
export type MarkdownRenderOptions = {
failOnUnknown?: true;
@ -342,8 +343,8 @@ function render(
name: "a",
attrs: {
class: "hashtag sb-hashtag",
"data-tag-name": tagText.replace("#", ""),
href: `/${TagConstants.tagPrefix}${tagText.replace("#", "")}`,
"data-tag-name": extractHashtag(tagText),
href: `/${TagConstants.tagPrefix}${extractHashtag(tagText)}`,
},
body: tagText,
};

View File

@ -1,6 +1,7 @@
import { parsePageRef } from "@silverbulletmd/silverbullet/lib/page_ref";
import type { Client } from "../client.ts";
import { tagPrefix } from "../../plugs/index/constants.ts";
import { extractHashtag } from "@silverbulletmd/silverbullet/lib/tags";
export function attachWidgetEventHandlers(
div: HTMLElement,
@ -45,7 +46,7 @@ export function attachWidgetEventHandlers(
return;
}
client.navigate({
page: `${tagPrefix}${el.innerText.slice(1)}`,
page: `${tagPrefix}${extractHashtag(el.innerText)}`,
pos: 0,
});
});

View File

@ -4,8 +4,9 @@ import type {
CompletionContext,
CompletionResult,
} from "@codemirror/autocomplete";
import type { PageMeta } from "../../plug-api/types.ts";
import type { PageMeta } from "@silverbulletmd/silverbullet/types";
import { tagRegex as mdTagRegex } from "$common/markdown_parser/constants.ts";
import { extractHashtag } from "@silverbulletmd/silverbullet/lib/tags";
const tagRegex = new RegExp(mdTagRegex.source, "g");
@ -151,7 +152,7 @@ export function PageNavigator({
const allTags = phrase.match(tagRegex);
if (allTags) {
// Search phrase contains hash tags, let's pre-filter the results based on this
const filterTags = allTags.map((t) => t.slice(1));
const filterTags = allTags.map((t) => extractHashtag(t));
options = options.filter((pageMeta) => {
if (!pageMeta.tags) {
return false;