« 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/generateAlbumLinkNavAccent.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateAlbumLinkNavAccent.js')
-rw-r--r--src/content/dependencies/generateAlbumLinkNavAccent.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/content/dependencies/generateAlbumLinkNavAccent.js b/src/content/dependencies/generateAlbumLinkNavAccent.js
new file mode 100644
index 00000000..50a53472
--- /dev/null
+++ b/src/content/dependencies/generateAlbumLinkNavAccent.js
@@ -0,0 +1,46 @@
+export default {
+  data: (album) => ({
+    style:
+      album.style,
+
+    nameDetail:
+      album.nameDetail,
+  }),
+
+  slots: {
+    navString: {type: 'string', default: 'albumPage.nav'},
+  },
+
+  generate: (data, slots, {html, language}) =>
+    language.encapsulate(slots.navString, 'albumAccent', capsule => {
+      let workingCapsule = capsule;
+      let workingOptions = {};
+
+      let any = false;
+
+      if (data.nameDetail) {
+        workingCapsule += '.withNameDetail';
+        workingOptions.nameDetail = data.nameDetail;
+        any = true;
+      }
+
+      const type =
+        (data.style === 'single'
+          ? language.$(capsule, 'type.single')
+       : data.style === 'in-game vgm'
+          ? language.$(capsule, 'type.vgm')
+          : html.blank());
+
+      if (!html.isBlank(type)) {
+        workingCapsule += '.withType';
+        workingOptions.type = type;
+        any = true;
+      }
+
+      if (any) {
+        return language.$(workingCapsule, workingOptions);
+      } else {
+        return html.blank();
+      }
+    }),
+};