mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-07-19 05:09:41 +02:00
46 lines
1.1 KiB
JavaScript
46 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);
|
|
});
|
|
}
|
|
}
|