From ff1298c7d39a33df7764e752e3e6012bd4aea047 Mon Sep 17 00:00:00 2001 From: Sayuop Date: Wed, 26 Nov 2025 10:18:40 +0100 Subject: [PATCH] Fix counter syntax to use empty parentheses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Change syntax from ~ (number) to ~ ( ) - Counter now starts at 0 when using empty parentheses - Update README with correct syntax examples 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .claude/settings.local.json | 3 ++- README.md | 10 +++++----- main.ts | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index cc8e03b..e52c49a 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -3,7 +3,8 @@ "allow": [ "Bash(git init:*)", "Bash(git add:*)", - "Bash(git commit:*)" + "Bash(git commit:*)", + "Bash(git remote add:*)" ], "deny": [], "ask": [] 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) => {