From 41794c8b80dd9d08465fcb2aa0832c15269659d7 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 4 May 2021 21:41:06 -0300 Subject: IMAGINE IF YOU WILL A WORLD WHEREIN INDENTS WORKED --- upd8.js | 644 ++++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 339 insertions(+), 305 deletions(-) diff --git a/upd8.js b/upd8.js index e17005d..4ac3ab4 100755 --- a/upd8.js +++ b/upd8.js @@ -2338,8 +2338,8 @@ function validateWriteObject(obj) { return {success: true}; } -async function writeData(subKey, directory, data) { - const paths = writePage.paths('', 'data.' + subKey, directory, {file: 'data.json'}); +async function writeData(subKey, directory, file, data) { + const paths = writePage.paths('', 'data.' + subKey, directory, {file}); await writePage.write(JSON.stringify(data), {paths}); } @@ -2975,10 +2975,12 @@ function writeNewsIndex() {

${strings.link.newsEntry(entry, {to})}

${transformMultiline(entry.bodyShort, {strings, to})} - ${entry.bodyShort !== entry.body && `

${strings.link.newsEntry(entry, { - to, - text: strings('newsIndex.entry.viewRest') - })}

`} + ${entry.bodyShort !== entry.body && fixWS` +

${strings.link.newsEntry(entry, { + to, + text: strings('newsIndex.entry.viewRest') + })}

+ `}
`).join('\n')} @@ -3120,18 +3122,19 @@ function writeAlbumPage(album) { duration: strings.count.duration(track.duration), track: strings.link.track(track, {to}) }; - return `
  • ${ - (track.artists === album.artists - ? strings('trackList.item.withDuration', itemOpts) - : strings('trackList.item.withDuration.withArtists', { - ...itemOpts, - by: `${ - strings('trackList.item.withArtists.by', { - artists: getArtistString(track.artists, {strings, to}) - }) - }` - })) - }
  • `; + + const content = (track.artists === album.artists + ? strings('trackList.item.withDuration', itemOpts) + : strings('trackList.item.withDuration.withArtists', { + ...itemOpts, + by: html.tag('span', {class: 'by'}, + strings('trackList.item.withArtists.by', { + artists: getArtistString(track.artists, {strings, to}) + }) + ) + })); + + return `
  • ${content}
  • `; }; const commentaryEntries = [album, ...album.tracks].filter(x => x.commentary).length; @@ -3185,100 +3188,108 @@ function writeAlbumPage(album) { }, main: { - content: fixWS` - ${generateCoverLink({ - strings, to, - src: to('media.albumCover', album.directory), - alt: strings('misc.alt.albumCover'), - tags: album.artTags - })} -

    ${strings('albumPage.title', {album: album.name})}

    -

    - ${[ - album.artists && strings('releaseInfo.by', { - artists: getArtistString(album.artists, { - strings, to, - showContrib: true, - showIcons: true - }) - }), - album.coverArtists && strings('releaseInfo.coverArtBy', { - artists: getArtistString(album.coverArtists, { - strings, to, - showContrib: true, - showIcons: true - }) - }), - album.wallpaperArtists && strings('releaseInfo.wallpaperArtBy', { - artists: getArtistString(album.wallpaperArtists, { - strings, to, - showContrib: true, - showIcons: true - }) - }), - album.bannerArtists && strings('releaseInfo.bannerArtBy', { - artists: getArtistString(album.bannerArtists, { - strings, to, - showContrib: true, - showIcons: true - }) - }), - strings('releaseInfo.released', { - date: strings.count.date(album.date) - }), - +album.coverArtDate !== +album.date && strings('releaseInfo.artReleased', { - date: strings.count.date(album.coverArtDate) - }), - strings('releaseInfo.duration', { - duration: strings.count.duration(albumDuration, {approximate: album.tracks.length > 1}) + content: call(() => { + const releaseInfoParts = [ + album.artists && strings('releaseInfo.by', { + artists: getArtistString(album.artists, { + strings, to, + showContrib: true, + showIcons: true }) - ].filter(Boolean).join('
    \n')} -

    - ${commentaryEntries && `

    ${ - strings('releaseInfo.viewCommentary', { - link: `${ - strings('releaseInfo.viewCommentary.link') - }` - }) - }

    `} - ${album.urls.length && `

    ${ - strings('releaseInfo.listenOn', { - links: strings.list.or(album.urls.map(url => fancifyURL(url, {album: true, strings}))) + }), + album.coverArtists && strings('releaseInfo.coverArtBy', { + artists: getArtistString(album.coverArtists, { + strings, to, + showContrib: true, + showIcons: true + }) + }), + album.wallpaperArtists && strings('releaseInfo.wallpaperArtBy', { + artists: getArtistString(album.wallpaperArtists, { + strings, to, + showContrib: true, + showIcons: true + }) + }), + album.bannerArtists && strings('releaseInfo.bannerArtBy', { + artists: getArtistString(album.bannerArtists, { + strings, to, + showContrib: true, + showIcons: true + }) + }), + strings('releaseInfo.released', { + date: strings.count.date(album.date) + }), + +album.coverArtDate !== +album.date && strings('releaseInfo.artReleased', { + date: strings.count.date(album.coverArtDate) + }), + strings('releaseInfo.duration', { + duration: strings.count.duration(albumDuration, {approximate: album.tracks.length > 1}) }) - }

    `} - ${album.trackGroups ? fixWS` -
    - ${album.trackGroups.map(({ name, color, startIndex, tracks }) => fixWS` -
    ${ - strings('trackList.group', { - duration: strings.count.duration(getTotalDuration(tracks), {approximate: tracks.length > 1}), - group: name - }) - }
    -
    <${listTag === 'ol' ? `ol start="${startIndex + 1}"` : listTag}> - ${tracks.map(t => trackToListItem(t, {strings, to})).join('\n')} -
    - `).join('\n')} -
    - ` : fixWS` - <${listTag}> - ${album.tracks.map(t => trackToListItem(t, {strings, to})).join('\n')} - - `} -

    - ${[ + ].filter(Boolean); + + const trackListPart = (album.trackGroups + ? html.tag('dl', {class: 'album-group-list'}, + album.trackGroups.map(({ name, color, startIndex, tracks }) => { + const label = strings('trackList.group', { + duration: strings.count.duration(getTotalDuration(tracks), {approximate: tracks.length > 1}), + group: name + }); + return fixWS` +

    ${label}
    +
    <${listTag === 'ol' ? `ol start="${startIndex + 1}"` : listTag}> + ${tracks.map(t => trackToListItem(t, {strings, to})).join('\n')} +
    + `; + }) + ) + : fixWS` + <${listTag}> + ${album.tracks.map(t => trackToListItem(t, {strings, to})).join('\n')} + + `); + + return [ + generateCoverLink({ + strings, to, + src: to('media.albumCover', album.directory), + alt: strings('misc.alt.albumCover'), + tags: album.artTags + }), + + `

    ${strings('albumPage.title', {album: album.name})}

    `, + + html.tag('p', releaseInfoParts.join('
    \n')), + + commentaryEntries && html.tag('p', + strings('releaseInfo.viewCommentary', { + link: `${ + strings('releaseInfo.viewCommentary.link') + }` + }) + ), + + album.urls.length && html.tag('p', + strings('releaseInfo.listenOn', { + links: strings.list.or(album.urls.map(url => fancifyURL(url, {album: true, strings}))) + }) + ), + + trackListPart, + + html.tag('p', [ strings('releaseInfo.addedToWiki', { date: strings.count.date(album.dateAdded) }) - ].filter(Boolean).join('
    \n')} -

    - ${album.commentary && fixWS` -

    ${strings('releaseInfo.artistCommentary')}

    -
    - ${transformMultiline(album.commentary, {strings, to})} -
    - `} - ` + ].filter(Boolean).join('
    \n')), + + album.commentary && fixWS` +

    ${strings('releaseInfo.artistCommentary')}

    + ${html.tag('blockquote', transformMultiline(album.commentary, {strings, to}))} + ` + ].filter(Boolean).join('\n'); + }) }, sidebarLeft: generateSidebarForAlbum(album, null, {strings, to}), @@ -3428,103 +3439,114 @@ function writeTrackPage(track) { */ main: { - content: fixWS` - ${generateCoverLink({ - strings, to, - src: getTrackCover(track, {to}), - alt: strings('misc.alt.trackCover'), - tags: track.artTags - })} -

    ${strings('trackPage.title', {track: track.name})}

    -

    - ${[ - strings('releaseInfo.by', { - artists: getArtistString(track.artists, { - strings, to, - showContrib: true, - showIcons: true - }) - }), - track.coverArtists && strings('releaseInfo.coverArtBy', { - artists: getArtistString(track.coverArtists, { - strings, to, - showContrib: true, - showIcons: true - }) - }), - album.directory !== C.UNRELEASED_TRACKS_DIRECTORY && strings('releaseInfo.released', { - date: strings.count.date(track.date) - }), - +track.coverArtDate !== +track.date && strings('releaseInfo.artReleased', { - date: strings.count.date(track.coverArtDate) - }), - track.duration && strings('releaseInfo.duration', { - duration: strings.count.duration(track.duration) + content: call(() => { + const releaseInfoParts = [ + strings('releaseInfo.by', { + artists: getArtistString(track.artists, { + strings, to, + showContrib: true, + showIcons: true }) - ].filter(Boolean).join('
    \n')} -

    -

    ${ - (track.urls.length - ? strings('releaseInfo.listenOn', { - links: strings.list.or(track.urls.map(url => fancifyURL(url, {strings}))) + }), + track.coverArtists && strings('releaseInfo.coverArtBy', { + artists: getArtistString(track.coverArtists, { + strings, to, + showContrib: true, + showIcons: true }) - : strings('releaseInfo.listenOn.noLinks')) - }

    - ${otherReleases.length && fixWS` -

    ${strings('releaseInfo.alsoReleasedAs')}

    - - `} - ${track.contributors.textContent && fixWS` -

    - ${strings('releaseInfo.contributors')} -
    - ${transformInline(track.contributors.textContent, {strings, to})} -

    - `} - ${track.contributors.length && fixWS` -

    ${strings('releaseInfo.contributors')}

    - - `} - ${tracksReferenced.length && fixWS` -

    ${strings('releaseInfo.tracksReferenced', {track: `${track.name}`})}

    - ${generateTrackList(tracksReferenced, {strings, to})} - `} - ${tracksThatReference.length && fixWS` -

    ${strings('releaseInfo.tracksThatReference', {track: `${track.name}`})}

    - ${useDividedReferences && fixWS` -
    - ${ttrOfficial.length && fixWS` -
    ${strings('trackPage.referenceList.official')}
    -
    ${generateTrackList(ttrOfficial, {strings, to})}
    - `} - ${ttrFanon.length && fixWS` -
    ${strings('trackPage.referenceList.fandom')}
    -
    ${generateTrackList(ttrFanon, {strings, to})}
    - `} -
    - `} - ${!useDividedReferences && generateTrackList(tracksThatReference, {strings, to})} - `} - ${wikiInfo.features.flashesAndGames && flashesThatFeature.length && fixWS` -

    ${strings('releaseInfo.flashesThatFeature', {track: `${track.name}`})}

    - - `} - ${track.lyrics && fixWS` -

    ${strings('releaseInfo.lyrics')}

    -
    - ${transformLyrics(track.lyrics, {strings, to})} -
    - `} - ${hasCommentary && fixWS` -

    ${strings('releaseInfo.artistCommentary')}

    -
    - ${generateCommentary({strings, to})} -
    - `} - ` + )) + ) + ] : [], + + ...track.lyrics ? [ + `

    ${strings('releaseInfo.lyrics')}

    `, + html.tag('blockquote', transformLyrics(track.lyrics, {strings, to})) + ] : [], + + ...hasCommentary ? [ + `

    ${strings('releaseInfo.artistCommentary')}

    `, + html.tag('blockquote', generateCommentary({strings, to})) + ] : [] + ].filter(Boolean).join('\n'); + }) }, sidebarLeft: generateSidebarForAlbum(album, track, {strings, to}), @@ -3801,30 +3821,33 @@ function writeArtistPage(artist) { title: strings('artistPage.title', {artist: name}), main: { - content: fixWS` - ${artist.hasAvatar && generateCoverLink({ + content: [ + artist.hasAvatar && generateCoverLink({ strings, to, src: to('localized.artistAvatar', artist.directory), alt: strings('misc.alt.artistAvatar') - })} -

    ${strings('artistPage.title', {artist: name})}

    - ${note && fixWS` -

    ${strings('releaseInfo.note')}

    -
    - ${transformMultiline(note, {strings, to})} -
    -
    - `} - ${urls.length && `

    ${strings('releaseInfo.visitOn', { + }), + + `

    ${strings('artistPage.title', {artist: name})}

    `, + + ...note ? [ + `

    ${strings('releaseInfo.note')}

    `, + html.tag('blockquote', transformMultiline(note, {strings, to})), + `
    ` + ], + + urls.length && html.tag('p', strings('releaseInfo.visitOn', { links: strings.list.or(urls.map(url => fancifyURL(url, {strings}))) - })}

    `} - ${hasGallery && `

    ${strings('artistPage.viewArtGallery', { + })), + + hasGallery && html.tag('p', strings('artistPage.viewArtGallery', { link: strings.link.artistGallery(artist, { to, text: strings('artistPage.viewArtGallery.link') }) - })}

    `} -

    ${strings('misc.jumpTo.withLinks', { + })), + + html.tag('p', strings('misc.jumpTo.withLinks', { links: strings.list.unit([ [ [...releasedTracks, ...unreleasedTracks].length && `${strings('artistPage.trackList.title')}`, @@ -3834,51 +3857,57 @@ function writeArtistPage(artist) { wikiInfo.features.flashesAndGames && flashes.length && `${strings('artistPage.flashList.title')}`, commentaryThings.length && `${strings('artistPage.commentaryList.title')}` ].filter(Boolean)) - })}

    - ${(releasedTracks.length || unreleasedTracks.length) && fixWS` -

    ${strings('artistPage.trackList.title')}

    - `} - ${releasedTracks.length && fixWS` -

    ${strings('artistPage.contributedDurationLine', { + })), + + (releasedTracks.length || unreleasedTracks.length) && ( + `

    ${strings('artistPage.trackList.title')}

    `), + + ...releasedTracks.length ? [ + html.tag('p', strings('artistPage.contributedDurationLine', { artist: artist.name, duration: strings.count.duration(totalReleasedDuration, {approximate: true, unit: true}) - })}

    -

    ${strings('artistPage.musicGroupsLine', { + })), + html.tag('p', strings('artistPage.musicGroupsLine', { groups: strings.list.unit(musicGroups .map(({ group, contributions }) => strings('artistPage.groupsLine.item', { group: strings.link.groupInfo(group, {to}), contributions: strings.count.contributions(contributions) }))) - })}

    - ${generateTrackList(releasedTrackListChunks, {strings, to})} - `} - ${unreleasedTracks.length && fixWS` -

    ${strings('artistPage.unreleasedTrackList.title')}

    - ${generateTrackList(unreleasedTrackListChunks, {strings, to})} - `} - ${artThingsAll.length && fixWS` -

    ${strings('artistPage.artList.title')}

    - ${hasGallery && `

    ${strings('artistPage.viewArtGallery.orBrowseList', { + })), + generateTrackList(releasedTrackListChunks, {strings, to}) + ] : [], + + ...unreleasedTracks.length ? [ + `

    ${strings('artistPage.unreleasedTrackList.title')}

    `, + generateTrackList(unreleasedTrackListChunks, {strings, to}) + ] : [], + + ...artThingsAll.length ? [ + `

    ${strings('artistPage.artList.title')}

    `, + + hasGallery && html.tag('p', strings('artistPage.viewArtGallery.orBrowseList', { link: strings.link.artistGallery(artist, { to, text: strings('artistPage.viewArtGallery.link') }) - })}

    `} -

    ${strings('artistPage.artGroupsLine', { + })), + + html.tag('p', strings('artistPage.artGroupsLine', { groups: strings.list.unit(artGroups .map(({ group, contributions }) => strings('artistPage.groupsLine.item', { group: strings.link.groupInfo(group, {to}), contributions: strings.count.contributions(contributions) }))) - })}

    -
    - ${artListChunks.map(({date, album, chunk}) => fixWS` -
    ${strings('artistPage.creditList.album.withDate', { + })) + + html.tag('dl', + artListChunks.flatMap(({date, album, chunk}) => [ + html.tag('dt', strings('artistPage.creditList.album.withDate', { album: strings.link.album(album, {to}), date: strings.count.date(date) - })}
    -
      - ${(chunk + })), + html.tag('dd', html.tag('ul', + (chunk .map(({album, track, key, ...props}) => ({ entry: (track ? strings('artistPage.creditList.entry.track', { @@ -3893,21 +3922,22 @@ function writeArtistPage(artist) { })) .map(opts => generateEntryAccents({strings, to, ...opts})) .map(row => `
    • ${row}
    • `) - .join('\n'))} -
    - `).join('\n')} -
    - `} - ${wikiInfo.features.flashesAndGames && flashes.length && fixWS` -

    ${strings('artistPage.flashList.title')}

    -
    - ${flashListChunks.map(({act, chunk, dateFirst, dateLast}) => fixWS` -
    ${strings('artistPage.creditList.flashAct.withDateRange', { + .join('\n')) + )) + ]) + ) + ] : [], + + ...wikiInfo.features.flashesAndGames && flashes.length ? [ + `

    ${strings('artistPage.flashList.title')}

    `, + html.tag('dl', + flashListChunks.flatMap(({act, chunk, dateFirst, dateLast}) => [ + html.tag('dt', strings('artistPage.creditList.flashAct.withDateRange', { act: strings.link.flash(chunk[0].flash, {to, text: act.name}), dateRange: strings.count.dateRange([dateFirst, dateLast]) - })}
    -
      - ${(chunk + })), + html.tag('dd', html.tag('ul', + (chunk .map(({flash, ...props}) => ({ entry: strings('artistPage.creditList.entry.flash', { flash: strings.link.flash(flash, {to}) @@ -3916,32 +3946,33 @@ function writeArtistPage(artist) { })) .map(opts => generateEntryAccents({strings, to, ...opts})) .map(row => `
    • ${row}
    • `) - .join('\n'))} -
    - `).join('\n')} -
    - `} - ${commentaryThings.length && fixWS` -

    ${strings('artistPage.commentaryList.title')}

    -
    - ${commentaryListChunks.map(({album, chunk}) => fixWS` -
    ${strings('artistPage.creditList.album', { + .join('\n')) + )) + ]) + ) + ] : [], + + ...commentaryThings.length ? [ + `

    ${strings('artistPage.commentaryList.title')}

    `, + html.tag('dl', + commentaryListChunks.flatMap(({album, chunk}) => [ + html.tag('dt', strings('artistPage.creditList.album', { album: strings.link.album(album, {to}) - })}
    -
      - ${(chunk + })), + html.tag('dd', html.tag('ul', + (chunk .map(({album, track, ...props}) => track ? strings('artistPage.creditList.entry.track', { track: strings.link.track(track, {to}) }) : `${strings('artistPage.creditList.entry.album.commentary')}`) .map(row => `
    • ${row}
    • `) - .join('\n'))} -
    - `).join('\n')} -
    - `} - ` + .join('\n')) + )) + ]) + ) + ] : [] + ].filter(Boolean).join('\n') }, nav: generateNavForArtist(artist, {strings, to, isGallery: false, hasGallery}) @@ -3956,13 +3987,15 @@ function writeArtistPage(artist) { main: { classes: ['top-index'], - content: fixWS` -

    ${strings('artistGalleryPage.title', {artist: name})}

    -

    ${strings('artistGalleryPage.infoLine', { - coverArts: strings.count.coverArts(artThingsGallery.length, {unit: true}) - })}

    -
    - ${getGridHTML({ + content: [ + `

    ${strings('artistGalleryPage.title', {artist: name})}

    `, + html.tag('p', {class: 'quick-info'}, + strings('artistGalleryPage.infoLine', { + coverArts: strings.count.coverArts(artThingsGallery.length, {unit: true}) + }) + ), + html.tag('div', {class: 'grid-listing'}, + getGridHTML({ strings, to, entries: artThingsGallery.map(item => ({item})), srcFn: thing => (thing.album @@ -3971,9 +4004,9 @@ function writeArtistPage(artist) { hrefFn: thing => (thing.album ? to('localized.track', thing.directory) : to('localized.album', thing.directory)) - })} -
    - ` + }) + ) + ].filter(Boolean).join('\n') }, nav: generateNavForArtist(artist, {strings, to, isGallery: true, hasGallery}) @@ -6561,7 +6594,8 @@ async function main() { await progressPromiseAll(`Writing data files shared across languages.`, queue( // TODO: This only supports one <>-style argument. - dataWrites.map(({path, data}) => () => writeData(path[0], path[1], data())), + dataWrites.map(({path, file = 'data.json', data}) => + () => writeData(path[0], path[1], file, data())), queueSize )); -- cgit 1.3.0-6-gf8a5