Terrace/docs/.eleventy.js
2023-02-12 22:11:13 -05:00

53 lines
1.4 KiB
JavaScript

const EleventyVitePlugin = require('@11ty/eleventy-plugin-vite')
const EleventyGoogleFonts = require("eleventy-google-fonts");
const EleventyFeatherIcons = require('eleventy-plugin-feathericons');
const HighlightJS = require('highlight.js')
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.addPlugin(EleventyGoogleFonts)
config.addPlugin(EleventyFeatherIcons)
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
}
}