UNPKG

wikibase-edit

Version:

Edit Wikibase from NodeJS

42 lines 1.75 kB
import { isMatchingSnak } from './is_matching_snak.js'; export function isMatchingClaimFactory(newClaim, matchingQualifiers) { return function isMatchingClaim(existingClaim) { const { mainsnak, qualifiers = {} } = existingClaim; if (!isMatchingSnak(mainsnak, newClaim.mainsnak)) return false; if (matchingQualifiers) { for (const property of matchingQualifiers) { const [pid, option = 'all'] = property.split(':'); if (newClaim.qualifiers[pid] != null && qualifiers[pid] == null) return false; if (newClaim.qualifiers[pid] == null && qualifiers[pid] != null) return false; const propertyQualifiersMatch = matchFunctions[option](newClaim.qualifiers[pid], qualifiers[pid]); if (!propertyQualifiersMatch) return false; } } return true; }; } const matchFunctions = { all: (newPropertyQualifiers, existingPropertyQualifiers) => { for (const newQualifier of newPropertyQualifiers) { for (const existingQualifier of existingPropertyQualifiers) { if (!isMatchingSnak(existingQualifier, newQualifier)) return false; } } return true; }, any: (newPropertyQualifiers, existingPropertyQualifiers) => { for (const newQualifier of newPropertyQualifiers) { for (const existingQualifier of existingPropertyQualifiers) { if (isMatchingSnak(existingQualifier, newQualifier)) return true; } } return false; }, }; //# sourceMappingURL=is_matching_claim.js.map