Skip to content

Commit e04ab74

Browse files
committed
fix(highlight): check if children is a string
1 parent 566a6bd commit e04ab74

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
"description": "A fast react component wrapper for highlight.js",
55
"main": "lib/index.js",
66
"scripts": {
7+
"check": "npm run lint && npm run flow && npm test",
78
"clean": "rimraf lib",
89
"build": "cross-env NODE_ENV=production babel src --out-dir lib",
910
"flow": "flow",
1011
"lint": "eslint src",
11-
"prepublish": "npm run flow && npm test && npm run clean && npm run build",
12+
"prepublish": "npm run check && npm run clean && npm run build",
1213
"test": "cross-env NODE_ENV=test mocha $(find src -path '*__tests__/*.js') --reporter progress --compilers js:babel-register"
1314
},
1415
"repository": {

src/components/Highlight.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@ export default class Highlight extends Component<void, Props, State> {
3737
}
3838

3939
// $FlowIssue - get/set properties not yet supported
40-
get initialCode(): string {
40+
get initialCode(): ?string {
41+
const type = typeof this.props.children;
42+
if (type !== 'string') {
43+
throw new Error(`Children of <Highlight> must be a string. ${type} supplied`);
44+
}
45+
4146
return this.props.children;
4247
}
4348

@@ -68,9 +73,9 @@ export default class Highlight extends Component<void, Props, State> {
6873
} else {
6974
const promise = new Promise(this.highlightCallback);
7075

71-
promise
72-
.then(result => this.setState({ highlightedCode: result.value, language: result.language }))
73-
.catch(error => console.error(error));
76+
promise.then(
77+
result => this.setState({ highlightedCode: result.value, language: result.language })
78+
);
7479
}
7580
}
7681

@@ -79,6 +84,7 @@ export default class Highlight extends Component<void, Props, State> {
7984
const classes = cx(this.props.className, 'hljs', this.state.language);
8085

8186
let result: ReactElement;
87+
8288
if (code) {
8389
result = (
8490
<pre>

src/highlight.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var hljs = require('highlight.js/lib/highlight');
1+
const hljs = require('highlight.js/lib/highlight');
22

33
hljs.registerLanguage('1c', require('highlight.js/lib/languages/1c'));
44
hljs.registerLanguage('accesslog', require('highlight.js/lib/languages/accesslog'));
@@ -12,7 +12,7 @@ hljs.registerLanguage('asciidoc', require('highlight.js/lib/languages/asciidoc')
1212
hljs.registerLanguage('aspectj', require('highlight.js/lib/languages/aspectj'));
1313
hljs.registerLanguage('autohotkey', require('highlight.js/lib/languages/autohotkey'));
1414
// webpack currently can't handle this file
15-
//hljs.registerLanguage('autoit', require('highlight.js/lib/languages/autoit'));
15+
// hljs.registerLanguage('autoit', require('highlight.js/lib/languages/autoit'));
1616
hljs.registerLanguage('avrasm', require('highlight.js/lib/languages/avrasm'));
1717
hljs.registerLanguage('axapta', require('highlight.js/lib/languages/axapta'));
1818
hljs.registerLanguage('bash', require('highlight.js/lib/languages/bash'));

0 commit comments

Comments
 (0)