// Album commentary page and index specifications. // Imports import fixWS from 'fix-whitespace'; import { filterAlbumsByCommentary } from '../util/wiki-data.js'; // Page exports export function condition({wikiData}) { return filterAlbumsByCommentary(wikiData.albumData).length; } export function targets({wikiData}) { return filterAlbumsByCommentary(wikiData.albumData); } export function write(album, {wikiData}) { const { wikiInfo } = wikiData; const entries = [album, ...album.tracks].filter(x => x.commentary).map(x => x.commentary); const words = entries.join(' ').split(' ').length; const page = { type: 'page', path: ['albumCommentary', album.directory], page: ({ getAlbumStylesheet, getLinkThemeString, getThemeString, link, strings, to, transformMultiline }) => ({ title: strings('albumCommentaryPage.title', {album: album.name}), stylesheet: getAlbumStylesheet(album), theme: getThemeString(album.color), main: { content: fixWS`
${strings('albumCommentaryPage.infoLine', { words: `${strings.count.words(words, {unit: true})}`, entries: `${strings.count.commentaryEntries(entries.length, {unit: true})}` })}
${album.commentary && fixWS`${transformMultiline(album.commentary)}`} ${album.tracks.filter(t => t.commentary).map(track => fixWS`
${transformMultiline(track.commentary)}`).join('\n')}
${strings('commentaryIndex.infoLine', { words: `${strings.count.words(totalWords, {unit: true})}`, entries: `${strings.count.commentaryEntries(totalEntries, {unit: true})}` })}
${strings('commentaryIndex.albumList.title')}