protected virtual void AppendClasses([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     AppendClass(intermediateResult);
     AppendIndent();
     Result.AppendLine();
     AppendBaseClass(intermediateResult);
 }
        public virtual T4CSharpCodeGenerationResult Convert(
            [NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult
            )
        {
            string ns = File
                        .LogicalPsiSourceFile
                        .ToProjectFile()
                        .NotNull()
                        .CalculateExpectedNamespace(T4Language.Instance);
            bool hasNamespace = !string.IsNullOrEmpty(ns);

            if (hasNamespace)
            {
                Result.AppendLine($"namespace {ns}");
                Result.AppendLine("{");
                PushIndent();
                AppendNamespaceContents(intermediateResult);
                PopIndent();
                Result.AppendLine("}");
            }
            else
            {
                AppendNamespaceContents(intermediateResult);
            }

            return(Result);
        }
 protected override void AppendBaseClass(T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     if (!IsRoot)
     {
         return;
     }
     base.AppendBaseClass(intermediateResult);
 }
Ejemplo n.º 4
0
        protected override T4CSharpIntermediateConverterBase CreateConverter(
            T4CSharpCodeGenerationIntermediateResult intermediateResult
            )
        {
            var referenceExtractionManager = File.GetSolution().GetComponent <IT4ReferenceExtractionManager>();

            return(new T4CSharpExecutableIntermediateConverter(intermediateResult, File, referenceExtractionManager));
        }
 protected T4CSharpIntermediateConverterBase(
     [NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult,
     [NotNull] IT4File file
     )
 {
     IntermediateResult = intermediateResult;
     File   = file;
     Result = new T4CSharpCodeGenerationResult(File);
 }
 public T4CSharpExecutableIntermediateConverter(
     [NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult,
     [NotNull] IT4File file,
     [NotNull] IT4ReferenceExtractionManager referenceExtractionManager
     ) : base(intermediateResult, file)
 {
     file.AssertContainsNoIncludeContext();
     ReferenceExtractionManager = referenceExtractionManager;
 }
 protected override void AppendTransformMethod(T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     Result.AppendLine("#line hidden");
     AppendIndent();
     Result.AppendLine("/// <summary>");
     AppendIndent();
     Result.AppendLine("/// Create the template output");
     AppendIndent();
     Result.AppendLine("/// </summary>");
     base.AppendTransformMethod(intermediateResult);
 }
 private void AppendFeatures([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     if (intermediateResult.HasHost)
     {
         AppendHost();
     }
     foreach (var description in intermediateResult.FeatureDescriptions)
     {
         description.AppendContent(Result, this);
     }
 }
 private void AppendBaseClassName([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     if (intermediateResult.HasBaseClass)
     {
         Result.Append(intermediateResult.CollectedBaseClass);
     }
     else
     {
         Result.Append(ClassNameProvider.GeneratedBaseClassFQN);
     }
 }
Ejemplo n.º 10
0
        private void AppendMainContainer([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
        {
            string resource = intermediateResult.HasHost ? HostspecificSuffixResource : SuffixResource;
            var    provider = new T4TemplateResourceProvider(resource);
            string encoding = intermediateResult.Encoding ?? T4EncodingsManager.GetEncoding(File);
            string suffix   = provider.ProcessResource(ClassNameProvider.GeneratedClassName, encoding);

            Result.Append(suffix);
            AppendAssemblyRegistering();
            // assembly registration code is part of main class,
            // so resources do not include closing brace
            Result.Append("}");
        }
 protected override void AppendClass(T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     AppendIndent();
     Result.AppendLine();
     AppendClassSummary();
     AppendIndent();
     Result.AppendLine();
     AppendIndent();
     File.AssertContainsNoIncludeContext();
     Result.AppendLine($"#line 1 \"{File.PhysicalPsiSourceFile.GetLocation()}\"");
     AppendIndent();
     Result.AppendLine(GeneratedCodeAttribute);
     base.AppendClass(intermediateResult);
 }
        protected virtual void AppendBaseClass([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
        {
            if (intermediateResult.HasBaseClass)
            {
                return;
            }
            Result.AppendLine(BaseClassDescription);
            AppendIndent();
            Result.Append(intermediateResult.AccessRightsText);
            Result.Append(" class ");
            Result.AppendLine(ClassNameProvider.GeneratedBaseClassName);
            string resource = BaseClassResourceName;
            var    provider = new T4TemplateResourceProvider(resource);

            Result.Append(provider.Template);
        }
 protected override void AppendConstructor(T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     if (!intermediateResult.HasHost)
     {
         return;
     }
     AppendIndent();
     Result.Append($"public GeneratedTextTransformation({T4TextTemplatingFQNs.Lifetime} lifetime)");
     AppendIndent();
     Result.AppendLine("{");
     PushIndent();
     AppendHostInitialization();
     PopIndent();
     AppendIndent();
     Result.AppendLine("}");
 }
        public override T4CSharpCodeGenerationResult Convert(
            T4CSharpCodeGenerationIntermediateResult intermediateResult
            )
        {
            Result.Append($@"// ------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version: {T4TextTemplatingFQNs.RuntimeVersion}
//  
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
// ------------------------------------------------------------------------------
");
            return(base.Convert(intermediateResult));
        }
Ejemplo n.º 15
0
 protected override void AppendConstructor(T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     AppendIndent();
     Result.AppendLine("public GeneratedTextTransformation()");
     AppendIndent();
     Result.AppendLine("{");
     PushIndent();
     if (intermediateResult.HasHost)
     {
         AppendHostInitialization();
     }
     PopIndent();
     PopIndent();
     AppendIndent();
     Result.AppendLine("}");
 }
        protected virtual void AppendClass([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
        {
            AppendIndent();
            Result.Append(intermediateResult.AccessRightsText);
            Result.Append($" partial class {ClassNameProvider.GeneratedClassName} : ");
            AppendBaseClassName(intermediateResult);
            Result.AppendLine();
            using (new CodeBlockCookie(this))
            {
                AppendConstructor(intermediateResult);
                AppendTransformMethod(intermediateResult);

                AppendFeatures(intermediateResult);
                if (!intermediateResult.ParameterDescriptions.IsEmpty())
                {
                    AppendIndent();
                    Result.AppendLine();
                    AppendIndent();
                    Result.AppendLine($"#line 1 \"{File.LogicalPsiSourceFile.GetLocation()}\"");
                    Result.AppendLine();
                }

                using (new UnindentCookie(this))
                {
                    AppendParameterDeclarations(intermediateResult.ParameterDescriptions);
                    AppendTemplateInitialization(intermediateResult.ParameterDescriptions, intermediateResult.HasHost);
                }

                if (!intermediateResult.ParameterDescriptions.IsEmpty())
                {
                    Result.AppendLine();
                    Result.AppendLine();
                    AppendIndent();
                    Result.AppendLine();
                    AppendIndent();
                    Result.AppendLine("#line default");
                    AppendIndent();
                    Result.AppendLine("#line hidden");
                }
            }
        }
        private void AppendImports([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
        {
            foreach (var description in intermediateResult.ImportDescriptions)
            {
                description.AppendContent(Result, this);
            }

            if (ShouldAppendPragmaDirectives)
            {
                AppendIndent();
                Result.AppendLine("#pragma warning disable 8019");
            }

            AppendIndent();
            Result.AppendLine("using System;");

            if (ShouldAppendPragmaDirectives)
            {
                AppendIndent();
                Result.AppendLine("#pragma warning restore 8019");
            }
        }
        public virtual T4CSharpCodeGenerationResult Convert(
            [NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult
            )
        {
            string ns           = GeneratorKind.ProvideTemplateNamespace(File);
            bool   hasNamespace = !string.IsNullOrEmpty(ns);

            if (hasNamespace)
            {
                Result.AppendLine($"namespace {ns}");
                Result.AppendLine("{");
                PushIndent();
                AppendNamespaceContents(intermediateResult);
                PopIndent();
                Result.AppendLine("}");
            }
            else
            {
                AppendNamespaceContents(intermediateResult);
            }

            return(Result);
        }
        protected virtual void AppendTransformMethod(
            [NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult
            )
        {
            if (!TransformTextAttributes.IsNullOrEmpty())
            {
                AppendIndent();
                Result.AppendLine(TransformTextAttributes);
            }
            AppendIndent();
            Result.Append("public ");
            Result.Append(GetTransformTextOverridabilityModifier(intermediateResult.HasBaseClass));
            Result.AppendLine($" string {TransformTextMethodName}()");
            using (new CodeBlockCookie(this))
            {
                foreach (var description in intermediateResult.TransformationDescriptions)
                {
                    description.AppendContent(Result, this);
                }

                AppendIndent();
                Result.AppendLine("return this.GenerationEnvironment.ToString();");
            }
        }
 private void AppendNamespaceContents([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     AppendImports(intermediateResult);
     AppendClasses(intermediateResult);
 }
Ejemplo n.º 21
0
 protected override T4CSharpIntermediateConverterBase CreateConverter(
     T4CSharpCodeGenerationIntermediateResult intermediateResult
     ) => new T4CSharpIntermediateConverter(intermediateResult, File);
 protected override void AppendTransformMethod(T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     AppendSyntheticAttribute();
     base.AppendTransformMethod(intermediateResult);
 }
 // we reference JetBrains.TextTemplating, which already contains the definition for TextTransformation
 protected override void AppendClasses(T4CSharpCodeGenerationIntermediateResult intermediateResult) =>
 AppendClass(intermediateResult);
 protected override void AppendClass(T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     AppendSyntheticAttribute();
     base.AppendClass(intermediateResult);
 }
Ejemplo n.º 25
0
 // When creating executable, we reference JetBrains.TextTemplating,
 // which already contains the definition for TextTransformation
 protected override void AppendClasses(T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
     AppendMainContainer(intermediateResult);
     AppendClass(intermediateResult);
 }
 public T4CSharpIntermediateConverter(
     [NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult,
     [NotNull] IT4File file
     ) : base(intermediateResult, file)
 {
 }
 protected virtual void AppendConstructor([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
 {
 }