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);
         }
     }
 }
Exemple #2
0
 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);
         }
     };
 }
Exemple #3
0
        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);
        }