HighlightJS in TypeScript (and ES6)
This is a port of the highlight.js to a TypeScript (as well as ECMAScript 6).
NOTE: Currently not all languages are supported. PRs are welcome.
Usage example
; // register languagesregisterLanguages CPlusPlus, TypeScript, JavaScript, Python, Lua, Markdown; ; // initialize highlighter = inithtmlRender, options; ; // render source with given language mode;; // or highligh source using auto language detection;; // auto detection using all known language modes; // display resultelm.innerHTML = `<pre></pre>`;
Differences from original
- Complete re-implementation using modern JavaScript syntax and features.
- No module-global state and configuration excluding the language modes registry.
- ES6 Module Syntax to compatibility with modern bundlers like Rollup which support Tree-Shaking.
- Support renderer API to render to HTML text as well as to a DOM-nodes directly or by VirtualDOM engines.
- Compiled mode it is another object not same as a source what get a little bit lower memory usage.
- Replaced some utility functions by ES6 syntax extensions which is provided by tslib for ES5 target.
- Fixed some modes to get more correct or advanced highlight.
Renderer API
Currently the renderer API is quite simple:
- The
text()
call is using to render textual piece of source code. - The
wrap()
call is using to wrap rendered chunk into span with specified class. - The
join()
call is using to join several rendered chunks into single chunk.
By example we can implement HTML renderer like this:
; ;
HighlightJS API
See the types.ts source to understand highlight mode definition syntax.
Read the original highlightjs docs to get more help how to implement syntax highlighting modes.