diff --git a/README.md b/README.md index cc64846..fba4e2a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A simple Obsidian plugin that creates interactive number counters with +/- butto To create a counter, use the following syntax in your notes: ``` -~ (0) counter label +~ ( ) counter label ``` This will render as an interactive counter starting at 0, with minus and plus buttons to decrease or increase the value. @@ -15,12 +15,12 @@ This will render as an interactive counter starting at 0, with minus and plus bu ## Examples ``` -~ (0) Tasks completed -~ (5) Days streak -~ (100) Points earned +~ ( ) Tasks completed +~ ( ) Days streak +~ ( ) Points earned ``` -Each counter is independent and maintains its own value in your markdown file. +Each counter is independent and maintains its own value in your markdown file. When you click the +/- buttons, the value is updated in the source markdown. ## Installation diff --git a/main.ts b/main.ts index 64e3caf..5859d50 100644 --- a/main.ts +++ b/main.ts @@ -24,7 +24,7 @@ export default class CounterPlugin extends Plugin { } processCounters(element: HTMLElement, context: MarkdownPostProcessorContext) { - const counterRegex = /^~\s*\(\s*(\d+)\s*\)\s*(.*)$/; + const counterRegex = /^~\s*\(\s*(\d*)\s*\)\s*(.*)$/; const walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT); const nodesToReplace: Array<{ node: Node; parent: Node }> = []; @@ -50,7 +50,7 @@ export default class CounterPlugin extends Plugin { const match = line.match(counterRegex); if (match) { - const currentValue = parseInt(match[1], 10); + const currentValue = match[1] === '' ? 0 : parseInt(match[1], 10); const label = match[2].trim(); const counterContainer = this.createCounterElement( @@ -109,7 +109,7 @@ export default class CounterPlugin extends Plugin { const editor = view.editor; const content = editor.getValue(); - const counterRegex = /^~\s*\(\s*\d+\s*\)\s*(.*)$/gm; + const counterRegex = /^~\s*\(\s*\d*\s*\)\s*(.*)$/gm; let matchIndex = 0; const newContent = content.replace(counterRegex, (match, capturedLabel) => {