Dynamic frontmatter loading

This commit is contained in:
Will Boyd
2024-02-23 13:35:01 -05:00
parent 3e8dd285b2
commit 641106ea82
3 changed files with 19 additions and 14 deletions
+9
View File
@@ -17,6 +17,7 @@
"luxon": "^3.4.4",
"request": "^2.88.2",
"request-promise-native": "^1.0.8",
"require-directory": "^2.1.1",
"turndown": "^7.1.2",
"turndown-plugin-gfm": "^1.0.2",
"xml2js": "^0.6.2"
@@ -1545,6 +1546,14 @@
"request": "^2.34"
}
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+1
View File
@@ -28,6 +28,7 @@
"luxon": "^3.4.4",
"request": "^2.88.2",
"request-promise-native": "^1.0.8",
"require-directory": "^2.1.1",
"turndown": "^7.1.2",
"turndown-plugin-gfm": "^1.0.2",
"xml2js": "^0.6.2"
+9 -14
View File
@@ -1,16 +1,13 @@
const fs = require('fs');
const requireDirectory = require('require-directory');
const xml2js = require('xml2js');
const shared = require('./shared');
const settings = require('./settings');
const translator = require('./translator');
const frontmatter = {
title: require('./frontmatter/title'),
date: require('./frontmatter/date'),
categories: require('./frontmatter/categories'),
tags: require('./frontmatter/tags'),
coverImage: require('./frontmatter/coverImage'),
};
// dynamically requires all frontmatter loaders
const frontmatterLoaders = requireDirectory(module, './frontmatter', { recurse: false });
async function parseFilePromise(config) {
console.log('\nParsing...');
@@ -174,13 +171,11 @@ function mergeImagesIntoPosts(images, posts) {
function populateFrontmatter(posts) {
posts.forEach(post => {
post.frontmatter = {
title: frontmatter.title(post),
date: frontmatter.date(post),
categories: frontmatter.categories(post),
tags: frontmatter.tags(post),
coverImage: frontmatter.coverImage(post)
}
post.frontmatter = {};
settings.frontmatter_fields.forEach(field => {
[key, alias] = field.split(':');
post.frontmatter[alias || key] = frontmatterLoaders[key](post);
});
});
}