From 0b39ab1a265070e6498939d0a08191946af6af81 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 5 Jun 2026 11:30:06 -0300 Subject: find, data: redirection overrides, use nameForReferencingAcrossWiki --- src/data/checks.js | 3 ++- src/data/things/Track.js | 28 ++++------------------------ src/find.js | 40 ++++++++++++++++++++++++++++------------ 3 files changed, 34 insertions(+), 37 deletions(-) diff --git a/src/data/checks.js b/src/data/checks.js index 6909f011..f8a04178 100644 --- a/src/data/checks.js +++ b/src/data/checks.js @@ -4,6 +4,7 @@ import {inspect as nodeInspect} from 'node:util'; import {colors, ENABLE_COLOR} from '#cli'; import CacheableObject from '#cacheable-object'; +import {nativeGetMatchableDirectories} from '#find'; import {replacerSpec, parseContentNodes} from '#replacer'; import {compareArrays, cut, cutStart, empty, getNestedProp, iterateMultiline} from '#sugar'; @@ -56,7 +57,7 @@ export function reportDirectoryErrors(wikiData, { const directories = (findSpec.getMatchableDirectories - ? findSpec.getMatchableDirectories(thing) + ? findSpec.getMatchableDirectories(thing, nativeGetMatchableDirectories) : [thing.directory]); for (const directory of directories) { diff --git a/src/data/things/Track.js b/src/data/things/Track.js index 6fc38e5d..a368a15b 100644 --- a/src/data/things/Track.js +++ b/src/data/things/Track.js @@ -1273,13 +1273,7 @@ export class Track extends Thing { static [Thing.findSpecs] = { track: { referenceTypes: ['track'], - bindTo: 'trackData', - - getMatchableNames: track => - (track.nameForReferencingAcrossWiki - ? [track.nameForReferencingAcrossWiki] - : []), }, trackMainReleasesOnly: { @@ -1288,11 +1282,6 @@ export class Track extends Thing { include: track => !CacheableObject.getUpdateValue(track, 'mainRelease'), - - getMatchableNames: track => - (track.nameForReferencingAcrossWiki - ? [track.nameForReferencingAcrossWiki] - : []), }, trackReference: { @@ -1350,12 +1339,6 @@ export class Track extends Thing { include: track => track.hasUniqueCoverArt, - - // This is an acontextual reference. - getMatchableNames: track => - (track.referenceByDirectory === 'normally' - ? [track.name] - : []), }, trackPrimaryArtwork: { @@ -1374,14 +1357,11 @@ export class Track extends Thing { artwork.thing.isTrack && artwork === artwork.thing.trackArtworks[0], - // This is an acontextual reference. - getMatchableNames: ({thing: track}) => - (track.referenceByDirectory === 'normally' - ? [track.name] - : []), + getMatchableNames: (artwork, nativeGetMatchableNames) => + nativeGetMatchableNames(artwork.thing), - getMatchableDirectories: ({thing: track}) => - [track.directory], + getMatchableDirectories: (artwork, nativeGetMatchableDirectory) => + nativeGetMatchableDirectory(artwork.thing), }, }; diff --git a/src/find.js b/src/find.js index ddd6ae05..6436532a 100644 --- a/src/find.js +++ b/src/find.js @@ -58,13 +58,25 @@ export function fuzzName(name, fuzz = {}) { return name; } +export function nativeGetMatchableNames(thing, _nativeGetMatchableNames) { + if (thing.nameForReferencingAcrossWiki === null) { + return []; + } + + if (thing.nameForReferencingAcrossWiki) { + return [thing.nameForReferencingAcrossWiki]; + } + + if (thing.name) { + return [thing.name]; + } + + return []; +} + export function processAvailableMatchesByName(data, fuzz, { include = _thing => true, - - getMatchableNames = thing => - (thing.constructor.hasPropertyDescriptor('name') - ? [thing.name] - : []), + getMatchableNames = nativeGetMatchableNames, results = Object.create(null), multipleNameMatches = Object.create(null), @@ -72,7 +84,7 @@ export function processAvailableMatchesByName(data, fuzz, { for (const thing of data) { if (!include(thing)) continue; - for (const name of getMatchableNames(thing)) { + for (const name of getMatchableNames(thing, nativeGetMatchableNames)) { if (typeof name !== 'string') { logWarn`Unexpected ${typeAppearance(name)} returned in names for ${inspect(thing)}`; continue; @@ -99,20 +111,24 @@ export function processAvailableMatchesByName(data, fuzz, { return {results, multipleNameMatches}; } +export function nativeGetMatchableDirectories(thing, _nativeGetMatchableDirectories) { + if (thing.directory) { + return [thing.directory]; + } else { + return []; + } +} + export function processAvailableMatchesByDirectory(data, { include = _thing => true, - - getMatchableDirectories = thing => - (thing.constructor.hasPropertyDescriptor('directory') - ? [thing.directory] - : [null]), + getMatchableDirectories = nativeGetMatchableDirectories, results = Object.create(null), }) { for (const thing of data) { if (!include(thing, thingConstructors)) continue; - for (const directory of getMatchableDirectories(thing)) { + for (const directory of getMatchableDirectories(thing, nativeGetMatchableDirectories)) { if (typeof directory !== 'string') { logWarn`Unexpected ${typeAppearance(directory)} returned in directories for ${inspect(thing)}`; continue; -- cgit 1.3.0-6-gf8a5