selfdefined/.eleventy.js

57 lines
1.9 KiB
JavaScript
Raw Normal View History

const makeItemLink = (slug) => `#${slug}`
module.exports = function (config) {
// Add a filter using the Config API
config.addFilter('linkTarget', makeItemLink);
config.addFilter('linkIfExistsInCollection', (word, collection) => {
const existingDefinition = collection.find(item => item.data.title === word)
if (existingDefinition) {
return `<a href=${makeItemLink(existingDefinition.data.slug)}>${word}</a>`
}
return word
})
// just a debug filter to lazily inspect the content of anything in a template
config.addFilter('postInspect', function (post) {
console.log(post);
})
config.addPassthroughCopy({'_site/css/': 'assets/css/'})
// Add collections here
config.addCollection('definitions', collection => {
2019-11-15 20:09:21 +01:00
return collection
.getFilteredByGlob('./11ty/definitions/*.md')
.sort((a, b) => {
// `toLowerCase()` is just a safety measure, slugs should be lower case anyway
// `localeCompare()` is super cool: http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare
2019-11-15 21:21:06 +01:00
return a.data.title.toLowerCase().localeCompare(b.data.title.toLowerCase())
2019-11-15 20:09:21 +01:00
})
})
2019-11-14 09:31:40 +01:00
config.addCollection('definedWords', collection => {
2019-11-15 20:09:21 +01:00
return collection
.getFilteredByGlob('./11ty/definitions/*.md')
.filter(word => word.data.defined)
.sort((a, b) => {
// `localeCompare()` is super cool: http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare
2019-11-15 21:21:06 +01:00
return a.data.title.toLowerCase().localeCompare(b.data.title.toLowerCase())
2019-11-15 20:09:21 +01:00
})
})
// You can return your Config object (optional).
return {
dir: {
input: '11ty',
output: 'dist'
},
templateFormats: ['njk', 'md'],
htmlTemplateEngine: 'njk',
markdownTemplateEngine: 'njk',
passthroughFileCopy: true
};
};