public override void Visit(RtNamespace rtNamespace)
 {
     compilationUnitsManager             = new CompilationUnitsManager(rtNamespace.CompilationUnits);
     typeChanger.CompilationUnitsManager = compilationUnitsManager;
     base.Visit(rtNamespace);
     compilationUnitsManager.Complete();
 }
 public override void Visit(RtNamespace rtNamespace)
 {
     foreach (var rtCompilationUnit in rtNamespace.CompilationUnits.OrderBy(c => c is RtCompilationUnit ? ((RtCompilationUnit)c).Order : 0))
     {
         Visit(rtCompilationUnit);
     }
 }
        public override void Visit(RtNamespace node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.IsAmbientNamespace)
            {
                Context = WriterContext.Module;
                AppendTabs();
                WriteLine(String.Format("declare module {0} {{", node.Name));
                Tab();
            }
            foreach (var rtCompilationUnit in node.CompilationUnits)
            {
                Visit(rtCompilationUnit);
            }
            if (!node.IsAmbientNamespace)
            {
                Context = WriterContext.None;
                UnTab();
                AppendTabs();
                WriteLine("}");
            }
        }
        /// <summary>
        ///     Generates namespace source code
        /// </summary>
        /// <param name="types">Types list</param>
        /// <param name="namespaceName">Namespace name</param>
        /// <param name="resolver">Type resolver</param>
        public virtual RtNamespace Generate(IEnumerable <Type> types, string namespaceName, TypeResolver resolver)
        {
            RtNamespace ns            = new RtNamespace();
            var         needToDiscard = Context.Global.UseModules && Context.Global.DiscardNamespacesWhenUsingModules;

            if (string.IsNullOrEmpty(namespaceName) || needToDiscard)
            {
                ns.IsAmbientNamespace = true;
            }
            ns.Name = namespaceName;

            Context.Location.SetLocation(ns);
            foreach (var type in types)
            {
                var typeGenerator = Context.Generators.GeneratorFor(type);
                if (typeGenerator == null)
                {
                    continue;
                }
                var member = typeGenerator.Generate(type, resolver);
                var m      = member as RtCompilationUnit;
                if (m != null)
                {
                    if (Context.Global.UseModules)
                    {
                        m.Export = true;
                    }
                    else
                    {
                        m.Export = !ns.IsAmbientNamespace;
                    }
                }


                if (member != null)
                {
                    ns.CompilationUnits.Add(member);
                }
#if DEBUG
                Console.WriteLine("Exported {0}", type);
#endif
            }

            if (Context.Global.UseModules)
            {
                ns.GenerationMode = NamespaceGenerationMode.Namespace;
            }

            Context.Location.ResetLocation(ns);
            return(ns);
        }
        public override void Visit(RtNamespace node)
        {
            if (node == null)
            {
                return;
            }

            if (!node.IsAmbientNamespace)
            {
                Context = WriterContext.Module;
                AppendTabs();
                foreach (var ns in node.Name.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    AppendTabs();
                    if (node.GenerationMode == NamespaceGenerationMode.Module)
                    {
                        WriteLine(String.Format("module {0} {{", ns));
                    }
                    else
                    {
                        if (node.Export)
                        {
                            Write("export ");
                        }
                        WriteLine(String.Format("namespace {0} {{", ns));
                    }
                    Tab();
                }
            }
            foreach (var rtCompilationUnit in node.CompilationUnits.OrderBy(c => c is RtCompilationUnit ? ((RtCompilationUnit)c).Order : 0))
            {
                Visit(rtCompilationUnit);
            }
            if (!node.IsAmbientNamespace)
            {
                foreach (var ns in node.Name.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    Context = WriterContext.None;
                    UnTab();
                    AppendTabs();
                    WriteLine("}");
                }
            }
        }
Exemplo n.º 6
0
 public abstract void Visit(RtNamespace node);
Exemplo n.º 7
0
 public abstract T Visit(RtNamespace node);
 public override void Visit(RtNamespace rtNamespace)
 {
     typeChangingVisitor.Visit(rtNamespace);
     base.Visit(rtNamespace);
 }