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("}"); } } }
public abstract void Visit(RtNamespace node);
public abstract T Visit(RtNamespace node);
public override void Visit(RtNamespace rtNamespace) { typeChangingVisitor.Visit(rtNamespace); base.Visit(rtNamespace); }