diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-05-06 13:36:41 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-05-06 13:36:53 -0300 |
commit | af1db3b02a4e5791aeb46c1f253989a3b10815ac (patch) | |
tree | 71cb2f96e7edde3f3a4357669283b1872ae0f1ba /src/data/composite/things/content/withHasAnnotationPart.js | |
parent | 95cc0b6e8c9374e351ae8e985b03887c7155b138 (diff) |
data: factor out withHasAnnotationPart
Diffstat (limited to 'src/data/composite/things/content/withHasAnnotationPart.js')
-rw-r--r-- | src/data/composite/things/content/withHasAnnotationPart.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/data/composite/things/content/withHasAnnotationPart.js b/src/data/composite/things/content/withHasAnnotationPart.js new file mode 100644 index 00000000..4af554f3 --- /dev/null +++ b/src/data/composite/things/content/withHasAnnotationPart.js @@ -0,0 +1,43 @@ +import {input, templateCompositeFrom} from '#composite'; + +import {raiseOutputWithoutDependency} from '#composite/control-flow'; + +import withAnnotationParts from './withAnnotationParts.js'; + +export default templateCompositeFrom({ + annotation: `withHasAnnotationPart`, + + inputs: { + part: input({type: 'string'}), + }, + + outputs: ['#hasAnnotationPart'], + + steps: () => [ + withAnnotationParts({ + mode: input.value('strings'), + }), + + raiseOutputWithoutDependency({ + dependency: '#annotationParts', + output: input.value({'#hasAnnotationPart': false}), + }), + + { + dependencies: [ + input('part'), + '#annotationParts', + ], + + compute: (continuation, { + [input('part')]: search, + ['#annotationParts']: parts, + }) => continuation({ + ['#hasAnnotationPart']: + parts.some(part => + part.toLowerCase() === + search.toLowerCase()), + }), + }, + ], +}); |