Skip to content

Commit 5ba3a4e

Browse files
committed
Fix accidental entities
...by encoding loose ampersands.
1 parent 2e0a726 commit 5ba3a4e

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed

lib/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module.exports = toHTML;
2020

2121
/* Characters. */
2222
var NULL = '\0';
23+
var AMP = '&';
2324
var SPACE = ' ';
2425
var TAB = '\t';
2526
var GR = '`';
@@ -34,7 +35,7 @@ var CR = '\r';
3435
var FF = '\f';
3536

3637
/* https://html.spec.whatwg.org/#attribute-name-state */
37-
var NAME = [SPACE, TAB, LF, CR, FF, SO, GT, EQ];
38+
var NAME = [AMP, SPACE, TAB, LF, CR, FF, SO, GT, EQ];
3839
var CLEAN_NAME = NAME.concat(NULL, DQ, SQ, LT);
3940

4041
/*
@@ -49,15 +50,15 @@ var CLEAN_NAME = NAME.concat(NULL, DQ, SQ, LT);
4950
var QUOTES = [DQ, SQ, GR];
5051

5152
/* https://html.spec.whatwg.org/#attribute-value-(unquoted)-state */
52-
var UQ_VALUE = [SPACE, TAB, LF, CR, FF, GT];
53+
var UQ_VALUE = [AMP, SPACE, TAB, LF, CR, FF, GT];
5354
var UQ_VALUE_CLEAN = UQ_VALUE.concat(NULL, DQ, SQ, LT, EQ, GR);
5455

5556
/* https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state */
56-
var SQ_VALUE = [SQ];
57+
var SQ_VALUE = [AMP, SQ];
5758
var SQ_VALUE_CLEAN = SQ_VALUE.concat(NULL);
5859

5960
/* https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state */
60-
var DQ_VALUE = [DQ];
61+
var DQ_VALUE = [AMP, DQ];
6162
var DQ_VALUE_CLEAN = DQ_VALUE.concat(NULL);
6263

6364
/**

lib/text.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@ function text(ctx, node, index, parent) {
4040
var value = node.value;
4141

4242
return isLiteral(parent) ? value : entities(value, xtend(ctx.entities, {
43-
subset: ['<']
43+
subset: ['<', '&']
4444
}));
4545
}

test/text.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ test('`text`', function (t) {
2525
);
2626

2727
t.deepEqual(
28-
to(u('text', '3 < 5')),
29-
'3 &#x3C; 5',
28+
to(u('text', '3 < 5 & 7')),
29+
'3 &#x3C; 5 &#x26; 7',
3030
'should encode `text`s'
3131
);
3232

0 commit comments

Comments
 (0)