« get me outta code hell

data: Contribution: chop withMatchingContributionPresets - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-11-27 17:43:01 -0400
committer(quasar) nebula <qznebula@protonmail.com>2025-11-27 17:43:01 -0400
commit458e7bc34fb5c313f45bb3be00877fed0c276678 (patch)
tree600cea11a7db0a010c21384a16c84281c7145bff
parentd08cb46607d19326cb4021a26fc9c8a20a6ae6d7 (diff)
data: Contribution: chop withMatchingContributionPresets
-rw-r--r--src/data/composite/things/contribution/index.js1
-rw-r--r--src/data/composite/things/contribution/inheritFromContributionPresets.js17
-rw-r--r--src/data/composite/things/contribution/withMatchingContributionPresets.js70
-rw-r--r--src/data/things/contribution.js62
4 files changed, 55 insertions, 95 deletions
diff --git a/src/data/composite/things/contribution/index.js b/src/data/composite/things/contribution/index.js
index f105ebe9..2bbf994d 100644
--- a/src/data/composite/things/contribution/index.js
+++ b/src/data/composite/things/contribution/index.js
@@ -1,4 +1,3 @@
 export {default as inheritFromContributionPresets} from './inheritFromContributionPresets.js';
 export {default as withContainingReverseContributionList} from './withContainingReverseContributionList.js';
 export {default as withContributionContext} from './withContributionContext.js';
-export {default as withMatchingContributionPresets} from './withMatchingContributionPresets.js';
diff --git a/src/data/composite/things/contribution/inheritFromContributionPresets.js b/src/data/composite/things/contribution/inheritFromContributionPresets.js
index a74e6db3..b429b3ef 100644
--- a/src/data/composite/things/contribution/inheritFromContributionPresets.js
+++ b/src/data/composite/things/contribution/inheritFromContributionPresets.js
@@ -3,29 +3,18 @@ import {input, templateCompositeFrom} from '#composite';
 import {raiseOutputWithoutDependency} from '#composite/control-flow';
 import {withPropertyFromList} from '#composite/data';
 
-import withMatchingContributionPresets
-  from './withMatchingContributionPresets.js';
-
 export default templateCompositeFrom({
   annotation: `inheritFromContributionPresets`,
 
-  inputs: {
-    property: input({type: 'string'}),
-  },
-
   steps: () => [
-    withMatchingContributionPresets().outputs({
-      '#matchingContributionPresets': '#presets',
-    }),
-
     raiseOutputWithoutDependency({
-      dependency: '#presets',
+      dependency: 'matchingContributionPresets',
       mode: input.value('empty'),
     }),
 
     withPropertyFromList({
-      list: '#presets',
-      property: input('property'),
+      list: 'matchingContributionPresets',
+      property: input.thisProperty(),
     }),
 
     {
diff --git a/src/data/composite/things/contribution/withMatchingContributionPresets.js b/src/data/composite/things/contribution/withMatchingContributionPresets.js
deleted file mode 100644
index 09454164..00000000
--- a/src/data/composite/things/contribution/withMatchingContributionPresets.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import {input, templateCompositeFrom} from '#composite';
-
-import {raiseOutputWithoutDependency} from '#composite/control-flow';
-import {withPropertyFromObject} from '#composite/data';
-
-import withContributionContext from './withContributionContext.js';
-
-export default templateCompositeFrom({
-  annotation: `withMatchingContributionPresets`,
-
-  outputs: ['#matchingContributionPresets'],
-
-  steps: () => [
-    withPropertyFromObject({
-      object: 'thing',
-      property: input.value('wikiInfo'),
-      internal: input.value(true),
-    }),
-
-    raiseOutputWithoutDependency({
-      dependency: '#thing.wikiInfo',
-      output: input.value({
-        '#matchingContributionPresets': null,
-      }),
-    }),
-
-    withPropertyFromObject({
-      object: '#thing.wikiInfo',
-      property: input.value('contributionPresets'),
-    }).outputs({
-      '#thing.wikiInfo.contributionPresets': '#contributionPresets',
-    }),
-
-    raiseOutputWithoutDependency({
-      dependency: '#contributionPresets',
-      mode: input.value('empty'),
-      output: input.value({
-        '#matchingContributionPresets': [],
-      }),
-    }),
-
-    withContributionContext(),
-
-    {
-      dependencies: [
-        '#contributionPresets',
-        '#contributionTarget',
-        '#contributionProperty',
-        'annotation',
-      ],
-
-      compute: (continuation, {
-        ['#contributionPresets']: presets,
-        ['#contributionTarget']: target,
-        ['#contributionProperty']: property,
-        ['annotation']: annotation,
-      }) => continuation({
-        ['#matchingContributionPresets']:
-          presets
-            .filter(preset =>
-              preset.context[0] === target &&
-              preset.context.slice(1).includes(property) &&
-              // For now, only match if the annotation is a complete match.
-              // Partial matches (e.g. because the contribution includes "two"
-              // annotations, separated by commas) don't count.
-              preset.annotation === annotation),
-      })
-    },
-  ],
-});
diff --git a/src/data/things/contribution.js b/src/data/things/contribution.js
index 2f6e66d1..41b57b7b 100644
--- a/src/data/things/contribution.js
+++ b/src/data/things/contribution.js
@@ -30,7 +30,6 @@ import {
   inheritFromContributionPresets,
   withContainingReverseContributionList,
   withContributionContext,
-  withMatchingContributionPresets,
 } from '#composite/things/contribution';
 
 export class Contribution extends Thing {
@@ -64,9 +63,7 @@ export class Contribution extends Thing {
     },
 
     countInContributionTotals: [
-      inheritFromContributionPresets({
-        property: input.thisProperty(),
-      }),
+      inheritFromContributionPresets(),
 
       exposeUpdateValueOrContinue({
         validate: input.value(isBoolean),
@@ -91,9 +88,7 @@ export class Contribution extends Thing {
     ],
 
     countInDurationTotals: [
-      inheritFromContributionPresets({
-        property: input.thisProperty(),
-      }),
+      inheritFromContributionPresets(),
 
       exposeUpdateValueOrContinue({
         validate: input.value(isBoolean),
@@ -160,11 +155,58 @@ export class Contribution extends Thing {
     ],
 
     matchingPresets: [
-      withMatchingContributionPresets(),
+      withPropertyFromObject({
+        object: 'thing',
+        property: input.value('wikiInfo'),
+        internal: input.value(true),
+      }),
 
-      exposeDependency({
-        dependency: '#matchingContributionPresets',
+      exitWithoutDependency({
+        dependency: '#thing.wikiInfo',
+        value: input.value([]),
+      }),
+
+      withPropertyFromObject({
+        object: '#thing.wikiInfo',
+        property: input.value('contributionPresets'),
+      }).outputs({
+        '#thing.wikiInfo.contributionPresets': '#contributionPresets',
+      }),
+
+      exitWithoutDependency({
+        dependency: '#contributionPresets',
+        mode: input.value('empty'),
+        value: input.value([]),
       }),
+
+      withContributionContext(),
+
+      {
+        dependencies: [
+          '#contributionPresets',
+          '#contributionTarget',
+          '#contributionProperty',
+          'annotation',
+        ],
+
+        compute: (continuation, {
+          ['#contributionPresets']: presets,
+          ['#contributionTarget']: target,
+          ['#contributionProperty']: property,
+          ['annotation']: annotation,
+        }) => continuation({
+          ['#matchingContributionPresets']:
+            presets
+              .filter(preset =>
+                preset.context[0] === target &&
+                preset.context.slice(1).includes(property) &&
+                // For now, only match if the annotation is a complete match.
+                // Partial matches (e.g. because the contribution includes "two"
+                // annotations, separated by commas) don't count.
+                preset.annotation === annotation),
+        })
+      },
+
     ],
 
     // All the contributions from the list which includes this contribution.