diff --git a/src/utils/__tests__/text-normalization.spec.ts b/src/utils/__tests__/text-normalization.spec.ts index a6c18c8cd9..e672617d18 100644 --- a/src/utils/__tests__/text-normalization.spec.ts +++ b/src/utils/__tests__/text-normalization.spec.ts @@ -75,5 +75,30 @@ describe("Text normalization utilities", () => { expect(unescapeHtmlEntities("")).toBe("") expect(unescapeHtmlEntities(undefined as unknown as string)).toBe(undefined) }) + + it("unescapes square bracket entities (numeric)", () => { + expect(unescapeHtmlEntities("string[]")).toBe("string[]") + expect(unescapeHtmlEntities("array[0]")).toBe("array[0]") + expect(unescapeHtmlEntities("matrix[i][j]")).toBe("matrix[i][j]") + }) + + it("unescapes square bracket entities (named)", () => { + expect(unescapeHtmlEntities("string[]")).toBe("string[]") + expect(unescapeHtmlEntities("array[0]")).toBe("array[0]") + expect(unescapeHtmlEntities("matrix[i][j]")).toBe("matrix[i][j]") + }) + + it("handles C# array syntax with escaped square brackets", () => { + // Test case based on the reported issue + const input = "string[] myArray = new string[5];\nmyArray[2] = "hello";" + const expected = 'string[] myArray = new string[5];\nmyArray[2] = "hello";' + expect(unescapeHtmlEntities(input)).toBe(expected) + }) + + it("handles mixed square bracket entities", () => { + const input = "array[0] and [1]" + const expected = "array[0] and [1]" + expect(unescapeHtmlEntities(input)).toBe(expected) + }) }) }) diff --git a/src/utils/text-normalization.ts b/src/utils/text-normalization.ts index 15f35c8437..9e25d140c4 100644 --- a/src/utils/text-normalization.ts +++ b/src/utils/text-normalization.ts @@ -91,5 +91,9 @@ export function unescapeHtmlEntities(text: string): string { .replace(/"/g, '"') .replace(/'/g, "'") .replace(/'/g, "'") + .replace(/[/g, "[") + .replace(/]/g, "]") + .replace(/[/g, "[") + .replace(/]/g, "]") .replace(/&/g, "&") }