Перевод строки в объект

Имеется строка "(Word или (it и then) или word2) и Word3". Необходимо эту строку трансформировать в объект: {and: [{ or: ["Word", { and: ["it", "then"] }, "Word2"] }, "Word3"]}. Имеется реализация рекурсией, но она не полна и может работать только с массивом:

type OperationsRussian = 'ИЛИ' | 'И'

const LogicalOperations: Record<OperationsRussian, Operations> = {
  ИЛИ: 'or',
  И: 'and',
}

export const preparationIncludedPhrases = (
  phrases: unknown
): Record<string, object> => {

  const firstValue = Array.isArray(phrases[0])
    ? preparationIncludedPhrases(phrases[0])
    : phrases[0]
  const operation = phrases[1]
  const secondValue = Array.isArray(phrases[2])
    ? preparationIncludedPhrases(phrases[2])
    : phrases[2]

  return {
    [LogicalOperations[operation as OperationsRussian]]: [
      firstValue,
      secondValue,
    ],
  }
}

preparationIncludedPhrases([['apple', 'И', ['tiger', 'ИЛИ', 'lion']], 'ИЛИ', 'word'])

Ответы (0 шт):