INNER CODE UNIT · TypeScript
matchesFilter
bryllim/workout-guide · packages/workout-guide/src/index.ts:39
function matchesFilter(value: string, filter?: string | readonly string[]) {
if (filter === undefined) return true;
const values = Array.isArray(filter) ? filter : [filter];
return values.some((candidate) => normalizeSearchText(candidate) === normalizeSearchText(value));
}
export function searchExercises(query = '', filters: ExerciseSearchFilters = {}) {
const normalizedQuery = normalizeSearchText(query);
const tokens = normalizedQuery ? normalizedQuery.split(' ') : [];
return exercises.filter((exercise) => {
if (!matchesFilter(exercise.equipment, filters.equipment)) return false;
if (!matchesFilter(exercise.primaryMuscle, filters.primaryMuscle)) return false;
if (!matchesFilter(exercise.exerciseType, filters.exerciseType)) return false;
if (filters.isStretch !== undefined && exercise.isStretch !== filters.isStretch) return false;
if (tokens.length === 0) return true;
const searchable = normalizeSearchText([