This project provides an Asciidoctor.js extension for highlighting source listing blocks using highlight.js right during document conversion (instead of in browser on client-side as the built-in highlight.js support).
It supports all Asciidoctor features such as callouts, passthroughs inside a code and all other substitutions, except highlighting of specified lines (attribute highlight
).
Requirements
Installation
Install asciidoctor-highlight.js from npmjs.com:
npm install --save asciidoctor-highlight.js
Usage
Assign highlightjs-ext
to the source-highlighter
attribute in your document’s header or via Asciidoctor.js parameters.
Node.js
Using global extensions registry.
const asciidoctor = require('@asciidoctor/core')()
const highlightJsExt = require('asciidoctor-highlight.js')
highlightJsExt.register(asciidoctor.Extensions)
const content = `
[source, js]
console.log('Hello, world!')
`
const html = asciidoctor.convert(content, {
attributes: { 'source-highlighter': 'highlightjs-ext' },
})
console.log(html)
Using custom extensions registry.
const asciidoctor = require('@asciidoctor/core')()
const highlightJsExt = require('asciidoctor-highlight.js')
const registry = asciidoctor.Extensions.create()
highlightJsExt.register(registry)
const content = `
[source, js]
console.log('Hello, world!')
`
const html = asciidoctor.convert(content, {
'extension_registry': registry,
attributes: { 'source-highlighter': 'highlightjs-ext' },
})
console.log(html)
Attributes
You can further customize the source block output with additional highlight.js attributes:
highlightjs-default-lang
Controls the default source code language for fallback when the language is not specified in a source block or with attribute source-language
. It can be any language name or alias supported by highlight.js, none
to skip highlighting, or auto
to use highlight.js’s auto-detection. The default is none
.
License
This project is licensed under MIT License. For the full text of the license, see the LICENSE file.