From 89e73c133d66a868c73c4ef0bac3e0aef67e6c26 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 7 Mar 2024 10:55:48 -0400 Subject: data: withClonedThings --- .../withRecontextualizedContributionList.js | 52 ++++++++++++---------- 1 file changed, 28 insertions(+), 24 deletions(-) (limited to 'src/data/composite/wiki-data/withRecontextualizedContributionList.js') diff --git a/src/data/composite/wiki-data/withRecontextualizedContributionList.js b/src/data/composite/wiki-data/withRecontextualizedContributionList.js index 418b346f..1c86c0ab 100644 --- a/src/data/composite/wiki-data/withRecontextualizedContributionList.js +++ b/src/data/composite/wiki-data/withRecontextualizedContributionList.js @@ -2,11 +2,10 @@ // updated to match the current thing. Overwrite the provided dependency. // Doesn't do anything if the provided dependency is null. -import CacheableObject from '#cacheable-object'; import {input, templateCompositeFrom} from '#composite'; import {raiseOutputWithoutDependency} from '#composite/control-flow'; -import {withMappedList} from '#composite/data'; +import {withClonedThings} from '#composite/wiki-data'; export default templateCompositeFrom({ annotation: `withRecontextualizedContributionList`, @@ -23,9 +22,25 @@ export default templateCompositeFrom({ }) => [list], steps: () => [ - raiseOutputWithoutDependency({ - dependency: input('list'), - }), + // TODO: Is raiseOutputWithoutDependency workable here? + // Is it true that not specifying any output wouldn't overwrite + // the provided dependency? + { + dependencies: [ + input.staticDependency('list'), + input('list'), + ], + + compute: (continuation, { + [input.staticDependency('list')]: dependency, + [input('list')]: list, + }) => + (list + ? continuation() + : continuation.raiseOutput({ + [dependency]: list, + })), + }, { dependencies: [input.myself(), input.thisProperty()], @@ -41,29 +56,18 @@ export default templateCompositeFrom({ }), }, - { - dependencies: ['#assignment'], - - compute: (continuation, { - ['#assignment']: assignment, - }) => continuation({ - ['#map']: - contrib => - Object.assign( - CacheableObject.clone(contrib), - assignment), - }), - }, - - withMappedList({ - list: input('list'), - map: '#map', + withClonedThings({ + things: input('list'), + assign: '#assignment', }).outputs({ - '#mappedList': '#newContributions', + '#clonedThings': '#newContributions', }), { - dependencies: [input.staticDependency('list'), '#newContributions'], + dependencies: [ + input.staticDependency('list'), + '#newContributions', + ], compute: (continuation, { [input.staticDependency('list')]: listDependency, -- cgit 1.3.0-6-gf8a5