Terrace/docs/.eleventy.js
2023-02-12 16:52:47 -05:00

48 lines
1.2 KiB
JavaScript

const HighlightJS = require('highlight.js')
const EleventyVitePlugin = require('@11ty/eleventy-plugin-vite')
const { useDocument } = require('@terrace/js/document')
const { createFileReader } = require('@terrace/js/readers/node-readline')
const parsePage = require('./parser/page.js')
module.exports = function (config) {
config.addPlugin(EleventyVitePlugin)
config.addPassthroughCopy('src/public')
config.addPassthroughCopy('src/styles')
config.addPassthroughCopy('src/main.js')
config.addTemplateFormats('tce')
config.addExtension('tce', {
async compile(content) {
return async () => content
},
getData(inputPath) {
const doc = useDocument(createFileReader(inputPath))
return parsePage(doc)
}
})
HighlightJS.registerLanguage('terrace', () => ({
name: 'Terrace',
contains: [
{
className: 'keyword',
begin: /^\s*(.*?)(?:\s|$)/,
relevance: 1
}
]
}))
config.addFilter("highlight", function(value, language) {
return HighlightJS.highlight(value, { language }).value
})
return {
dir: {
input: 'src',
output: '_site'
},
passthroughFileCopy: true
}
}