Skip to content

Commit 9639c39

Browse files
authored
Fix support for empty attributes
Closes GH-6. Reviewed-by: Titus Wormer <[email protected]>
1 parent 270bed3 commit 9639c39

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

lib/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ function parseParameters(value) {
110110

111111
return value
112112
.replace(
113-
/\s+([-\w]+)(?:=(?:"((?:\\[\s\S]|[^"])+)"|'((?:\\[\s\S]|[^'])+)'|((?:\\[\s\S]|[^"'\s])+)))?/gi,
113+
/\s+([-\w]+)(?:=(?:"((?:\\[\s\S]|[^"])*)"|'((?:\\[\s\S]|[^'])*)'|((?:\\[\s\S]|[^"'\s])+)))?/gi,
114114
replacer
115115
)
116116
.replace(/\s+/g, '')
@@ -128,14 +128,15 @@ function parseParameters(value) {
128128
// eslint-disable-next-line max-params
129129
function replacer(_, $1, $2, $3, $4) {
130130
/** @type {MarkerParameterValue} */
131-
let value = $2 || $3 || $4 || ''
131+
132+
let value = $2 === undefined ? ($3 === undefined ? $4 : $3) : $2;
132133
const number = Number(value)
133134

134-
if (value === 'true' || value === '') {
135+
if (value === 'true' || value === undefined) {
135136
value = true
136137
} else if (value === 'false') {
137138
value = false
138-
} else if (!Number.isNaN(number)) {
139+
} else if (value.trim() && !Number.isNaN(number)) {
139140
value = number
140141
}
141142

test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,32 @@ test('commentMaker', () => {
164164
null,
165165
'marker stop for invalid parameters (#3)'
166166
)
167+
168+
html = {type: 'html', value: '<!--foo bar="" -->'}
169+
170+
assert.deepEqual(
171+
commentMarker(html),
172+
{
173+
name: 'foo',
174+
attributes: 'bar=""',
175+
parameters: {bar: ''},
176+
node: html
177+
},
178+
'marker with empty string attribute'
179+
)
180+
181+
html = {type: 'html', value: '<!--foo bar=" " -->'}
182+
183+
assert.deepEqual(
184+
commentMarker(html),
185+
{
186+
name: 'foo',
187+
attributes: 'bar=" "',
188+
parameters: {bar: ' '},
189+
node: html
190+
},
191+
'marker with whitespace attribute'
192+
)
167193
})
168194

169195
test('comment node', () => {

0 commit comments

Comments
 (0)