/****************************************************************************** * Copyright (C) 2009-2012 Fabio Zadrozny * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Fabio Zadrozny <fabiofz@gmail.com> - initial API and implementation ******************************************************************************/ 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(adapterPrefs.projectAdaptable); 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); } } }