Skip to content

Commit d51da80

Browse files
committed
fix: ignore scoped data attributes
closes #3
1 parent 4199d54 commit d51da80

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/validator.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ export const useChecker = (validator: HtmlValidate, usePrettier = false, reporte
3131
reporter.error(e)
3232
}
3333

34+
// Clean up Vue scoped style attributes
35+
html = typeof html === 'string' ? html.replace(/ ?data-v-[a-z0-9]+\b/g, '') : html
36+
3437
const { valid, results } = validator.validateString(html)
3538

3639
if (valid) {

test/checker.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,20 @@ describe('useChecker', () => {
5656
expect(mockReporter.error).toHaveBeenCalled()
5757
})
5858

59+
it('ignores Vue-generated scoped data attributes', async () => {
60+
const mockValidator = jest.fn().mockImplementation(() => ({ valid: true, results: [] }))
61+
const checker = useChecker({ validateString: mockValidator } as any, false, mockReporter as any)
62+
63+
await checker(
64+
'https://test.com/',
65+
'<a data-v-35b4e14a data-v-35b4e14a>Link</a>'
66+
)
67+
expect(mockValidator).toHaveBeenCalledWith(
68+
'<a>Link</a>'
69+
)
70+
expect(mockReporter.error).not.toHaveBeenCalled()
71+
})
72+
5973
it('formats HTML with prettier when asked to do so', async () => {
6074
const mockValidator = jest.fn().mockImplementation(() => ({ valid: false, results: [] }))
6175
const checker = useChecker({ validateString: mockValidator } as any, true, mockReporter as any)

0 commit comments

Comments
 (0)