core/matchers/lexicon.matcher.ts

core/matchers/lexicon.matcher.ts is a file in GovLab Context. 13 lines of code and 2 definitions.

import type { Term, TermFilter } from "#types/lexicon.types";

const isWanted = function isWanted(value: string | undefined): value is string {
    return typeof value === "string" && value.length > 0;
};

export const matchesTerm = function matchesTerm(term: Term, filter: TermFilter): boolean {
    if (isWanted(filter.kind) && term.kind !== filter.kind) {
        return false;
    }
    if (isWanted(filter.category) && term.category !== filter.category) {
        return false;
    }
    return !isWanted(filter.enforcedBy) || term.enforcedBy.includes(filter.enforcedBy);
};