« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateMusicVideoDateLine.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateMusicVideoDateLine.js')
-rw-r--r--src/content/dependencies/generateMusicVideoDateLine.js56
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),
+        }),
+    ]),
+};