@Override
public void emitClass(IClassNode node)
{
//ICompilerProject project = getWalker().getProject();
IClassDefinition definition = node.getDefinition();
final String className = definition.getBaseName();
write("AS3.compilationUnit($exports, function($primaryDeclaration){");
indentPush();
writeNewline();
// write constructor
emitConstructor((IFunctionNode) definition.getConstructor().getNode());
writeNewline();
// base class
IReference baseClassReference = definition.getBaseClassReference();
boolean hasSuper = baseClassReference != null
&& !baseClassReference.getName().equals("Object");
if (hasSuper)
{
String baseName = baseClassReference.getName();
write("var Super = (" + baseName + "._ || " + baseName
+ "._$get());");
writeNewline();
write("var super$ = Super.prototype;");
writeNewline();
}
write("$primaryDeclaration(AS3.class_({");
indentPush();
writeNewline();
// write out package
write("package_: \"" + definition.getPackageName() + "\",");
writeNewline();
// write class
write("class_: \"" + definition.getBaseName() + "\",");
writeNewline();
if (hasSuper)
{
write("extends_: Super,");
writeNewline();
}
IReference[] references = definition
.getImplementedInterfaceReferences();
int len = references.length;
// write implements
write("implements_:");