101 lines
No EOL
3 KiB
JavaScript
101 lines
No EOL
3 KiB
JavaScript
module.exports = function(eleventyConfig) {
|
|
|
|
eleventyConfig.addFilter("formatDate", function(value) {
|
|
try{
|
|
const date = new Date(value)
|
|
if(date) return date.toISOString().replace('T', ' ').slice(0, -5)
|
|
else throw 'Unrecognized data format'
|
|
}
|
|
catch(e) {
|
|
console.error(`Could not convert "${value}"`, e)
|
|
return value;
|
|
}
|
|
});
|
|
|
|
eleventyConfig.addFilter("dateISOString", function(value) {
|
|
try{
|
|
const date = new Date(value)
|
|
if(date) return date.toISOString()
|
|
else throw 'Unrecognized data format'
|
|
}
|
|
catch(e) {
|
|
console.error(`Could not convert "${value}"`, e)
|
|
return value;
|
|
}
|
|
});
|
|
|
|
eleventyConfig.addCollection("notes", function(collectionApi) {
|
|
return collectionApi.getFilteredByGlob("_content/notes/*.md").reverse();
|
|
});
|
|
|
|
eleventyConfig.addCollection("feed", function(collectionApi) {
|
|
return collectionApi.getAllSorted().reverse().filter(item => {
|
|
let showInFeed = false;
|
|
if(!item.data.published) return false
|
|
if(item.filePathStem.startsWith('/notes/')){
|
|
if(item.data['like-of']) item.data.postType = "like"
|
|
else if(item.data['in-reply-to']) item.data.postType = "reply"
|
|
else if(item.data['repost-of']) item.data.postType = "boost"
|
|
else if(item.data['read-of']) item.data.postType = "read"
|
|
else if(item.data['watch-of']) item.data.postType = "watch"
|
|
else item.data.postType = "note";
|
|
showInFeed = true;
|
|
}
|
|
else if(item.filePathStem.startsWith('/articles/')){
|
|
item.data.postType = "article";
|
|
showInFeed = true;
|
|
}
|
|
else if (item.filePathStem.startsWith('/bookmarks/')){
|
|
item.data.postType = "bookmark";
|
|
showInFeed = true;
|
|
}
|
|
else if (item.filePathStem.startsWith('/likes/')){
|
|
item.data.postType = "like";
|
|
showInFeed = true;
|
|
}
|
|
else if (item.filePathStem.startsWith('/rsvp/')){
|
|
item.data.postType = "rsvp";
|
|
showInFeed = true;
|
|
}
|
|
else if (item.filePathStem.startsWith('/watched/')){
|
|
item.data.postType = "watched";
|
|
showInFeed = true;
|
|
}
|
|
|
|
// if(showInFeed) {
|
|
// item.data.author =
|
|
// }
|
|
|
|
return showInFeed;
|
|
});
|
|
});
|
|
|
|
eleventyConfig.addNunjucksShortcode("getVar", function(varString) {
|
|
return this.ctx[varString];
|
|
});
|
|
|
|
eleventyConfig.addShortcode('renderlayoutblock', function(name) {
|
|
return (this.page.layoutblock || {})[name] || '';
|
|
});
|
|
|
|
eleventyConfig.addPairedShortcode('layoutblock', function(content, name) {
|
|
if (!this.page.layoutblock) this.page.layoutblock = {};
|
|
this.page.layoutblock[name] = content;
|
|
return '';
|
|
});
|
|
|
|
eleventyConfig.addPassthroughCopy({"img":"assets/img"});
|
|
eleventyConfig.addPassthroughCopy({"js":"assets/js"});
|
|
eleventyConfig.addPassthroughCopy("css");
|
|
eleventyConfig.addPassthroughCopy("CNAME");
|
|
|
|
// Return your Object options:
|
|
return {
|
|
dir: {
|
|
input: "_content",
|
|
output: "pub"
|
|
},
|
|
htmlTemplateEngine: "njk",
|
|
templateFormats: ["md","html"]
|
|
}
|
|
}; |