« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data
diff options
context:
space:
mode:
Diffstat (limited to 'src/data')
-rw-r--r--src/data/composite/things/track/index.js2
-rw-r--r--src/data/composite/things/track/withDirectorySuffix.js29
-rw-r--r--src/data/composite/things/track/withSuffixDirectoryFromAlbum.js45
-rw-r--r--src/data/things/track.js50
4 files changed, 24 insertions, 102 deletions
diff --git a/src/data/composite/things/track/index.js b/src/data/composite/things/track/index.js
index 6b11089b..8036d4df 100644
--- a/src/data/composite/things/track/index.js
+++ b/src/data/composite/things/track/index.js
@@ -2,8 +2,6 @@ export {default as alwaysReferenceByDirectory} from './alwaysReferenceByDirector
 export {default as exitWithoutUniqueCoverArt} from './exitWithoutUniqueCoverArt.js';
 export {default as inheritContributionListFromMainRelease} from './inheritContributionListFromMainRelease.js';
 export {default as inheritFromMainRelease} from './inheritFromMainRelease.js';
-export {default as withDirectorySuffix} from './withDirectorySuffix.js';
 export {default as withPropertyFromAlbum} from './withPropertyFromAlbum.js';
 export {default as withPropertyFromMainRelease} from './withPropertyFromMainRelease.js';
-export {default as withSuffixDirectoryFromAlbum} from './withSuffixDirectoryFromAlbum.js';
 export {default as withTrackNumber} from './withTrackNumber.js';
diff --git a/src/data/composite/things/track/withDirectorySuffix.js b/src/data/composite/things/track/withDirectorySuffix.js
deleted file mode 100644
index 13813eeb..00000000
--- a/src/data/composite/things/track/withDirectorySuffix.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import {input, templateCompositeFrom} from '#composite';
-
-import {raiseOutputWithoutDependency} from '#composite/control-flow';
-import {withPropertyFromObject} from '#composite/data';
-
-import withSuffixDirectoryFromAlbum from './withSuffixDirectoryFromAlbum.js';
-
-export default templateCompositeFrom({
-  annotation: `withDirectorySuffix`,
-
-  outputs: ['#directorySuffix'],
-
-  steps: () => [
-    withSuffixDirectoryFromAlbum(),
-
-    raiseOutputWithoutDependency({
-      dependency: '#suffixDirectoryFromAlbum',
-      mode: input.value('falsy'),
-      output: input.value({'#directorySuffix': null}),
-    }),
-
-    withPropertyFromObject({
-      object: 'trackSection',
-      property: input.value('directorySuffix'),
-    }).outputs({
-      '#trackSection.directorySuffix': '#directorySuffix',
-    }),
-  ],
-});
diff --git a/src/data/composite/things/track/withSuffixDirectoryFromAlbum.js b/src/data/composite/things/track/withSuffixDirectoryFromAlbum.js
deleted file mode 100644
index b9d8848d..00000000
--- a/src/data/composite/things/track/withSuffixDirectoryFromAlbum.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import {input, templateCompositeFrom} from '#composite';
-
-import {withResultOfAvailabilityCheck} from '#composite/control-flow';
-import {withPropertyFromObject} from '#composite/data';
-
-export default templateCompositeFrom({
-  annotation: `withSuffixDirectoryFromAlbum`,
-
-  inputs: {
-    flagValue: input({
-      defaultDependency: '_suffixDirectoryFromAlbum',
-      acceptsNull: true,
-    }),
-  },
-
-  outputs: ['#suffixDirectoryFromAlbum'],
-
-  steps: () => [
-    withResultOfAvailabilityCheck({
-      from: input('flagValue'),
-    }),
-
-    {
-      dependencies: [
-        '#availability',
-        input('flagValue'),
-      ],
-
-      compute: (continuation, {
-        ['#availability']: availability,
-        [input('flagValue')]: flagValue,
-      }) =>
-        (availability
-          ? continuation.raiseOutput({['#suffixDirectoryFromAlbum']: flagValue})
-          : continuation()),
-    },
-
-    withPropertyFromObject({
-      object: 'trackSection',
-      property: input.value('suffixTrackDirectories'),
-    }).outputs({
-      '#trackSection.suffixTrackDirectories': '#suffixDirectoryFromAlbum',
-    }),
-  ],
-});
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 401543f3..31eed682 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -89,9 +89,7 @@ import {
   exitWithoutUniqueCoverArt,
   inheritContributionListFromMainRelease,
   inheritFromMainRelease,
-  withDirectorySuffix,
   withPropertyFromAlbum,
-  withSuffixDirectoryFromAlbum,
   withTrackNumber,
 } from '#composite/things/track';
 
@@ -136,34 +134,23 @@ export class Track extends Thing {
     name: name('Unnamed Track'),
     nameText: contentString(),
 
-    directory: [
-      withDirectorySuffix(),
-
-      directory({
-        suffix: '#directorySuffix',
-      }),
-    ],
+    directory: directory({
+      suffix: 'directorySuffix',
+    }),
 
     suffixDirectoryFromAlbum: [
-      {
-        dependencies: [
-          input.updateValue({validate: isBoolean}),
-        ],
-
-        compute: (continuation, {
-          [input.updateValue()]: value,
-        }) => continuation({
-          ['#flagValue']: value ?? false,
-        }),
-      },
+      exposeUpdateValueOrContinue({
+        validate: input.value(isBoolean),
+      }),
 
-      withSuffixDirectoryFromAlbum({
-        flagValue: '#flagValue',
+      withPropertyFromObject({
+        object: 'trackSection',
+        property: input.value('suffixTrackDirectories'),
       }),
 
       exposeDependency({
-        dependency: '#suffixDirectoryFromAlbum',
-      })
+        dependency: '#trackSection.suffixTrackDirectories',
+      }),
     ],
 
     alwaysReferenceByDirectory: alwaysReferenceByDirectory(),
@@ -632,8 +619,19 @@ export class Track extends Thing {
     commentatorArtists: commentatorArtists(),
 
     directorySuffix: [
-      withDirectorySuffix(),
-      exposeDependency({dependency: '#directorySuffix'}),
+      exitWithoutDependency({
+        dependency: 'suffixDirectoryFromAlbum',
+        mode: input.value('falsy'),
+      }),
+
+      withPropertyFromObject({
+        object: 'trackSection',
+        property: input.value('directorySuffix'),
+      }),
+
+      exposeDependency({
+        dependency: '#trackSection.directorySuffix',
+      }),
     ],
 
     date: [