package org.maziarz.yiiclipse.codegen;
import java.io.StringReader;
import java.util.HashMap;
import org.eclipse.dltk.ast.declarations.ModuleDeclaration;
import org.eclipse.dltk.ast.parser.IModuleDeclaration;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.php.internal.core.PHPVersion;
import org.eclipse.php.internal.core.ast.nodes.Program;
import org.eclipse.php.internal.core.compiler.ast.parser.AbstractPHPSourceParser;
import org.eclipse.php.internal.core.compiler.ast.parser.PHPSourceParserFactory;
import org.eclipse.text.edits.MalformedTreeException;
import org.eclipse.text.edits.TextEdit;
public class PhpCodeGenerator2 {
private String initialContent;
protected Program program;
private AbstractPHPSourceParser parser;
public PhpCodeGenerator2() {
this(null);
}
public PhpCodeGenerator2(String initialContent) {
AbstractPHPSourceParser parser = PHPSourceParserFactory.createParser(PHPVersion.PHP5_3);
this.initialContent = initialContent;
if (initialContent == null) {
initialContent = "<?php ?>";
}
try {
IModuleDeclaration m = parser.parse(new StringReader(initialContent), null, true);
if (m instanceof ModuleDeclaration) {
ModuleDeclaration md = (ModuleDeclaration) m;
}
} 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();
}
}