diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-04-24 17:08:45 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-05-01 07:06:07 -0300 |
commit | 85e9eb56addf3396a6fc84addbe79b6493d4a9b3 (patch) | |
tree | f4606aa18f6345505e7a17a5b52aaa8b446ce863 | |
parent | b0ca5254cc40c504af34797a26c79da054e95093 (diff) |
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!)
3 files changed, 20 insertions, 5 deletions
diff --git a/src/data/composite/wiki-data/withReverseContributionList.js b/src/data/composite/wiki-data/withReverseContributionList.js index c5dcad07..91e125e4 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 2d7a421b..8cd540a5 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 ce04f838..61c10618 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({ |