package org.python.pydev.refactoring.ast.visitors.rewriter; import org.python.pydev.core.IGrammarVersionProvider; import org.python.pydev.core.IIndentPrefs; import org.python.pydev.editor.autoedit.DefaultIndentPrefs; import org.python.pydev.parser.jython.SimpleNode; import org.python.pydev.parser.jython.ast.factory.AdapterPrefs; import org.python.pydev.parser.prettyprinterv2.PrettyPrinterPrefsV2; import org.python.pydev.parser.prettyprinterv2.PrettyPrinterV2; import org.python.pydev.refactoring.ast.visitors.VisitorFactory; /** * This class just provides an interface for using the rewriter. */ public final class Rewriter { public static String reparsed(String source, AdapterPrefs adapterPrefs) { try { SimpleNode root = VisitorFactory.getRootNodeFromString(source, adapterPrefs.versionProvider); return createSourceFromAST(root, adapterPrefs); } catch (Throwable e) { throw new RuntimeException(e); } } public static String createSourceFromAST(SimpleNode root, AdapterPrefs adapterPrefs) { return createSourceFromAST(root, false, adapterPrefs); } public static String createSourceFromAST(SimpleNode root, String endLineDelim, IGrammarVersionProvider versionProvider) { return createSourceFromAST(root, false, new AdapterPrefs(endLineDelim, versionProvider)); } public static String createSourceFromAST(SimpleNode root, boolean ignoreComments, AdapterPrefs adapterPrefs) { IGrammarVersionProvider versionProvider = adapterPrefs.versionProvider; IIndentPrefs indentPrefs = DefaultIndentPrefs.get(); String endLineDelim = adapterPrefs.endLineDelim; PrettyPrinterPrefsV2 prettyPrinterPrefs = PrettyPrinterV2.createDefaultPrefs(versionProvider, indentPrefs, endLineDelim); PrettyPrinterV2 printer = new PrettyPrinterV2(prettyPrinterPrefs); try { return printer.print(root); } catch (Exception e) { throw new RuntimeException(e); } } }