fix(client): replace decodeHTMLEntities to entities package

This commit is contained in:
Valeriy
2019-01-27 17:15:21 +03:00
committed by Stuart Taylor
parent fbb15afa88
commit dd41028f5b
6 changed files with 10 additions and 35 deletions

View File

@ -5189,9 +5189,9 @@
} }
}, },
"entities": { "entities": {
"version": "1.1.1", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
}, },
"envify": { "envify": {
"version": "4.1.0", "version": "4.1.0",

View File

@ -19,6 +19,7 @@
"browser-cookies": "^1.2.0", "browser-cookies": "^1.2.0",
"chai": "^4.2.0", "chai": "^4.2.0",
"date-fns": "^1.29.0", "date-fns": "^1.29.0",
"entities": "^1.1.2",
"enzyme": "^3.6.0", "enzyme": "^3.6.0",
"enzyme-adapter-react-16": "^1.5.0", "enzyme-adapter-react-16": "^1.5.0",
"fetchr": "^0.5.37", "fetchr": "^0.5.37",

View File

@ -39,8 +39,6 @@ import {
import './classic.css'; import './classic.css';
import '../components/test-frame.css'; import '../components/test-frame.css';
import decodeHTMLEntities from '../../../../utils/decodeHTMLEntities';
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
files: challengeFilesSelector, files: challengeFilesSelector,
tests: challengeTestsSelector, tests: challengeTestsSelector,
@ -237,7 +235,7 @@ class ShowClassic extends Component {
* Your test output will go here. * Your test output will go here.
*/ */
`} `}
output={decodeHTMLEntities(output)} output={output}
/> />
); );
} }

View File

@ -1,6 +1,7 @@
import React, { Fragment, Component } from 'react'; import React, { Fragment, Component } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import MonacoEditor from 'react-monaco-editor'; import MonacoEditor from 'react-monaco-editor';
import { decodeHTML } from 'entities';
const propTypes = { const propTypes = {
defaultOutput: PropTypes.string, defaultOutput: PropTypes.string,
@ -51,7 +52,7 @@ class Output extends Component {
editorDidMount={::this.editorDidMount} editorDidMount={::this.editorDidMount}
height={height} height={height}
options={options} options={options}
value={output ? output : defaultOutput} value={decodeHTML(output ? output : defaultOutput)}
/> />
</Fragment> </Fragment>
); );

View File

@ -148,7 +148,9 @@ function* executeTests(testRunner) {
throw err; throw err;
} }
} catch (err) { } catch (err) {
newTest.message = text.replace(/<code>(.*?)<\/code>/g, '$1'); newTest.message = text
.replace(/<code>(.*?)<\/code>/g, '$1')
.replace(/<wbr>/g, '');
if (err === 'timeout') { if (err === 'timeout') {
newTest.err = 'Test timed out'; newTest.err = 'Test timed out';
newTest.message = `${newTest.message} (${newTest.err})`; newTest.message = `${newTest.message} (${newTest.err})`;

View File

@ -1,27 +0,0 @@
/*
* Converts HTML entity codes in a string to the characters they represent.
*
* Example:
* `decodeHTMLEntities('Beets &amp; carrots');`
* will return "Beets & carrots".
*
* The regex makes sure we only replace the HTML entities in the string.
* For example, the regex would match "&lt;" as well as "&#58;".
* The decoding works by setting the innerHTML of a dummy element and then
* retrieving the innerText. Per the spec, innerText is a property that
* represents the "rendered" text content of an element.
*
* See:
* https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText
* https://developer.mozilla.org/en-US/docs/Glossary/Entity
*
*/
const decodeHTMLEntities = str => {
const el = document.createElement('div');
return str.replace(/&[#0-9a-z]+;/gi, enc => {
el.innerHTML = enc;
return el.innerText;
});
};
export default decodeHTMLEntities;