mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-07-19 21:29:41 +02:00
47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
|
import hljs from "highlight.js/lib/highlight";
|
||
|
import javascript from 'highlight.js/lib/languages/javascript';
|
||
|
import style from 'highlight.js/styles/github-gist.css';
|
||
|
|
||
|
/**
|
||
|
* @class CodeStyles
|
||
|
* @classdesc Provides styling for code blocks
|
||
|
*/
|
||
|
export default class CodeStyler {
|
||
|
/**
|
||
|
* @param {string} selector - CSS selector for code blocks
|
||
|
* @param {string[]} languages - list of languages to highlight, see hljs.listLanguages()
|
||
|
*/
|
||
|
constructor({selector, languages = [ 'javascript' ]}) {
|
||
|
this.codeBlocksSelector = selector;
|
||
|
this.languages = languages;
|
||
|
this.langsAvailable = {
|
||
|
javascript
|
||
|
};
|
||
|
|
||
|
this.init();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Start to highlight
|
||
|
*/
|
||
|
init() {
|
||
|
const codeBlocks = document.querySelectorAll(this.codeBlocksSelector);
|
||
|
|
||
|
if (!codeBlocks.length) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
this.languages.forEach(lang => {
|
||
|
hljs.registerLanguage(lang, this.langsAvailable[lang]);
|
||
|
});
|
||
|
|
||
|
hljs.configure({
|
||
|
languages: this.languages
|
||
|
});
|
||
|
|
||
|
Array.from(codeBlocks).forEach(block => {
|
||
|
hljs.highlightBlock(block);
|
||
|
});
|
||
|
}
|
||
|
}
|