Skip to content

Commit

Permalink
Create prism plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
ngs committed Dec 8, 2016
1 parent eda57f7 commit 798b9a7
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 32 deletions.
36 changes: 4 additions & 32 deletions demo/client/components/DemoEditor/index.js
@@ -1,18 +1,5 @@
import React, { Component } from 'react';
import Editor from 'draft-js-plugins-editor';
import PrismDecorator from 'draft-js-prism';
import Prism from 'prismjs';
import 'prismjs/components/prism-java';
import 'prismjs/components/prism-scala';
import 'prismjs/components/prism-go';
import 'prismjs/components/prism-sql';
import 'prismjs/components/prism-bash';
import 'prismjs/components/prism-c';
import 'prismjs/components/prism-cpp';
import 'prismjs/components/prism-kotlin';
import 'prismjs/components/prism-perl';
import 'prismjs/components/prism-ruby';
import 'prismjs/components/prism-swift';

import createMarkdownShortcutsPlugin from 'draft-js-markdown-shortcuts-plugin'; // eslint-disable-line
import Draft, {
Expand All @@ -22,29 +9,15 @@ import Draft, {
EditorState,
} from 'draft-js';
import styles from './styles.css';
// import initialState from './initialState';
import prismPlugin from '../../plugins/prism';

window.Draft = Draft;

const plugins = [createMarkdownShortcutsPlugin()];

const decorators = [
new PrismDecorator({
prism: Prism,
getSyntax(block) {
const language = block.getData().get('language');
if (typeof Prism.languages[language] === 'object') {
return language;
}
return null;
},
render({ type, children }) {
return <span className={`prism-token token ${type}`}>{children}</span>;
}
})
const plugins = [
prismPlugin,
createMarkdownShortcutsPlugin()
];

// const contentState = ContentState.createFromBlockArray(convertFromRaw(initialState));
const contentState = ContentState.createFromText('');
const initialEditorState = EditorState.createWithContent(contentState);

Expand Down Expand Up @@ -78,7 +51,6 @@ export default class DemoEditor extends Component {
{placeholder}
<div className={styles.editor} onClick={this.focus}>
<Editor
decorators={decorators}
editorState={editorState}
onChange={this.onChange}
plugins={plugins}
Expand Down
34 changes: 34 additions & 0 deletions demo/client/plugins/prism.js
@@ -0,0 +1,34 @@
import React from 'react';
import Prism from 'prismjs';
import PrismDecorator from 'draft-js-prism';
import 'prismjs/components/prism-java';
import 'prismjs/components/prism-scala';
import 'prismjs/components/prism-go';
import 'prismjs/components/prism-sql';
import 'prismjs/components/prism-bash';
import 'prismjs/components/prism-c';
import 'prismjs/components/prism-cpp';
import 'prismjs/components/prism-kotlin';
import 'prismjs/components/prism-perl';
import 'prismjs/components/prism-ruby';
import 'prismjs/components/prism-swift';

const prismPlugin = {
decorators: [
new PrismDecorator({
prism: Prism,
getSyntax(block) {
const language = block.getData().get('language');
if (typeof Prism.languages[language] === 'object') {
return language;
}
return null;
},
render({ type, children }) {
return <span className={`prism-token token ${type}`}>{children}</span>;
}
})
]
};

export default prismPlugin;

0 comments on commit 798b9a7

Please sign in to comment.