« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/data/composite/things/artwork/index.js3
-rw-r--r--src/data/composite/things/artwork/withAttachedArtwork.js43
-rw-r--r--src/data/composite/things/artwork/withContribsFromAttachedArtwork.js27
-rw-r--r--src/data/composite/things/artwork/withPropertyFromAttachedArtwork.js65
-rw-r--r--src/data/things/artwork.js50
5 files changed, 39 insertions, 149 deletions
diff --git a/src/data/composite/things/artwork/index.js b/src/data/composite/things/artwork/index.js
index 3693c10f..e2661b50 100644
--- a/src/data/composite/things/artwork/index.js
+++ b/src/data/composite/things/artwork/index.js
@@ -1,5 +1,2 @@
-export {default as withAttachedArtwork} from './withAttachedArtwork.js';
 export {default as withContainingArtworkList} from './withContainingArtworkList.js';
-export {default as withContribsFromAttachedArtwork} from './withContribsFromAttachedArtwork.js';
 export {default as withDate} from './withDate.js';
-export {default as withPropertyFromAttachedArtwork} from './withPropertyFromAttachedArtwork.js';
diff --git a/src/data/composite/things/artwork/withAttachedArtwork.js b/src/data/composite/things/artwork/withAttachedArtwork.js
deleted file mode 100644
index d7c0d87b..00000000
--- a/src/data/composite/things/artwork/withAttachedArtwork.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import {input, templateCompositeFrom} from '#composite';
-
-import {flipFilter, raiseOutputWithoutDependency}
-  from '#composite/control-flow';
-import {withNearbyItemFromList, withPropertyFromList} from '#composite/data';
-
-import withContainingArtworkList from './withContainingArtworkList.js';
-
-export default templateCompositeFrom({
-  annotaion: `withContribsFromMainArtwork`,
-
-  outputs: ['#attachedArtwork'],
-
-  steps: () => [
-    raiseOutputWithoutDependency({
-      dependency: 'attachAbove',
-      mode: input.value('falsy'),
-      output: input.value({'#attachedArtwork': null}),
-    }),
-
-    withContainingArtworkList(),
-
-    withPropertyFromList({
-      list: '#containingArtworkList',
-      property: input.value('attachAbove'),
-    }),
-
-    flipFilter({
-      filter: '#containingArtworkList.attachAbove',
-    }).outputs({
-      '#containingArtworkList.attachAbove': '#filterNotAttached',
-    }),
-
-    withNearbyItemFromList({
-      list: '#containingArtworkList',
-      item: input.myself(),
-      offset: input.value(-1),
-      filter: '#filterNotAttached',
-    }).outputs({
-      '#nearbyItem': '#attachedArtwork',
-    }),
-  ],
-});
diff --git a/src/data/composite/things/artwork/withContribsFromAttachedArtwork.js b/src/data/composite/things/artwork/withContribsFromAttachedArtwork.js
deleted file mode 100644
index e9425c95..00000000
--- a/src/data/composite/things/artwork/withContribsFromAttachedArtwork.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import {input, templateCompositeFrom} from '#composite';
-
-import {raiseOutputWithoutDependency} from '#composite/control-flow';
-import {withRecontextualizedContributionList} from '#composite/wiki-data';
-
-import withPropertyFromAttachedArtwork from './withPropertyFromAttachedArtwork.js';
-
-export default templateCompositeFrom({
-  annotaion: `withContribsFromAttachedArtwork`,
-
-  outputs: ['#attachedArtwork.artistContribs'],
-
-  steps: () => [
-    withPropertyFromAttachedArtwork({
-      property: input.value('artistContribs'),
-    }),
-
-    raiseOutputWithoutDependency({
-      dependency: '#attachedArtwork.artistContribs',
-      output: input.value({'#attachedArtwork.artistContribs': null}),
-    }),
-
-    withRecontextualizedContributionList({
-      list: '#attachedArtwork.artistContribs',
-    }),
-  ],
-});
diff --git a/src/data/composite/things/artwork/withPropertyFromAttachedArtwork.js b/src/data/composite/things/artwork/withPropertyFromAttachedArtwork.js
deleted file mode 100644
index a2f954b9..00000000
--- a/src/data/composite/things/artwork/withPropertyFromAttachedArtwork.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import {input, templateCompositeFrom} from '#composite';
-
-import {withResultOfAvailabilityCheck} from '#composite/control-flow';
-import {withPropertyFromObject} from '#composite/data';
-
-import withAttachedArtwork from './withAttachedArtwork.js';
-
-function getOutputName({
-  [input.staticValue('property')]: property,
-}) {
-  if (property) {
-    return `#attachedArtwork.${property}`;
-  } else {
-    return '#value';
-  }
-}
-
-export default templateCompositeFrom({
-  annotation: `withPropertyFromAttachedArtwork`,
-
-  inputs: {
-    property: input({type: 'string'}),
-  },
-
-  outputs: inputs => [getOutputName(inputs)],
-
-  steps: () => [
-    {
-      dependencies: [input.staticValue('property')],
-      compute: (continuation, inputs) =>
-        continuation({'#output': getOutputName(inputs)}),
-    },
-
-    withAttachedArtwork(),
-
-    withResultOfAvailabilityCheck({
-      from: '#attachedArtwork',
-    }),
-
-    {
-      dependencies: ['#availability', '#output'],
-      compute: (continuation, {
-        ['#availability']: availability,
-        ['#output']: output,
-      }) =>
-        (availability
-          ? continuation()
-          : continuation.raiseOutput({[output]: null})),
-    },
-
-    withPropertyFromObject({
-      object: '#attachedArtwork',
-      property: input('property'),
-    }),
-
-    {
-      dependencies: ['#value', '#output'],
-      compute: (continuation, {
-        ['#value']: value,
-        ['#output']: output,
-      }) =>
-        continuation.raiseOutput({[output]: value}),
-    },
-  ],
-});
diff --git a/src/data/things/artwork.js b/src/data/things/artwork.js
index d8f7458a..8958bf80 100644
--- a/src/data/things/artwork.js
+++ b/src/data/things/artwork.js
@@ -31,10 +31,12 @@ import {
   exposeDependency,
   exposeDependencyOrContinue,
   exposeUpdateValueOrContinue,
+  flipFilter,
 } from '#composite/control-flow';
 
 import {
   withFilteredList,
+  withNearbyItemFromList,
   withPropertyFromList,
   withPropertyFromObject,
 } from '#composite/data';
@@ -58,13 +60,8 @@ import {
   wikiData,
 } from '#composite/wiki-properties';
 
-import {
-  withAttachedArtwork,
-  withContainingArtworkList,
-  withContribsFromAttachedArtwork,
-  withDate,
-  withPropertyFromAttachedArtwork,
-} from '#composite/things/artwork';
+import {withContainingArtworkList, withDate}
+  from '#composite/things/artwork';
 
 export class Artwork extends Thing {
   static [Thing.referenceType] = 'artwork';
@@ -190,7 +187,14 @@ export class Artwork extends Thing {
         mode: input.value('empty'),
       }),
 
-      withContribsFromAttachedArtwork(),
+      withPropertyFromObject({
+        object: 'attachedArtwork',
+        property: input.value('artistContribs'),
+      }),
+
+      withRecontextualizedContributionList({
+        list: '#attachedArtwork.artistContribs',
+      }),
 
       exposeDependencyOrContinue({
         dependency: '#attachedArtwork.artistContribs',
@@ -235,7 +239,8 @@ export class Artwork extends Thing {
         mode: input.value('empty'),
       }),
 
-      withPropertyFromAttachedArtwork({
+      withPropertyFromObject({
+        object: 'attachedArtwork',
         property: input.value('artTags'),
       }),
 
@@ -376,10 +381,33 @@ export class Artwork extends Thing {
     ],
 
     attachedArtwork: [
-      withAttachedArtwork(),
+      exitWithoutDependency({
+        dependency: 'attachAbove',
+        mode: input.value('falsy'),
+      }),
+
+      withContainingArtworkList(),
+
+      withPropertyFromList({
+        list: '#containingArtworkList',
+        property: input.value('attachAbove'),
+      }),
+
+      flipFilter({
+        filter: '#containingArtworkList.attachAbove',
+      }).outputs({
+        '#containingArtworkList.attachAbove': '#filterNotAttached',
+      }),
+
+      withNearbyItemFromList({
+        list: '#containingArtworkList',
+        item: input.myself(),
+        offset: input.value(-1),
+        filter: '#filterNotAttached',
+      }),
 
       exposeDependency({
-        dependency: '#attachedArtwork',
+        dependency: '#nearbyItem',
       }),
     ],