Skip to content

Commit de1d07c

Browse files
committed
WIP code highlighting
1 parent d83ef81 commit de1d07c

File tree

5 files changed

+56
-1
lines changed

5 files changed

+56
-1
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import {
2+
default as React,
3+
Component,
4+
PropTypes,
5+
} from "react";
6+
7+
import {
8+
default as ReactComponentWithPureRenderMixin,
9+
} from "react-addons-pure-render-mixin";
10+
11+
export default class Code extends Component {
12+
static propTypes = {
13+
className: PropTypes.string,
14+
children: PropTypes.any,
15+
};
16+
17+
componentDidMount() {
18+
this._highlight();
19+
}
20+
21+
shouldComponentUpdate = ReactComponentWithPureRenderMixin.shouldComponentUpdate;
22+
23+
componentDidUpdate() {
24+
this._highlight();
25+
}
26+
27+
_highlight() {
28+
Prism.highlightElement(this.refs.code);
29+
}
30+
31+
render() {
32+
const className = (this.props.language ? 'language-' + this.props.language : '');
33+
return (
34+
<code
35+
ref="code"
36+
className={className}
37+
>
38+
{this.props.code}
39+
</code>
40+
);
41+
}
42+
}

site/components/StatePreview/index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import React, { Component } from 'react';
22
import styles from './styles';
33

4+
import Code from "../CodeHighlight";
5+
46
export default class StatePreview extends Component {
57

68
render() {
@@ -17,7 +19,10 @@ export default class StatePreview extends Component {
1719
return (
1820
<div style={ styles.root }>
1921
<pre style={ codeStyle }>
20-
{ JSON.stringify(this.props.editorState.getCurrentContent().toJS(), null, 2) }
22+
<Code
23+
language="javascript"
24+
code={ JSON.stringify(this.props.editorState.getCurrentContent().toJS(), null, 2) }
25+
/>
2126
</pre>
2227
</div>
2328
);

site/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ <h2 class="available-plugins">Available Plugins</h2>
4444
</span>
4545
on Planet Earth :)
4646
</footer>
47+
<script src="node_modules/prismjs/prism.js"></script>
4748
<script src="static/bundle.js"></script>
4849
</body>
4950
</html>

site/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
"url": "http://github.com/nikgraf/unicorn-editor.git"
1414
},
1515
"dependencies": {
16+
"prismjs": "1.4.1",
1617
"react": "=0.14.7",
18+
"react-addons-pure-render-mixin": "0.14.7",
1719
"react-dom": "^=0.14.7"
1820
},
1921
"devDependencies": {

site/server.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ app.use(require('webpack-dev-middleware')(compiler, {
1919
app.use(require('webpack-hot-middleware')(compiler));
2020

2121
app.get('*', (req, res) => {
22+
// Get prism.js
23+
if (req.originalUrl === '/node_modules/prismjs/prism.js') {
24+
res.sendFile(path.join(__dirname, 'node_modules/prismjs/prism.js'));
25+
return;
26+
}
2227
res.sendFile(path.join(__dirname, 'index.html'));
2328
});
2429

0 commit comments

Comments
 (0)