« get me outta code hell

content: generateListenLineOrList, generateReleaseInfoBlock - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateTrackReleaseInfo.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2026-05-01 18:37:35 -0300
committer(quasar) nebula <qznebula@protonmail.com>2026-05-01 18:37:35 -0300
commita1d39a16ab3ed60a9af4ef277fbf5c4a98a84b2d (patch)
tree5533aa908374b3575fbf1091950abde6e710a606 /src/content/dependencies/generateTrackReleaseInfo.js
parentf6aad9a81fbb1b4e619355cbec316988837fb61a (diff)
content: generateListenLineOrList, generateReleaseInfoBlock
Diffstat (limited to 'src/content/dependencies/generateTrackReleaseInfo.js')
-rw-r--r--src/content/dependencies/generateTrackReleaseInfo.js92
1 files changed, 43 insertions, 49 deletions
diff --git a/src/content/dependencies/generateTrackReleaseInfo.js b/src/content/dependencies/generateTrackReleaseInfo.js
index 0207e574..001f5a54 100644
--- a/src/content/dependencies/generateTrackReleaseInfo.js
+++ b/src/content/dependencies/generateTrackReleaseInfo.js
@@ -1,22 +1,21 @@
 import {compareArrays} from '#sugar';
 
 export default {
-  relations(relation, track) {
-    const relations = {};
+  relations: (relation, track) => ({
+    block:
+      relation('generateReleaseInfoBlock'),
 
-    relations.artistContributionsLine =
+    artistContributionsLine:
       relation('generateReleaseInfoContributionsLine',
         track.artistContribs,
-        track.artistText);
+        track.artistText),
 
-    relations.listenLine =
-      relation('generateReleaseInfoListenLine', track);
+    listenLineOrList:
+      relation('generateListenLineOrList', track),
 
-    relations.albumLink =
-      relation('linkAlbum', track.album);
-
-    return relations;
-  },
+    albumLink:
+      relation('linkAlbum', track.album),
+  }),
 
   data(track) {
     const data = {};
@@ -48,43 +47,38 @@ export default {
   generate: (data, relations, {html, language}) =>
     language.encapsulate('releaseInfo', capsule =>
       html.tags([
-        html.tag('p',
-          {[html.onlyIfContent]: true},
-          {[html.joinChildren]: html.tag('br')},
-
-          [
-            language.encapsulate(capsule, 'by', capsule => {
-              const withAlbum =
-                (data.showAlbum ? '.withAlbum' : '');
-
-              const albumOptions =
-                (data.showAlbum ? {album: relations.albumLink} : {});
-
-              return relations.artistContributionsLine.slots({
-                stringKey: capsule + withAlbum,
-                featuringStringKey: capsule + '.featuring' + withAlbum,
-
-                additionalStringOptions: albumOptions,
-
-                chronologyKind: 'track',
-              });
-            }),
-
-            language.$(capsule, 'released', {
-              [language.onlyIfOptions]: ['date'],
-              date: language.formatDate(data.date),
-            }),
-
-            language.$(capsule, 'duration', {
-              [language.onlyIfOptions]: ['duration'],
-              duration: language.formatDuration(data.duration),
-            }),
-          ]),
-
-        html.tag('p',
-          relations.listenLine.slots({
-            visibleWithoutLinks: true,
-            context: ['track'],
-          })),
+        relations.block.slot('items', [
+          language.encapsulate(capsule, 'by', capsule => {
+            const withAlbum =
+              (data.showAlbum ? '.withAlbum' : '');
+
+            const albumOptions =
+              (data.showAlbum ? {album: relations.albumLink} : {});
+
+            return relations.artistContributionsLine.slots({
+              stringKey: capsule + withAlbum,
+              featuringStringKey: capsule + '.featuring' + withAlbum,
+
+              additionalStringOptions: albumOptions,
+
+              chronologyKind: 'track',
+            });
+          }),
+
+          language.$(capsule, 'released', {
+            [language.onlyIfOptions]: ['date'],
+            date: language.formatDate(data.date),
+          }),
+
+          language.$(capsule, 'duration', {
+            [language.onlyIfOptions]: ['duration'],
+            duration: language.formatDuration(data.duration),
+          }),
+        ]),
+
+        relations.listenLineOrList.slots({
+          visibleWithoutLinks: true,
+          context: 'track',
+        }),
       ])),
 };