From e518aba281c2deca085bcb1245f8da5448f28981 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 19 May 2026 16:42:18 -0300 Subject: data: Track.excludingURLs, etc: false to ignore inherited value --- src/data/things/Track.js | 10 +++++++--- src/data/things/album/TrackSection.js | 7 ++++++- src/data/yaml.js | 15 +++++++++++---- 3 files changed, 24 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/data/things/Track.js b/src/data/things/Track.js index 785d0080..8752b2bb 100644 --- a/src/data/things/Track.js +++ b/src/data/things/Track.js @@ -10,6 +10,7 @@ import Thing from '#thing'; import {compareKebabCase} from '#wiki-data'; import { + anyOf, is, isBoolean, isColor, @@ -385,7 +386,10 @@ export class Track extends Thing { excludingURLs: [ exposeUpdateValueOrContinue({ - validate: input.value(isExcludingURLsReason), + validate: input.value( + anyOf( + is(false), + isExcludingURLsReason)), }), withPropertyFromObject('trackSection', V('excludingTrackURLs')), @@ -1184,9 +1188,9 @@ export class Track extends Thing { ], }, - {message: `Don't include URLs alongside Excluding URLs`, fields: [ + {message: `Don't include URLs alongside Excluding URLs, unless Excluding URLs is false`, fields: [ 'URLs', - 'Excluding URLs', + ['Excluding URLs', v => v !== false], ]}, ], }; diff --git a/src/data/things/album/TrackSection.js b/src/data/things/album/TrackSection.js index 1e901a09..451f8f7b 100644 --- a/src/data/things/album/TrackSection.js +++ b/src/data/things/album/TrackSection.js @@ -6,6 +6,8 @@ import Thing from '#thing'; import {parseDate, parseExcludingURLs} from '#yaml'; import { + anyOf, + is, isBoolean, isColor, isDirectory, @@ -121,7 +123,10 @@ export class TrackSection extends Thing { excludingTrackURLs: [ exposeUpdateValueOrContinue({ - validate: input.value(isExcludingURLsReason), + validate: input.value( + anyOf( + is(false), + isExcludingURLsReason)), }), withPropertyFromObject('album', V('excludingTrackURLs')), diff --git a/src/data/yaml.js b/src/data/yaml.js index ba627b29..5ddeb63e 100644 --- a/src/data/yaml.js +++ b/src/data/yaml.js @@ -762,12 +762,19 @@ export function parseURLs(entries) { } export function parseExcludingURLs(value) { - if (typeof value !== 'string') { - return value; + if (typeof value === 'boolean') { + switch (value) { + case true: return 'generic'; + case false: return false; + // False is for nullifying an inherited reason for exclusion. + } } - switch (value) { - case 'paid bonus tracks': return 'paid bonus track'; + if (typeof value === 'string') { + switch (value) { + case 'paid bonus tracks': return 'paid bonus track'; + default: return value; + } } return value; -- cgit 1.3.0-6-gf8a5