private void ConfigureTypeExport(JTypeImporter typeExporter) { if (typeExporter.JsCodeImporter == null) { typeExporter.AssemblyName = AssemblyName; typeExporter.JsCodeImporter = new JCodeImporter { Log = Log, ExportComments = ExportComments, Project = Project, Compiler = Compiler }; typeExporter.LongFunctionNames = LongFunctionNames; typeExporter.Log = Log; if (ConfigureJsTypeImporter != null) { ConfigureJsTypeImporter(typeExporter); } } }
void JsModelImporter_ConfigureJsTypeImporter(JTypeImporter obj) { obj.BeforeVisitEntity += me => { if (BeforeConvertCsToJsEntity != null) { BeforeConvertCsToJsEntity(me); } }; //obj.AfterVisitEntity += (me, node) => //{ // if (AfterConvertCsToJsEntity != null) // AfterConvertCsToJsEntity(me, node); //}; obj.JsCodeImporter.BeforeConvertCsToJsAstNode += node => { if (BeforeConvertCsToJsAstNode != null) { BeforeConvertCsToJsAstNode(node); } }; obj.JsCodeImporter.AfterConvertCsToJsAstNode += (node, node2) => { if (AfterConvertCsToJsAstNode != null) { AfterConvertCsToJsAstNode(node, node2); } }; obj.JsCodeImporter.BeforeConvertCsToJsResolveResult += res => { if (BeforeConvertCsToJsResolveResult != null) { BeforeConvertCsToJsResolveResult(res); } }; obj.JsCodeImporter.AfterConvertCsToJsResolveResult += (res, node) => { if (AfterConvertCsToJsResolveResult != null) { AfterConvertCsToJsResolveResult(res, node); } }; }
public JNode VisitConstantResolveResult(ConstantResolveResult res) { var nodes = res.GetNodes(); if (res.Type is DefaultTypeParameter) { return(J.Member("Default").Invoke(JNaming.JAccess(res.Type))); } if (res.Type != null && res.Type.Kind == TypeKind.Enum) { return(Visit(JTypeImporter.GetValueTypeInitializer(res.Type, Compiler))); } //var nodes = res.GetNodes(); //if (nodes.IsNotNullOrEmpty()) //{ // var node = nodes[0]; // if (node != null && node is PrimitiveExpression) // { // var node2 = Visit(node); //use literal value instead // return node2; // } //} return(J.Value(res.ConstantValue)); }
private JTypeImporter GetTypeImporter(ITypeDefinition ce) { JTypeImporter export; var isExtJs = JMeta.IsExtJsType(ce); var isGlobal = JMeta.IsGlobalType(ce) && !isExtJs; var isNative = JMeta.IsNativeType(ce) && !isExtJs; isNative = true; isGlobal = false; isExtJs = false; if (isGlobal) { throw new NotSupportedException(); } else if (isNative) { if (NativeExport == null) { NativeExport = new JTypeImporter { Compiler = Compiler } } ; export = NativeExport; } else if (isExtJs) { throw new NotSupportedException(); } else { throw new NotSupportedException(); } ConfigureTypeExport(export); return(export); }