diff options
| -rw-r--r-- | src/data/things/Track.js | 4 | ||||
| -rw-r--r-- | src/data/things/album/Album.js | 7 | ||||
| -rw-r--r-- | src/data/things/album/TrackSection.js | 8 | ||||
| -rw-r--r-- | src/data/yaml.js | 12 | ||||
| -rw-r--r-- | src/validators.js | 2 |
5 files changed, 29 insertions, 4 deletions
diff --git a/src/data/things/Track.js b/src/data/things/Track.js index f8eac729..785d0080 100644 --- a/src/data/things/Track.js +++ b/src/data/things/Track.js @@ -31,12 +31,13 @@ import { parseCommentary, parseContributors, parseCreditingSources, - parseReferencingSources, + parseExcludingURLs, parseDate, parseDimensions, parseDuration, parseLyrics, parseMusicVideos, + parseReferencingSources, parseURLs, } from '#yaml'; @@ -1048,6 +1049,7 @@ export class Track extends Thing { 'Excluding URLs': { property: 'excludingURLs', + transform: parseExcludingURLs, }, 'URLs': { diff --git a/src/data/things/album/Album.js b/src/data/things/album/Album.js index e212548d..f07d552c 100644 --- a/src/data/things/album/Album.js +++ b/src/data/things/album/Album.js @@ -22,6 +22,7 @@ import { parseCreditingSources, parseDate, parseDimensions, + parseExcludingURLs, parseMusicVideos, parseWallpaperParts, parseURLs, @@ -651,7 +652,11 @@ export class Album extends Thing { // General configuration 'Count Tracks In Artist Totals': {property: 'countTracksInArtistTotals'}, - 'Excluding Track URLs': {property: 'excludingTrackURLs'}, + + 'Excluding Track URLs': { + property: 'excludingTrackURLs', + transform: parseExcludingURLs, + }, 'Listed on Homepage': {property: 'isListedOnHomepage'}, 'Listed in Galleries': {property: 'isListedInGalleries'}, diff --git a/src/data/things/album/TrackSection.js b/src/data/things/album/TrackSection.js index 15688735..1e901a09 100644 --- a/src/data/things/album/TrackSection.js +++ b/src/data/things/album/TrackSection.js @@ -3,7 +3,7 @@ import {inspect} from 'node:util'; import {colors} from '#cli'; import {input, V} from '#composite'; import Thing from '#thing'; -import {parseDate} from '#yaml'; +import {parseDate, parseExcludingURLs} from '#yaml'; import { isBoolean, @@ -212,7 +212,11 @@ export class TrackSection extends Thing { }, 'Count Tracks In Artist Totals': {property: 'countTracksInArtistTotals'}, - 'Excluding Track URLs': {property: 'excludingTrackURLs'}, + + 'Excluding Track URLs': { + property: 'excludingTrackURLs', + transform: parseExcludingURLs, + }, 'Description': {property: 'description'}, }, diff --git a/src/data/yaml.js b/src/data/yaml.js index cce2bbf0..ba627b29 100644 --- a/src/data/yaml.js +++ b/src/data/yaml.js @@ -761,6 +761,18 @@ export function parseURLs(entries) { }); } +export function parseExcludingURLs(value) { + if (typeof value !== 'string') { + return value; + } + + switch (value) { + case 'paid bonus tracks': return 'paid bonus track'; + } + + return value; +} + export function parseAdditionalFiles(entries, {subdoc, AdditionalFile}) { return parseArrayEntries(entries, item => { if (typeof item !== 'object') return item; diff --git a/src/validators.js b/src/validators.js index b702682e..28f3cef7 100644 --- a/src/validators.js +++ b/src/validators.js @@ -822,6 +822,8 @@ export function isCuratedURL(string) { return true; } +// These are the only valid actual values, but parseExcludingURLs (in #yaml) +// defines a mapping of alternative, equivalent values. export const isExcludingURLsReason = is(...[ 'quietly', |