mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig.space.git
synced 2025-12-13 16:26:50 +00:00
Introduce aliases for team members
This commit is contained in:
@@ -8,7 +8,10 @@
|
|||||||
"image": "/img/team/markus.jpg",
|
"image": "/img/team/markus.jpg",
|
||||||
"v4v": {
|
"v4v": {
|
||||||
"address": "0286e50ebeaafdf7dc321f6c8cb7e964e236b03ed67494b6337215c5c3c42252f2"
|
"address": "0286e50ebeaafdf7dc321f6c8cb7e964e236b03ed67494b6337215c5c3c42252f2"
|
||||||
}
|
},
|
||||||
|
"aliases": [
|
||||||
|
"MarkusTurm"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"gigi": {
|
"gigi": {
|
||||||
"name": "Gigi",
|
"name": "Gigi",
|
||||||
@@ -31,7 +34,10 @@
|
|||||||
"image": "/img/team/fab.jpg",
|
"image": "/img/team/fab.jpg",
|
||||||
"v4v": {
|
"v4v": {
|
||||||
"address": "03f14237bb08f0afcb1ea07eff6b0b41e79294e66888971cccf1f585f5e21bf8f9"
|
"address": "03f14237bb08f0afcb1ea07eff6b0b41e79294e66888971cccf1f585f5e21bf8f9"
|
||||||
}
|
},
|
||||||
|
"aliases": [
|
||||||
|
"fabthefoxx"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"dennis": {
|
"dennis": {
|
||||||
"name": "Dennis",
|
"name": "Dennis",
|
||||||
|
|||||||
17
helpers.js
17
helpers.js
@@ -37,10 +37,25 @@ const truncate = (str, wordCount) => {
|
|||||||
return [head, tail]
|
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 = {
|
module.exports = {
|
||||||
markdown: mdTransformer.render,
|
markdown: mdTransformer.render,
|
||||||
replacements,
|
replacements,
|
||||||
slugify,
|
slugify,
|
||||||
stripHTML,
|
stripHTML,
|
||||||
truncate
|
truncate,
|
||||||
|
teamWithAliases
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
const { writeFileSync } = require('fs')
|
const { writeFileSync } = require('fs')
|
||||||
const { join, resolve } = require('path')
|
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 { masterFeedUrl, publicFeedUrl } = require('../content/meta.json')
|
||||||
const team = require('../content/team.json')
|
const teamRaw = require('../content/team.json')
|
||||||
const request = require('sync-request')
|
const request = require('sync-request')
|
||||||
const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser')
|
const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser')
|
||||||
const xmlFormat = require('xml-formatter')
|
const xmlFormat = require('xml-formatter')
|
||||||
@@ -13,6 +13,8 @@ const write = (name, data) => writeFileSync(join(dir, name), data)
|
|||||||
const writeJSON = (name, data) =>
|
const writeJSON = (name, data) =>
|
||||||
write(`generated/${name}.json`, JSON.stringify(data, null, 2))
|
write(`generated/${name}.json`, JSON.stringify(data, null, 2))
|
||||||
|
|
||||||
|
const team = teamWithAliases(teamRaw)
|
||||||
|
|
||||||
const commonOpts = {
|
const commonOpts = {
|
||||||
attributeNamePrefix: '',
|
attributeNamePrefix: '',
|
||||||
attributesGroupName: '__attr',
|
attributesGroupName: '__attr',
|
||||||
@@ -34,11 +36,6 @@ const json2xmlOpts = {
|
|||||||
indentBy: ' '
|
indentBy: ' '
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.values(team).forEach(member => {
|
|
||||||
const alias = member.name.toLowerCase()
|
|
||||||
if (!team[alias]) team[alias] = member
|
|
||||||
})
|
|
||||||
|
|
||||||
const parser = new XMLParser(xml2jsonOpts, true)
|
const parser = new XMLParser(xml2jsonOpts, true)
|
||||||
const builder = new XMLBuilder(json2xmlOpts)
|
const builder = new XMLBuilder(json2xmlOpts)
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
const pug = require('pug')
|
const pug = require('pug')
|
||||||
const { mkdirSync, writeFileSync } = require('fs')
|
const { mkdirSync, writeFileSync } = require('fs')
|
||||||
const { dirname, resolve } = require('path')
|
const { dirname, resolve } = require('path')
|
||||||
const { slugify } = require('../helpers')
|
const { slugify, teamWithAliases } = require('../helpers')
|
||||||
const config = require('../pug.config')
|
const config = require('../pug.config')
|
||||||
const site = require('../generated/site-data.json')
|
const site = require('../generated/site-data.json')
|
||||||
const episodes = require('../generated/episodes.json')
|
const episodes = require('../generated/episodes.json')
|
||||||
const spendenregister = require('../generated/spendenregister.json')
|
const spendenregister = require('../generated/spendenregister.json')
|
||||||
const spendenuebersicht = require('../content/spendenuebersicht.json').reverse()
|
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 shops = require('../content/shops.json')
|
||||||
const soundboard = require('../content/soundboard.json')
|
const soundboard = require('../content/soundboard.json')
|
||||||
const adventskalender = require('../content/adventskalender-2022.json')
|
const adventskalender = require('../content/adventskalender-2022.json')
|
||||||
@@ -21,6 +21,8 @@ const categories = {
|
|||||||
'verschiedenes': 'Verschiedenes'
|
'verschiedenes': 'Verschiedenes'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const team = teamWithAliases(teamRaw)
|
||||||
|
|
||||||
const changedFile = process.argv.length > 2 && process.argv[2]
|
const changedFile = process.argv.length > 2 && process.argv[2]
|
||||||
|
|
||||||
const renderPage = (template, out, data = {}) => {
|
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 }))
|
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(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 => {
|
Object.keys(teamRaw).forEach(id => {
|
||||||
const member = team[id]
|
const member = teamRaw[id]
|
||||||
const alias = member.name.toLowerCase()
|
const aliases = (member.aliases || []).map(m => m.toLowerCase()).concat(member.name.toLowerCase())
|
||||||
const eps = episodes.filter(e => e.participants.find(p => [id, alias].includes(p.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 })
|
renderPage('member', `team/${slugify(id)}`, { navCurrent: 'podcast', member, episodes: eps, team })
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user