From cfd612c81637cdd73019e6b03966d02dc09c1fa5 Mon Sep 17 00:00:00 2001 From: Lyzi Diamond Date: Fri, 18 Mar 2016 15:10:48 -0700 Subject: [PATCH] single parser --- src/components/content.js | 3 +++ src/components/section.js | 14 +++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/components/content.js b/src/components/content.js index 1e5226f..1e78d95 100644 --- a/src/components/content.js +++ b/src/components/content.js @@ -3,6 +3,7 @@ import Section from './section'; import PureRenderMixin from 'react-pure-render/mixin'; import GithubSlugger from 'github-slugger'; import { transformURL } from '../../custom'; +import remark from 'remark'; let slugger = new GithubSlugger(); let slug = title => { slugger.reset(); return slugger.slug(title); }; @@ -76,11 +77,13 @@ var Content = React.createClass({ }, render() { let { ast, language, leftClassname, rightClassname } = this.props; + let parser = remark(); return (
{chunkifyAST(ast, language).map((chunk, i) =>
)}
); } diff --git a/src/components/section.js b/src/components/section.js index 28c22b8..f19f895 100644 --- a/src/components/section.js +++ b/src/components/section.js @@ -1,15 +1,14 @@ import React from 'react'; -import remark from 'remark'; import remarkHTML from 'remark-html'; import remarkHighlight from '../highlight'; import PureRenderMixin from 'react-pure-render/mixin'; import { postHighlight } from '../../custom'; -function renderHighlighted(nodes) { +function renderHighlighted(nodes, parser) { return { - __html: postHighlight(remark() + __html: postHighlight(parser .use(remarkHTML) - .stringify(remark().use(remarkHighlight).run({ + .stringify(parser.use(remarkHighlight).run({ type: 'root', children: nodes }))) @@ -21,7 +20,8 @@ var Section = React.createClass({ propTypes: { chunk: React.PropTypes.object.isRequired, leftClassname: React.PropTypes.string.isRequired, - rightClassname: React.PropTypes.string.isRequired + rightClassname: React.PropTypes.string.isRequired, + parser: React.PropTypes.object.isRequired }, render() { let { chunk, leftClassname, rightClassname } = this.props; @@ -31,10 +31,10 @@ var Section = React.createClass({ className={`keyline-top section contain clearfix ${preview ? 'preview' : ''}`}>
+ dangerouslySetInnerHTML={renderHighlighted(left, this.props.parser)} /> {right.length > 0 &&
} + dangerouslySetInnerHTML={renderHighlighted(right, this.props.parser)} />}
); } });