diff options
Diffstat (limited to 'src/content/dependencies/generateMusicVideoDateLine.js')
| -rw-r--r-- | src/content/dependencies/generateMusicVideoDateLine.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/content/dependencies/generateMusicVideoDateLine.js b/src/content/dependencies/generateMusicVideoDateLine.js new file mode 100644 index 00000000..4fb281f4 --- /dev/null +++ b/src/content/dependencies/generateMusicVideoDateLine.js @@ -0,0 +1,56 @@ +function sameDay(musicVideo, thing) { + if (!musicVideo.dateIsSpecified) return null; + + const compare = (a, b) => + a.toDateString() === b.toDateString(); + + const album = thing.isTrack ? thing.album : thing; + const track = thing.isTrack ? thing : null; + + if (compare(musicVideo.date, album.date)) { + if (album.style === 'single') { + return 'single'; + } else { + return 'album'; + } + } + + if (compare(musicVideo.date, track.date)) { + return 'track'; + } + + return null; + +} + +export default { + data: (musicVideo, thing) => ({ + date: + musicVideo.date, + + dateIsSpecified: + musicVideo.dateIsSpecified, + + sameDay: + sameDay(musicVideo, thing), + }), + + generate: (data, {language}) => + language.encapsulate('misc.musicVideo.date', capsule => [ + data.sameDay === 'album' && + language.$(capsule, 'sameDayAsAlbum'), + + data.sameDay === 'single' && + language.$(capsule, 'sameDayAsTrack'), + + data.sameDay === 'track' && + language.$(capsule, 'sameDayAsTrack'), + + data.sameDay === null && + data.dateIsSpecified && + language.$(capsule, { + date: + language.formatDate(data.date), + }), + ]), +}; |