package org.maziarz.yiiclipse.codegen; import java.io.IOException; import java.util.HashMap; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.formatter.IContentFormatter; import org.eclipse.php.internal.core.PHPVersion; import org.eclipse.php.internal.core.ast.nodes.ASTParser; import org.eclipse.php.internal.core.ast.nodes.Program; import org.eclipse.text.edits.MalformedTreeException; import org.eclipse.text.edits.TextEdit; public class PhpCodeGenerator { private String initialContent; protected Program program; private static IConfigurationElement phpFormatterElement; private static String phpFormatterClassName; private static IContentFormatter phpFormatter; private ASTParser parser; public PhpCodeGenerator() { this(null); } public PhpCodeGenerator(String initialContent) { this.initialContent = initialContent; parser = ASTParser.newParser(PHPVersion.PHP5_3, true); if (initialContent != null) { try { parser.setSource(initialContent.toCharArray()); } catch (IOException e) { e.printStackTrace(); } } try { program = parser.createAST(null); } catch (Exception e) { e.printStackTrace(); } program.recordModifications(); } public Program getProgram() { return program; } public String emit(){ IDocument document = new Document(); document.set(this.initialContent); TextEdit edit = program.rewrite(document, new HashMap<String, String>()); try { edit.apply(document, TextEdit.UPDATE_REGIONS); } catch (MalformedTreeException e) { e.printStackTrace(); } catch (BadLocationException e) { e.printStackTrace(); } // PhpFormatProcessorImpl formatProcessor = new PhpFormatProcessorImpl(); // try { // formatProcessor.formatDocument(document); // } catch (IOException e) { // e.printStackTrace(); // } catch (CoreException e) { // e.printStackTrace(); // } return document.get(); } }