Нужно распарсить аргументы функции

Рейтинг: 0Ответов: 0Опубликовано: 04.05.2023

Есть объект

const builder = {
  output: [],

  element(value) {
    return this.createSelector(value);
  },

  id(value) {
    return this.createSelector('#' + value);
  },

  class(value) {
    return this.createSelector('.' + value);
  },
  
  attr(value) {
    return this.createSelector('[' + value + ']');
  },
  
  pseudoClass(value) {
    return this.createSelector(':' + value);
  },
  
  pseudoElement(value) {
    return this.createSelector('::' + value);
  },

  combine(selector1, combinator, selector2) {
  },

  stringify() {
    const result = this.output.reduce((acc, item) => acc + item, '');
    this.output = [];
    return result;
  },

  createSelector(value) {
    const obj = new Object(this);
    this.output.push(value);
    return obj;
  }
};

Его метод

builder.combine(selector1, combinator, selector2);

принимает 3 аргумента. Первый и третий аргументы - это цепочки вызовов других методов объекта.

Мне нужно внутри метода builder.combine увидеть строковое представление аргументов. При попытке осуществить получаю строковое представление результатов выполнения цепочек вызова. Это, понятное дело, логично.

Уверен, должен быть способ получить именно сами цепочки вызова.

Вот, что будет входить в метод cssSelectorBuilder.combine:

builder.combine(builder.element('p').pseudoClass('focus'), '>', builder.element('a').attr('href$=".png"').

Мне надо увидеть 3 строки:

 - builder.element('p').pseudoClass('focus');
 - >;
 - builder.element('a').attr('href$=".png"';

Ответы

Ответов пока нет.