Extend Marked.js in order to support React Native's code players (#109)

* Extend Marked.js to support SnackPlayer and the WebPlayer, as used in React Native
This commit is contained in:
Héctor Ramos 2017-10-04 08:56:55 -07:00 committed by GitHub
parent 069d5b3870
commit 419a11af3e
3 changed files with 67 additions and 9 deletions

View file

@ -11,8 +11,10 @@
const React = require("react");
import DOM from 'react-dom-factories';
const Prism = require("./Prism.js");
const Header = require("./Header.js");
const Prism = require("./Prism");
const Header = require("./Header");
const WebPlayer = require('./WebPlayer');
const SnackPlayer = require('./SnackPlayer');
/**
* Block-Level Grammar
@ -816,12 +818,32 @@ Parser.prototype.tok = function() {
</Header>
);
}
case "code": {
return (
<Prism language={this.token.lang}>
{this.token.text}
</Prism>
);
case 'code': {
const lang = this.token.lang, text = this.token.text;
if (
lang && lang.indexOf('ReactNativeWebPlayer') === 0
) {
return (
<WebPlayer params={lang.split('?')[1]}>
{text}
</WebPlayer>
);
}
if (lang && lang.indexOf('SnackPlayer') === 0) {
return (
<SnackPlayer params={lang.split('?')[1]}>
{text}
</SnackPlayer>
);
}
if (lang) {
return <Prism language={lang}>{text}</Prism>;
}
return <Prism>{text}</Prism>;
}
case "table": {
const table = [];