0

我正在尝试转换和重新格式化此 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'}选项被忽略,我不确定是否有一个选项可以强制缩进 if body on new line。这是astexplorer的错误,重新编码还是我做错了什么?

4

1 回答 1

0

问题是.toSource()使用recast.print()它试图保留原始格式。prettyPrint()将尊重更多选择:

var rc = require('recast');
rc.prettyPrint(ast, {quote:'single'}).code
于 2017-07-21T21:16:29.843 回答