Skip to content

Commit f22d756

Browse files
Merge pull request #203 from remarkablemark/fix/title
fix: escape tags inside of <title> (upgrade html-dom-parser to 1.0.0)
2 parents 6cd9a20 + 886e53d commit f22d756

File tree

6 files changed

+17
-9
lines changed

6 files changed

+17
-9
lines changed

README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -314,23 +314,21 @@ parse('<br>', {
314314

315315
### htmlparser2
316316

317-
The default [htmlparser2 options](https://github.com/fb55/htmlparser2/wiki/Parser-options) are:
317+
Along with the default [htmlparser2 options](https://github.com/fb55/htmlparser2/wiki/Parser-options#option-xmlmode), the parser also sets:
318318

319-
```js
319+
```json
320320
{
321-
decodeEntities: true,
322-
lowerCaseAttributeNames: false
321+
"lowerCaseAttributeNames": false
323322
}
324323
```
325324

326325
Since [v0.12.0](https://github.com/remarkablemark/html-react-parser/tree/v0.12.0), the htmlparser2 options can be overridden.
327326

328-
The following example enables [`decodeEntities`](https://github.com/fb55/htmlparser2/wiki/Parser-options#option-decodeentities) and [`xmlMode`](https://github.com/fb55/htmlparser2/wiki/Parser-options#option-xmlmode):
327+
The following example enables [`xmlMode`](https://github.com/fb55/htmlparser2/wiki/Parser-options#option-xmlmode) but disables [`lowerCaseAttributeNames`](https://github.com/fb55/htmlparser2/wiki/Parser-options#option-lowercaseattributenames):
329328

330329
```js
331330
parse('<p /><p />', {
332331
htmlparser2: {
333-
decodeEntities: true,
334332
xmlMode: true
335333
}
336334
});

index.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ var domToReact = require('./lib/dom-to-react');
22
var attributesToProps = require('./lib/attributes-to-props');
33
var htmlToDOM = require('html-dom-parser');
44

5-
// decode HTML entities by default for `htmlparser2`
6-
var domParserOptions = { decodeEntities: true, lowerCaseAttributeNames: false };
5+
var domParserOptions = { lowerCaseAttributeNames: false };
76

87
/**
98
* Converts HTML string to React elements.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"dom"
3333
],
3434
"dependencies": {
35-
"html-dom-parser": "0.5.0",
35+
"html-dom-parser": "1.0.0",
3636
"react-property": "1.0.1",
3737
"style-to-js": "1.1.0"
3838
},

test/__snapshots__/index.test.js.snap

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3+
exports[`HTMLReactParser escapes tags inside of <title> 1`] = `
4+
<title>
5+
&lt;em&gt;text&lt;/em&gt;
6+
</title>
7+
`;
8+
39
exports[`HTMLReactParser parses SVG 1`] = `
410
<svg
511
height="400"

test/data/html.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module.exports = {
1313
void: '<link/><meta/><img/><br/><hr/><input/>',
1414
comment: '<!-- comment -->',
1515
doctype: '<!DOCTYPE html>',
16+
title: '<title><em>text</em></title>',
1617
customElement:
1718
'<custom-element class="myClass" custom-attribute="value" style="-o-transition: all .5s; line-height: 1;"></custom-element>'
1819
};

test/index.test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ describe('HTMLReactParser', () => {
7575
const reactElement = parse('<i>' + encodedEntities + '</i>');
7676
expect(reactElement.props.children).toBe(decodedEntities);
7777
});
78+
79+
it('escapes tags inside of <title>', () => {
80+
expect(parse(html.title)).toMatchSnapshot();
81+
});
7882
});
7983

8084
describe('replace option', () => {

0 commit comments

Comments
 (0)