2019-11-14 09:32:09 +01:00
|
|
|
const makeItemLink = (slug) => `#${slug}`
|
|
|
|
|
2019-11-11 23:51:52 +01:00
|
|
|
module.exports = function (config) {
|
|
|
|
// Add a filter using the Config API
|
2019-11-14 09:32:09 +01:00
|
|
|
config.addFilter('linkTarget', makeItemLink);
|
|
|
|
|
|
|
|
config.addFilter('linkIfExistsInCollection', (word, collection) => {
|
2019-11-15 20:08:41 +01:00
|
|
|
const existingDefinition = collection.find(item => item.data.title === word)
|
2019-11-14 09:32:09 +01:00
|
|
|
|
2019-11-15 20:08:41 +01:00
|
|
|
if (existingDefinition) {
|
|
|
|
return `<a href=${makeItemLink(existingDefinition.data.slug)}>${word}</a>`
|
2019-11-14 09:32:09 +01:00
|
|
|
}
|
2019-11-12 15:08:40 +01:00
|
|
|
|
2019-11-14 09:32:09 +01:00
|
|
|
return word
|
|
|
|
})
|
|
|
|
|
|
|
|
// just a debug filter to lazily inspect the content of anything in a template
|
2019-11-12 15:08:40 +01:00
|
|
|
config.addFilter('postInspect', function (post) {
|
|
|
|
console.log(post);
|
|
|
|
})
|
|
|
|
|
|
|
|
config.addPassthroughCopy({'_site/css/': 'assets/css/'})
|
2019-11-11 23:51:52 +01:00
|
|
|
|
|
|
|
// Add collections here
|
|
|
|
config.addCollection('definitions', collection => {
|
2019-11-15 20:09:21 +01:00
|
|
|
return collection
|
2019-11-11 23:51:52 +01:00
|
|
|
.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-11 23:51:52 +01:00
|
|
|
})
|
|
|
|
|
2019-11-14 09:31:40 +01:00
|
|
|
config.addCollection('definedWords', collection => {
|
2019-11-15 20:09:21 +01:00
|
|
|
return collection
|
2019-11-12 01:17:21 +01:00
|
|
|
.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
|
|
|
})
|
2019-11-12 01:17:21 +01:00
|
|
|
})
|
|
|
|
|
2019-11-11 23:51:52 +01:00
|
|
|
// You can return your Config object (optional).
|
|
|
|
return {
|
|
|
|
dir: {
|
2019-11-12 15:17:44 +01:00
|
|
|
input: '11ty',
|
|
|
|
output: 'dist'
|
|
|
|
},
|
|
|
|
templateFormats: ['njk', 'md'],
|
|
|
|
htmlTemplateEngine: 'njk',
|
|
|
|
markdownTemplateEngine: 'njk',
|
|
|
|
passthroughFileCopy: true
|
2019-11-11 23:51:52 +01:00
|
|
|
};
|
|
|
|
};
|