diff --git a/content/team.json b/content/team.json index 9a1bcc503ad..08c7842666b 100644 --- a/content/team.json +++ b/content/team.json @@ -8,7 +8,10 @@ "image": "/img/team/markus.jpg", "v4v": { "address": "0286e50ebeaafdf7dc321f6c8cb7e964e236b03ed67494b6337215c5c3c42252f2" - } + }, + "aliases": [ + "MarkusTurm" + ] }, "gigi": { "name": "Gigi", @@ -31,7 +34,10 @@ "image": "/img/team/fab.jpg", "v4v": { "address": "03f14237bb08f0afcb1ea07eff6b0b41e79294e66888971cccf1f585f5e21bf8f9" - } + }, + "aliases": [ + "fabthefoxx" + ] }, "dennis": { "name": "Dennis", diff --git a/helpers.js b/helpers.js index 8cd0fd2eeec..3d3338d4404 100644 --- a/helpers.js +++ b/helpers.js @@ -37,10 +37,25 @@ const truncate = (str, wordCount) => { return [head, tail] } +// team +const teamWithAliases = team => { + const withAliases = {} + Object.entries(team).forEach(([id, member]) => { + withAliases[id] = member + const aliases = (member.aliases || []).concat(member.name.toLowerCase()) + aliases.forEach(alias => { + const aliasId = alias.toLowerCase() + if (!withAliases[aliasId]) withAliases[aliasId] = member + }) + }) + return withAliases +} + module.exports = { markdown: mdTransformer.render, replacements, slugify, stripHTML, - truncate + truncate, + teamWithAliases } diff --git a/tasks/fetch_feed.js b/tasks/fetch_feed.js index 77016e2e9d4..08edcfcfc93 100644 --- a/tasks/fetch_feed.js +++ b/tasks/fetch_feed.js @@ -1,8 +1,8 @@ const { writeFileSync } = require('fs') const { join, resolve } = require('path') -const { replacements, slugify, stripHTML } = require('../helpers') +const { replacements, slugify, stripHTML, teamWithAliases } = require('../helpers') const { masterFeedUrl, publicFeedUrl } = require('../content/meta.json') -const team = require('../content/team.json') +const teamRaw = require('../content/team.json') const request = require('sync-request') const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser') const xmlFormat = require('xml-formatter') @@ -13,6 +13,8 @@ const write = (name, data) => writeFileSync(join(dir, name), data) const writeJSON = (name, data) => write(`generated/${name}.json`, JSON.stringify(data, null, 2)) +const team = teamWithAliases(teamRaw) + const commonOpts = { attributeNamePrefix: '', attributesGroupName: '__attr', @@ -34,11 +36,6 @@ const json2xmlOpts = { indentBy: ' ' } -Object.values(team).forEach(member => { - const alias = member.name.toLowerCase() - if (!team[alias]) team[alias] = member -}) - const parser = new XMLParser(xml2jsonOpts, true) const builder = new XMLBuilder(json2xmlOpts) diff --git a/tasks/generate_pages.js b/tasks/generate_pages.js index 3d17544cfc7..8f09f03b432 100644 --- a/tasks/generate_pages.js +++ b/tasks/generate_pages.js @@ -1,13 +1,13 @@ const pug = require('pug') const { mkdirSync, writeFileSync } = require('fs') const { dirname, resolve } = require('path') -const { slugify } = require('../helpers') +const { slugify, teamWithAliases } = require('../helpers') const config = require('../pug.config') const site = require('../generated/site-data.json') const episodes = require('../generated/episodes.json') const spendenregister = require('../generated/spendenregister.json') const spendenuebersicht = require('../content/spendenuebersicht.json').reverse() -const team = require('../content/team.json') +const teamRaw = require('../content/team.json') const shops = require('../content/shops.json') const soundboard = require('../content/soundboard.json') const adventskalender = require('../content/adventskalender-2022.json') @@ -21,6 +21,8 @@ const categories = { 'verschiedenes': 'Verschiedenes' } +const team = teamWithAliases(teamRaw) + const changedFile = process.argv.length > 2 && process.argv[2] const renderPage = (template, out, data = {}) => { @@ -55,9 +57,9 @@ renderPage('adventskalender', 'adventskalender', { adventskalender }) episodes.forEach(episode => renderPage('episode', `podcast/${episode.slug}`, { navCurrent: 'podcast', episode, team })) Object.keys(categories).forEach(category => renderPage('category', `podcast/${slugify(categories[category])}`, { navCurrent: 'podcast', category, categoryName: categories[category], episodes: episodes.filter(e => e.category === category), team })) -Object.keys(team).forEach(id => { - const member = team[id] - const alias = member.name.toLowerCase() - const eps = episodes.filter(e => e.participants.find(p => [id, alias].includes(p.toLowerCase()))) +Object.keys(teamRaw).forEach(id => { + const member = teamRaw[id] + const aliases = (member.aliases || []).map(m => m.toLowerCase()).concat(member.name.toLowerCase()) + const eps = episodes.filter(e => e.participants.find(p => [id, ...aliases].includes(p.toLowerCase()))) renderPage('member', `team/${slugify(id)}`, { navCurrent: 'podcast', member, episodes: eps, team }) })