diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-11-03 09:59:31 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-11-14 07:59:22 -0400 |
commit | 163c541f4b8244f3c2fd8568ab3ef5cc4ed114a2 (patch) | |
tree | 6ce776cc82296686adee36b97346113634c6563c /src/data/composite/wiki-data/helpers | |
parent | 6ac3a98cb60651b82d2f93a3ced0e56162ea4be7 (diff) |
data: Track.suffixDirectory, Album.directorySuffix
Diffstat (limited to 'src/data/composite/wiki-data/helpers')
-rw-r--r-- | src/data/composite/wiki-data/helpers/withSimpleDirectory.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/data/composite/wiki-data/helpers/withSimpleDirectory.js b/src/data/composite/wiki-data/helpers/withSimpleDirectory.js new file mode 100644 index 00000000..08ca3bfc --- /dev/null +++ b/src/data/composite/wiki-data/helpers/withSimpleDirectory.js @@ -0,0 +1,52 @@ +// A "simple" directory, based only on the already-provided directory, if +// available, or the provided name. + +import {input, templateCompositeFrom} from '#composite'; + +import {isDirectory, isName} from '#validators'; + +import {withResultOfAvailabilityCheck} from '#composite/control-flow'; + +import withDirectoryFromName from './withDirectoryFromName.js'; + +export default templateCompositeFrom({ + annotation: `withSimpleDirectory`, + + inputs: { + directory: input({ + validate: isDirectory, + defaultDependency: 'directory', + acceptsNull: true, + }), + + name: input({ + validate: isName, + acceptsNull: true, + }), + }, + + outputs: ['#directory'], + + steps: () => [ + withResultOfAvailabilityCheck({ + from: input('directory'), + }), + + { + dependencies: ['#availability', input('directory')], + compute: (continuation, { + ['#availability']: availability, + [input('directory')]: directory, + }) => + (availability + ? continuation.raiseOutput({ + ['#directory']: directory + }) + : continuation()), + }, + + withDirectoryFromName({ + name: input('name'), + }), + ], +}); |