From 85e9eb56addf3396a6fc84addbe79b6493d4a9b3 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 24 Apr 2024 17:08:45 -0300 Subject: data: withReverse{Reference,Contribution}List: better exiting An existing test for withAlbum (which is semi-newly based on withUniqueReferencingThing, and thus withReverseReferenceList) indicates that if we just can't *find* the album in a provided data array, that's not an exit condition. This commit adapts withReverseReferencingList to respect that when the data list is empty. (Treating an empty array as the same thing as an array that isn't provided at all - the existing behavior - is really just a bug!) --- src/data/composite/wiki-data/withReverseContributionList.js | 10 +++++++++- src/data/composite/wiki-data/withReverseReferenceList.js | 10 +++++++++- src/data/composite/wiki-data/withUniqueReferencingThing.js | 5 ++--- 3 files changed, 20 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/data/composite/wiki-data/withReverseContributionList.js b/src/data/composite/wiki-data/withReverseContributionList.js index c5dcad0..91e125e 100644 --- a/src/data/composite/wiki-data/withReverseContributionList.js +++ b/src/data/composite/wiki-data/withReverseContributionList.js @@ -11,7 +11,8 @@ import {input, templateCompositeFrom} from '#composite'; -import {exitWithoutDependency} from '#composite/control-flow'; +import {exitWithoutDependency, raiseOutputWithoutDependency} + from '#composite/control-flow'; import inputWikiData from './inputWikiData.js'; @@ -32,10 +33,17 @@ export default templateCompositeFrom({ outputs: ['#reverseContributionList'], steps: () => [ + // Early exit with an empty array if the data list isn't available. exitWithoutDependency({ dependency: input('data'), value: input.value([]), + }), + + // Raise an empty array (don't early exit) if the data list is empty. + raiseOutputWithoutDependency({ + dependency: input('data'), mode: input.value('empty'), + output: input.value({'#reverseContributionList': []}), }), { diff --git a/src/data/composite/wiki-data/withReverseReferenceList.js b/src/data/composite/wiki-data/withReverseReferenceList.js index 2d7a421..8cd540a 100644 --- a/src/data/composite/wiki-data/withReverseReferenceList.js +++ b/src/data/composite/wiki-data/withReverseReferenceList.js @@ -13,7 +13,8 @@ import {input, templateCompositeFrom} from '#composite'; -import {exitWithoutDependency} from '#composite/control-flow'; +import {exitWithoutDependency, raiseOutputWithoutDependency} + from '#composite/control-flow'; import inputWikiData from './inputWikiData.js'; @@ -34,10 +35,17 @@ export default templateCompositeFrom({ outputs: ['#reverseReferenceList'], steps: () => [ + // Early exit with an empty array if the data list isn't available. exitWithoutDependency({ dependency: input('data'), value: input.value([]), + }), + + // Raise an empty array (don't early exit) if the data list is empty. + raiseOutputWithoutDependency({ + dependency: input('data'), mode: input.value('empty'), + output: input.value({'#reverseReferenceList': []}), }), { diff --git a/src/data/composite/wiki-data/withUniqueReferencingThing.js b/src/data/composite/wiki-data/withUniqueReferencingThing.js index ce04f83..61c1061 100644 --- a/src/data/composite/wiki-data/withUniqueReferencingThing.js +++ b/src/data/composite/wiki-data/withUniqueReferencingThing.js @@ -21,11 +21,10 @@ export default templateCompositeFrom({ outputs: ['#uniqueReferencingThing'], steps: () => [ - // withReverseRefernceList does this check too, but it early exits with - // an empty array. That's no good here! + // Early exit with null (not an empty array) if the data list + // isn't available. exitWithoutDependency({ dependency: input('data'), - mode: input.value('empty'), }), withReverseReferenceList({ -- cgit 1.3.0-6-gf8a5