diff --git a/src/tools/hashline-edit/validation.test.ts b/src/tools/hashline-edit/validation.test.ts index b41d748d..751a90b9 100644 --- a/src/tools/hashline-edit/validation.test.ts +++ b/src/tools/hashline-edit/validation.test.ts @@ -74,6 +74,28 @@ describe("parseLineRef", () => { //#then expect(result).toEqual({ line: 42, hash: "VK" }) }) + + it("accepts refs copied with >>> marker only", () => { + //#given + const ref = ">>> 42#VK" + + //#when + const result = parseLineRef(ref) + + //#then + expect(result).toEqual({ line: 42, hash: "VK" }) + }) + + it("accepts refs with spaces around hash separator", () => { + //#given + const ref = "42 # VK" + + //#when + const result = parseLineRef(ref) + + //#then + expect(result).toEqual({ line: 42, hash: "VK" }) + }) }) describe("validateLineRef", () => { diff --git a/src/tools/hashline-edit/validation.ts b/src/tools/hashline-edit/validation.ts index d3368d85..fc5b395a 100644 --- a/src/tools/hashline-edit/validation.ts +++ b/src/tools/hashline-edit/validation.ts @@ -16,7 +16,13 @@ const MISMATCH_CONTEXT = 2 const LINE_REF_EXTRACT_PATTERN = /([0-9]+#[ZPMQVRWSNKTXJBYH]{2})/ function normalizeLineRef(ref: string): string { - const trimmed = ref.trim() + const originalTrimmed = ref.trim() + let trimmed = originalTrimmed + trimmed = trimmed.replace(/^(?:>>>|[+-])\s*/, "") + trimmed = trimmed.replace(/\s*#\s*/, "#") + trimmed = trimmed.replace(/\|.*$/, "") + trimmed = trimmed.trim() + if (HASHLINE_REF_PATTERN.test(trimmed)) { return trimmed } @@ -26,7 +32,7 @@ function normalizeLineRef(ref: string): string { return extracted[1] } - return trimmed + return originalTrimmed } export function parseLineRef(ref: string): LineRef {