javascript recast .toSource параметры игнорируются

Я пытаюсь преобразовать и переформатировать этот код JavaScript:

if (name == "c") {b();}

используя этот плагин перекодирования:

  return j(file.source)
    .find(j.Identifier)
    .forEach(path => {
      j(path).replaceWith(
        j.identifier(path.node.name.split('').reverse().join(''))
      );
    })
    .toSource({quote:'single'});

как сохранено здесь https://astexplorer.net/#/gist/994b660144d9e065906dc41bc14c9c39/c3910178f527d57de5422a0ddce9e515a460182d

Я хочу получить следующий вывод:

if (eman == 'c') {
  b();
}

но {quote:'single'} опция игнорируется, и я не уверен, что есть опция для принудительного отступа, если тело в новой строке. Это ошибка с astexplorer, перекодировать или я делаю что-то не так?

1 ответ

Проблема в том, что .toSource() использования recast.print() который пытается сохранить оригинальное форматирование. prettyPrint() будет уважать больше вариантов:

var rc = require('recast');
rc.prettyPrint(ast, {quote:'single'}).code
Другие вопросы по тегам