Files
docbox/src/highlight.js
2016-07-19 16:20:11 -04:00

36 lines
1.2 KiB
JavaScript

import visit from 'unist-util-visit';
import hljs from 'highlight.js/lib/highlight';
import xml from 'highlight.js/lib/languages/xml';
import python from 'highlight.js/lib/languages/python';
import javascript from 'highlight.js/lib/languages/javascript';
import json from 'highlight.js/lib/languages/json';
import java from 'highlight.js/lib/languages/java';
import objectivec from 'highlight.js/lib/languages/objectivec';
import swift from 'highlight.js/lib/languages/swift';
import bash from 'highlight.js/lib/languages/bash';
hljs.registerLanguage('python', python);
hljs.registerLanguage('xml', xml);
hljs.registerLanguage('javascript', javascript);
hljs.registerLanguage('json', json);
hljs.registerLanguage('objc', objectivec);
hljs.registerLanguage('swift', swift);
hljs.registerLanguage('java', java);
hljs.registerLanguage('bash', bash);
/**
* Adapted from remark-highlight.js
* https://github.com/ben-eb/remark-highlight.js
*/
export default function attacher() {
function visitor(node) {
if (node.lang) {
node.type = 'html';
node.value = `<pre class='hljs'>${hljs.highlightAuto(node.value, [node.lang]).value}</pre>`;
}
}
return ast => visit(ast, 'code', visitor);
}