INNER CODE UNIT · TypeScript

searchExercises

bryllim/workout-guide · packages/workout-guide/src/index.ts:45

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([
      exercise.name,
      exercise.equipment,
      exercise.primaryMuscle,
      ...exercise.secondaryMuscles,
    ].join(' '));
    return tokens.every((token) => searchable.includes(token));

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…