From ab11b7ec1110c53c2cb11078b55b0fbaa7bd96e9 Mon Sep 17 00:00:00 2001 From: "yudai.usuda" Date: Mon, 10 Jun 2024 13:37:01 +0900 Subject: [PATCH 1/2] feat: change mark --- src/dataview-publisher.test.ts | 50 +++++++++++++++++----------------- src/dataview-publisher.ts | 4 +-- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/dataview-publisher.test.ts b/src/dataview-publisher.test.ts index 697a3f6..95ec1fb 100644 --- a/src/dataview-publisher.test.ts +++ b/src/dataview-publisher.test.ts @@ -7,46 +7,46 @@ import { const TEST_TEXT = ` Necessitatibus quisquam veritatis eos dolor hic totam sapiente necessitatibus est. Eaque maxime nisi velit fugiat sint. Non natus nam illo. Dolorum earum esse quod vitae autem. -%% DATAVIEW_PUBLISH: start +%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/dataview-publish \`\`\` %% DATAVIEWの結果をシリアライズした結果であり、置換対象 -%% DATAVIEW_PUBLISH: end %% +%% DATAVIEW_PUBLISHER: end %% Necessitatibus quisquam veritatis eos dolor hic totam sapiente necessitatibus est. Eaque maxime nisi velit fugiat sint. Non natus nam illo. Dolorum earum esse quod vitae autem. Necessitatibus quisquam veritatis eos dolor hic totam sapiente necessitatibus est. Eaque maxime nisi velit fugiat sint. Non natus nam illo. Dolorum earum esse quod vitae autem. -%% DATAVIEW_PUBLISH: start +%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/index \`\`\` %% DATAVIEWの結果をシリアライズした結果であり、置換対象 -%% DATAVIEW_PUBLISH: end %% +%% DATAVIEW_PUBLISHER: end %% Necessitatibus quisquam veritatis eos dolor hic totam sapiente necessitatibus est. Eaque maxime nisi velit fugiat sint. Non natus nam illo. Dolorum earum esse quod vitae autem. `; -const TEST_BLOCK = `%% DATAVIEW_PUBLISH: start +const TEST_BLOCK = `%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/dataview-publish \`\`\` %% DATAVIEWの結果をシリアライズした結果であり、置換対象 -%% DATAVIEW_PUBLISH: end %%`; +%% DATAVIEW_PUBLISHER: end %%`; describe("operations", () => { it("parseBlock", () => { const parsed = parseBlock(TEST_BLOCK); expect(parsed).toEqual({ content: TEST_BLOCK, - startBlock: `%% DATAVIEW_PUBLISH: start + startBlock: `%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/dataview-publish @@ -55,7 +55,7 @@ FROM #🏷️/dataview-publish query: "LIST\nFROM #🏷️/dataview-publish", language: "dataview", serialized: `DATAVIEWの結果をシリアライズした結果であり、置換対象`, - endBlock: "%% DATAVIEW_PUBLISH: end %%", + endBlock: "%% DATAVIEW_PUBLISHER: end %%", }); }); @@ -63,22 +63,22 @@ FROM #🏷️/dataview-publish const blocks = extractBlock(TEST_TEXT); expect(blocks.length).toBe(2); expect(blocks).toEqual([ - `%% DATAVIEW_PUBLISH: start + `%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/dataview-publish \`\`\` %% DATAVIEWの結果をシリアライズした結果であり、置換対象 -%% DATAVIEW_PUBLISH: end %%`, - `%% DATAVIEW_PUBLISH: start +%% DATAVIEW_PUBLISHER: end %%`, + `%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/index \`\`\` %% DATAVIEWの結果をシリアライズした結果であり、置換対象 -%% DATAVIEW_PUBLISH: end %%`, +%% DATAVIEW_PUBLISHER: end %%`, ]); }); @@ -87,69 +87,69 @@ DATAVIEWの結果をシリアライズした結果であり、置換対象 const parsed = blocks.map((block) => parseBlock(block)); expect(parsed).toEqual([ { - content: `%% DATAVIEW_PUBLISH: start + content: `%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/dataview-publish \`\`\` %% DATAVIEWの結果をシリアライズした結果であり、置換対象 -%% DATAVIEW_PUBLISH: end %%`, +%% DATAVIEW_PUBLISHER: end %%`, language: "dataview", query: "LIST\nFROM #🏷️/dataview-publish", serialized: `DATAVIEWの結果をシリアライズした結果であり、置換対象`, - startBlock: `%% DATAVIEW_PUBLISH: start + startBlock: `%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/dataview-publish \`\`\` %%`, - endBlock: "%% DATAVIEW_PUBLISH: end %%", + endBlock: "%% DATAVIEW_PUBLISHER: end %%", }, { - content: `%% DATAVIEW_PUBLISH: start + content: `%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/index \`\`\` %% DATAVIEWの結果をシリアライズした結果であり、置換対象 -%% DATAVIEW_PUBLISH: end %%`, +%% DATAVIEW_PUBLISHER: end %%`, language: "dataview", query: "LIST\nFROM #🏷️/index", serialized: `DATAVIEWの結果をシリアライズした結果であり、置換対象`, - startBlock: `%% DATAVIEW_PUBLISH: start + startBlock: `%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/index \`\`\` %%`, - endBlock: "%% DATAVIEW_PUBLISH: end %%", + endBlock: "%% DATAVIEW_PUBLISHER: end %%", }, ]); }); it("should return the composed block", () => { const blocks = { content: - "%% DATAVIEW_PUBLISH: start\n```dataview\nLIST\nFROM #🏷️/dataview-publish \n```\n%%\nDATAVIEWの結果をシリアライズした結果であり、置換対象\n%% DATAVIEW_PUBLISH: end %%", + "%% DATAVIEW_PUBLISHER: start\n```dataview\nLIST\nFROM #🏷️/dataview-publish \n```\n%%\nDATAVIEWの結果をシリアライズした結果であり、置換対象\n%% DATAVIEW_PUBLISHER: end %%", startBlock: - "%% DATAVIEW_PUBLISH: start\n```dataview\nLIST\nFROM #🏷️/dataview-publish \n```\n%%", + "%% DATAVIEW_PUBLISHER: start\n```dataview\nLIST\nFROM #🏷️/dataview-publish \n```\n%%", query: "LIST\nFROM #🏷️/dataview-publish", language: "dataview", serialized: "DATAVIEWの結果をシリアライズした結果であり、置換対象", - endBlock: "%% DATAVIEW_PUBLISH: end %%", + endBlock: "%% DATAVIEW_PUBLISHER: end %%", }; const composedBlock = composeBlockContent(blocks); - const expectedBlock = `%% DATAVIEW_PUBLISH: start + const expectedBlock = `%% DATAVIEW_PUBLISHER: start \`\`\`dataview LIST FROM #🏷️/dataview-publish \`\`\` %% DATAVIEWの結果をシリアライズした結果であり、置換対象 -%% DATAVIEW_PUBLISH: end %%`; +%% DATAVIEW_PUBLISHER: end %%`; expect(composedBlock).toEqual(expectedBlock); }); diff --git a/src/dataview-publisher.ts b/src/dataview-publisher.ts index e057754..af35a90 100644 --- a/src/dataview-publisher.ts +++ b/src/dataview-publisher.ts @@ -1,8 +1,8 @@ import { executeQueryMarkdown } from "./dataview-utils"; import { BlockInfo, Replacer } from "./types"; -const START_BLOCK_REGEX = /\s*%%\s*DATAVIEW_PUBLISH:\s*start\s*[\s\S]*?%%\s*/; -const END_BLOCK_REGEX = /\s*%%\s*DATAVIEW_PUBLISH:\s*end\s*%%\s*/; +const START_BLOCK_REGEX = /\s*%%\s*DATAVIEW_PUBLISHER:\s*start\s*[\s\S]*?%%\s*/; +const END_BLOCK_REGEX = /\s*%%\s*DATAVIEW_PUBLISHER:\s*end\s*%%\s*/; const BLOCK_REGEX = new RegExp( START_BLOCK_REGEX.source + /(?[\s\S]*?)/.source + From e79184030f181592f8f8cb32d93065b1e4cb56c2 Mon Sep 17 00:00:00 2001 From: "yudai.usuda" Date: Mon, 10 Jun 2024 13:37:24 +0900 Subject: [PATCH 2/2] feat: add insert template command --- src/commands.ts | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/commands.ts b/src/commands.ts index f1c3f8b..c90e2b6 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -1,6 +1,5 @@ -import { type Command } from "obsidian"; +import { Notice, type Command } from "obsidian"; import { Settings } from "./settings"; -// import { serializeDataview } from "./operations"; import type { UnsafeApp } from "./types"; import { Operator } from "./operations"; @@ -8,7 +7,7 @@ import { Operator } from "./operations"; export function createCommands(app: UnsafeApp, settings: Settings): Command[] { return [ { - id: "update-dataview-blocks", + id: "dataview-publisher-update-blocks", name: "Update dataview blocks", callback: () => { const operator = new Operator(app); @@ -16,7 +15,7 @@ export function createCommands(app: UnsafeApp, settings: Settings): Command[] { }, }, { - id: "update-dataview-blocks-and-publish", + id: "dataview-publisher-update-blocks-and-publish", name: "Update dataview blocks and publish", callback: () => { const operator = new Operator(app); @@ -25,5 +24,31 @@ export function createCommands(app: UnsafeApp, settings: Settings): Command[] { app.commands.executeCommandById("publish:view-changes"); }, }, + { + id: "dataview-publisher-insert-block", + name: "Insert dataview publish block", + editorCallback: (editor) => { + const { line, ch } = editor.getCursor(); + const lineContent = editor.getLine(line); + + try { + editor.replaceRange( + ` +%% DATAVIEW_PUBLISHER: start +\`\`\`dataview +\`\`\` +%% +%% DATAVIEW_PUBLISHER: end %%`, + { + line, + ch: lineContent.length, + } + ); + editor.setCursor(line, ch); + } catch (e) { + new Notice(e.message); + } + }, + }, ]; }