diff options
Diffstat (limited to 'src/data')
| -rw-r--r-- | src/data/composite/things/album/index.js | 2 | ||||
| -rw-r--r-- | src/data/composite/things/album/withCoverArtDate.js | 50 | ||||
| -rw-r--r-- | src/data/composite/things/album/withTracks.js | 29 | ||||
| -rw-r--r-- | src/data/things/album.js | 82 |
4 files changed, 49 insertions, 114 deletions
diff --git a/src/data/composite/things/album/index.js b/src/data/composite/things/album/index.js deleted file mode 100644 index de1d37c3..00000000 --- a/src/data/composite/things/album/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export {default as withCoverArtDate} from './withCoverArtDate.js'; -export {default as withTracks} from './withTracks.js'; diff --git a/src/data/composite/things/album/withCoverArtDate.js b/src/data/composite/things/album/withCoverArtDate.js deleted file mode 100644 index c006fab9..00000000 --- a/src/data/composite/things/album/withCoverArtDate.js +++ /dev/null @@ -1,50 +0,0 @@ -import {input, templateCompositeFrom} from '#composite'; -import {isDate} from '#validators'; - -import {raiseOutputWithoutDependency} from '#composite/control-flow'; -import {withHasArtwork} from '#composite/wiki-data'; - -export default templateCompositeFrom({ - annotation: `withCoverArtDate`, - - inputs: { - from: input({ - validate: isDate, - defaultDependency: '_coverArtDate', - acceptsNull: true, - }), - }, - - outputs: ['#coverArtDate'], - - steps: () => [ - withHasArtwork({ - contribs: '_coverArtistContribs', - artworks: '_coverArtworks', - }), - - raiseOutputWithoutDependency({ - dependency: '#hasArtwork', - mode: input.value('falsy'), - output: input.value({'#coverArtDate': null}), - }), - - { - dependencies: [input('from')], - compute: (continuation, { - [input('from')]: from, - }) => - (from - ? continuation.raiseOutput({'#coverArtDate': from}) - : continuation()), - }, - - { - dependencies: ['date'], - compute: (continuation, {date}) => - (date - ? continuation({'#coverArtDate': date}) - : continuation({'#coverArtDate': null})), - }, - ], -}); diff --git a/src/data/composite/things/album/withTracks.js b/src/data/composite/things/album/withTracks.js deleted file mode 100644 index 835ee570..00000000 --- a/src/data/composite/things/album/withTracks.js +++ /dev/null @@ -1,29 +0,0 @@ -import {input, templateCompositeFrom} from '#composite'; - -import {withFlattenedList, withPropertyFromList} from '#composite/data'; - -import {raiseOutputWithoutDependency} from '#composite/control-flow'; - -export default templateCompositeFrom({ - annotation: `withTracks`, - - outputs: ['#tracks'], - - steps: () => [ - raiseOutputWithoutDependency({ - dependency: 'trackSections', - output: input.value({'#tracks': []}), - }), - - withPropertyFromList({ - list: 'trackSections', - property: input.value('tracks'), - }), - - withFlattenedList({ - list: '#trackSections.tracks', - }).outputs({ - ['#flattenedList']: '#tracks', - }), - ], -}); diff --git a/src/data/things/album.js b/src/data/things/album.js index 594046b9..42db1773 100644 --- a/src/data/things/album.js +++ b/src/data/things/album.js @@ -34,8 +34,6 @@ import { parseWallpaperParts, } from '#yaml'; -import {withPropertyFromObject} from '#composite/data'; - import { exitWithoutDependency, exposeConstant, @@ -45,6 +43,12 @@ import { } from '#composite/control-flow'; import { + withFlattenedList, + withPropertyFromList, + withPropertyFromObject, +} from '#composite/data'; + +import { exitWithoutArtwork, withDirectory, withHasArtwork, @@ -77,7 +81,6 @@ import { wikiData, } from '#composite/wiki-properties'; -import {withCoverArtDate, withTracks} from '#composite/things/album'; import {withContinueCountingFrom, withStartCountingFrom} from '#composite/things/track-section'; @@ -219,23 +222,29 @@ export class Album extends Thing { .call(this, 'Cover Artwork'), ], - coverArtistContribs: [ - withCoverArtDate(), + coverArtistContribs: contributionList({ + date: 'coverArtDate', + artistProperty: input.value('albumCoverArtistContributions'), + }), - contributionList({ - date: '#coverArtDate', - artistProperty: input.value('albumCoverArtistContributions'), + coverArtDate: [ + withHasArtwork({ + contribs: '_coverArtistContribs', + artworks: '_coverArtworks', }), - ], - coverArtDate: [ - withCoverArtDate({ - from: input.updateValue({ - validate: isDate, - }), + exitWithoutDependency({ + dependency: '#hasArtwork', + mode: input.value('falsy'), + }), + + exposeUpdateValueOrContinue({ + validate: input.value(isDate), }), - exposeDependency({dependency: '#coverArtDate'}), + exposeDependency({ + dependency: 'date', + }), ], coverArtFileExtension: [ @@ -306,14 +315,10 @@ export class Album extends Thing { .call(this, 'Wallpaper Artwork'), ], - wallpaperArtistContribs: [ - withCoverArtDate(), - - contributionList({ - date: '#coverArtDate', - artistProperty: input.value('albumWallpaperArtistContributions'), - }), - ], + wallpaperArtistContribs: contributionList({ + date: 'coverArtDate', + artistProperty: input.value('albumWallpaperArtistContributions'), + }), wallpaperFileExtension: [ exitWithoutArtwork({ @@ -355,14 +360,10 @@ export class Album extends Thing { .call(this, 'Banner Artwork'), ], - bannerArtistContribs: [ - withCoverArtDate(), - - contributionList({ - date: '#coverArtDate', - artistProperty: input.value('albumBannerArtistContributions'), - }), - ], + bannerArtistContribs: contributionList({ + date: 'coverArtDate', + artistProperty: input.value('albumBannerArtistContributions'), + }), bannerFileExtension: [ exitWithoutArtwork({ @@ -452,8 +453,23 @@ export class Album extends Thing { hasBannerArt: contribsPresent({contribs: '_bannerArtistContribs'}), tracks: [ - withTracks(), - exposeDependency({dependency: '#tracks'}), + exitWithoutDependency({ + dependency: 'trackSections', + value: input.value([]), + }), + + withPropertyFromList({ + list: 'trackSections', + property: input.value('tracks'), + }), + + withFlattenedList({ + list: '#trackSections.tracks', + }), + + exposeDependency({ + dependency: '#flattenedList', + }), ], }); |