From 095883caf0cce1412310bc15d98bb94d8c67f7e5 Mon Sep 17 00:00:00 2001 From: holroy Date: Tue, 25 Feb 2025 16:37:13 +0100 Subject: [PATCH 1/2] Build fixes related to #2480 Some key files was missing from PR #2480. --- package-lock.json | 9 ++++++++- package.json | 14 +++++++------- src/expression/functions.ts | 4 ++-- src/test/function/functions.test.ts | 13 +++++++------ src/util/normalize.ts | 10 +++++----- 5 files changed, 29 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 559d5e11..252d39f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,8 @@ "obsidian-calendar-ui": "^0.3.12", "papaparse": "^5.3.1", "parsimmon": "^1.18.0", - "preact": "^10.6.5" + "preact": "^10.6.5", + "remove-markdown": "^0.5.5" }, "devDependencies": { "@rollup/plugin-commonjs": "^25.0.4", @@ -4948,6 +4949,12 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/remove-markdown": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/remove-markdown/-/remove-markdown-0.5.5.tgz", + "integrity": "sha512-lMR8tOtDqazFT6W2bZidoXwkptMdF3pCxpri0AEokHg0sZlC2GdoLqnoaxsEj1o7/BtXV1MKtT3YviA1t7rW7g==", + "license": "MIT" + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", diff --git a/package.json b/package.json index 915869ab..b7e11b86 100644 --- a/package.json +++ b/package.json @@ -23,28 +23,28 @@ "author": "Michael Brenan", "license": "MIT", "devDependencies": { + "@rollup/plugin-commonjs": "^25.0.4", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-typescript": "^11.1.3", "@types/jest": "^27.0.1", "@types/luxon": "^3.2.0", "@types/node": "^16.7.13", "@types/papaparse": "^5.2.6", "@types/parsimmon": "^1.10.6", - "@rollup/plugin-commonjs": "^25.0.4", - "@rollup/plugin-node-resolve": "^15.2.1", - "@rollup/plugin-typescript": "^11.1.3", "@zerollup/ts-transform-paths": "^1.7.18", "compare-versions": "^4.1.1", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "obsidian": "^1.4.0", "prettier": "2.3.2", - "ts-jest": "^29.1.1", - "tslib": "^2.6.2", - "typescript": "^5.2.2", "rollup": "^2.79.1", "rollup-jest": "^3.1.0", "rollup-plugin-copy": "^3.5.0", "rollup-plugin-typescript2": "^0.35.0", - "rollup-plugin-web-worker-loader": "^1.6.1" + "rollup-plugin-web-worker-loader": "^1.6.1", + "ts-jest": "^29.1.1", + "tslib": "^2.6.2", + "typescript": "^5.2.2" }, "dependencies": { "@codemirror/language": "https://github.com/lishid/cm-language", diff --git a/src/expression/functions.ts b/src/expression/functions.ts index 8350ebbf..f2994365 100644 --- a/src/expression/functions.ts +++ b/src/expression/functions.ts @@ -705,14 +705,14 @@ export namespace DefaultFunctions { export const display = new FunctionBuilder("display") .add1("null", (): Literal => "") .add1("array", (a: Literal[], ctx: Context): Literal => { - return a.map(e => display(ctx, e)).join(", "); + return a.map(e => display(ctx, e)).join(", "); }) .add1("string", (str: string): Literal => normalizeMarkdown(str)) .add1("link", (a: Link, ctx: Context): Literal => { if (a.display) { return display(ctx, a.display); } else { - return Values.toString(a, ctx.settings).replace(/\[\[.*\|(.*)\]\]/, "$1") + return Values.toString(a, ctx.settings).replace(/\[\[.*\|(.*)\]\]/, "$1"); } }) .add1("*", (a: Literal, ctx: Context): Literal => { diff --git a/src/test/function/functions.test.ts b/src/test/function/functions.test.ts index 25c86f10..b27f0020 100644 --- a/src/test/function/functions.test.ts +++ b/src/test/function/functions.test.ts @@ -111,18 +111,19 @@ test("Evaluate display()", () => { expect(parseEval('display("[displayname](http://example.com)")')).toEqual("displayname"); expect(parseEval('display("[[test]]")')).toEqual("test"); expect(parseEval('display("[[test|displayname]]")')).toEqual("displayname"); - expect(parseEval('display("long [[test]] **with** [[test2|multiple]] [links](http://example.com)")')).toEqual("long test with multiple links"); - expect(parseEval('display(1)')).toEqual("1"); - expect(parseEval('display(true)')).toEqual("true"); - expect(parseEval('display(null)')).toEqual(""); + expect(parseEval('display("long [[test]] **with** [[test2|multiple]] [links](http://example.com)")')).toEqual( + "long test with multiple links" + ); + expect(parseEval("display(1)")).toEqual("1"); + expect(parseEval("display(true)")).toEqual("true"); + expect(parseEval("display(null)")).toEqual(""); expect(parseEval('display(date("2024-11-18"))')).toEqual("November 18, 2024"); expect(parseEval('display(dur("7 hours"))')).toEqual("7 hours"); expect(parseEval('display(link("path/to/file.md"))')).toEqual("file"); expect(parseEval('display(link("path/to/file.md", "displayname"))')).toEqual("displayname"); - expect(parseEval('display(list("test", 2, link("file.md")))')).toEqual('test, 2, file'); + expect(parseEval('display(list("test", 2, link("file.md")))')).toEqual("test, 2, file"); }); - // <-- default() --> test("Evaluate default()", () => { diff --git a/src/util/normalize.ts b/src/util/normalize.ts index 7cf1b95c..5309a492 100644 --- a/src/util/normalize.ts +++ b/src/util/normalize.ts @@ -164,13 +164,13 @@ export function setsEqual(first: Set, second: Set): boolean { /** Normalize a markdown string. Removes all markdown tags and obsidian links. */ export function normalizeMarkdown(str: string): string { // [[test]] -> test - let interim = str.replace(/\[\[([^\|]*?)\]\]/g, "$1") + let interim = str.replace(/\[\[([^\|]*?)\]\]/g, "$1"); // [[test|test]] -> test - interim = interim.replace(/\[\[.*?\|(.*?)\]\]/, "$1") - + interim = interim.replace(/\[\[.*?\|(.*?)\]\]/, "$1"); + // remove markdown tags interim = removeMd(interim); - return interim -} \ No newline at end of file + return interim; +} From 233c7a479bc9aeb864e3b09640e118425bdff383 Mon Sep 17 00:00:00 2001 From: holroy Date: Tue, 25 Feb 2025 16:37:56 +0100 Subject: [PATCH 2/2] Update inline-field-live-preview.ts Added the inline key attributes to the standalone variant, as asked for in #2527 --- src/ui/views/inline-field-live-preview.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ui/views/inline-field-live-preview.ts b/src/ui/views/inline-field-live-preview.ts index e9919e21..28373cfd 100644 --- a/src/ui/views/inline-field-live-preview.ts +++ b/src/ui/views/inline-field-live-preview.ts @@ -237,6 +237,10 @@ class InlineFieldWidget extends WidgetType { const value = renderContainer.createSpan({ cls: ["dataview", "inline-field-value"], + attr: { + "data-dv-key": this.field.key, + "data-dv-norm-key": canonicalizeVarName(this.field.key), + }, }); renderValue( this.app,