/**
* Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
/*
* Created on Feb 17, 2006
*/
package org.python.pydev.parser.prettyprinterv2;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.IDocument;
import org.python.pydev.core.IPyFormatStdProvider;
import org.python.pydev.core.MisconfigurationException;
import org.python.pydev.core.docutils.PySelection;
import org.python.pydev.core.docutils.SyntaxErrorException;
import org.python.pydev.core.log.Log;
import org.python.pydev.parser.PyParser;
import org.python.pydev.parser.jython.SimpleNode;
import org.python.pydev.shared_core.parsing.BaseParser.ParseOutput;
public class Formatter implements IFormatter {
@Override
public void formatAll(IDocument doc, IPyFormatStdProvider edit, IFile f, boolean isOpenedFile,
boolean throwSyntaxError)
throws SyntaxErrorException {
ParseOutput objects;
try {
objects = PyParser.reparseDocument(new PyParser.ParserInfo(doc, edit.getPythonNature()));
} catch (MisconfigurationException e1) {
Log.log(e1);
return;
}
if (objects.error != null) {
if (throwSyntaxError) {
throw new SyntaxErrorException();
}
} else if (objects.ast != null) {
try {
SimpleNode n = (SimpleNode) objects.ast;
PrettyPrinterV2 prettyPrinterV2 = new PrettyPrinterV2(new PrettyPrinterPrefsV2("\n", edit
.getIndentPrefs().getIndentationString(), edit.getGrammarVersionProvider()));
doc.set(prettyPrinterV2.print(n));
} catch (Exception e) {
Log.log(e);
}
}
}
@Override
public void formatSelection(IDocument doc, int[] regionsToFormat, IPyFormatStdProvider edit, PySelection ps) {
}
}