private void AppendTypeErrorMessage([NotNull] T4ParameterDescription description)
        {
            AppendIndent();
            Result.Append("this.Error(");
            string message =
                $"The type \\'{description.TypeFqnString}\\' of the parameter " +
                $"\\'{description.PropertyNameString}\\' did not match" +
                " the type of the data passed to the template.";
            const int messageChunkSize = 85;
            int       index            = 0;

            foreach (string chunk in SplitStringIntoChunks(message, messageChunkSize))
            {
                if (index != 0)
                {
                    Result.AppendLine(" +");
                    AppendIndent();
                    Result.Append(new string(' ', indentSize * 2));
                }

                Result.Append($"\"{chunk}\"");
                index += 1;
            }

            Result.AppendLine(");");
        }
Example #2
0
        protected override void AppendParameterDeclaration(T4ParameterDescription description)
        {
            foreach (string inspection in DisabledPropertyInspections)
            {
                AppendDisabledInspections(inspection);
            }

            Result.Append("        private global::");
            var type = description.TypeToken;

            if (CSharpLexer.IsKeyword(type.GetText()))
            {
                Result.Append("@");
            }
            Result.AppendMapped(type);

            Result.Append(" ");
            var name = description.NameToken;

            if (CSharpLexer.IsKeyword(name.GetText()))
            {
                Result.Append("@");
            }
            Result.AppendMapped(name);

            Result.Append(" => ");
            Result.Append(description.FieldNameString);
            Result.AppendLine(";");
        }
        public override void VisitParameterDirectiveNode(IT4ParameterDirective parameterDirectiveParam)
        {
            var description = T4ParameterDescription.FromDirective(parameterDirectiveParam);

            if (description == null)
            {
                return;
            }
            Result.Append(description);
        }
 private void AppendFieldDeclaration([NotNull] T4ParameterDescription description)
 {
     AppendSyntheticAttribute();
     AppendIndent();
     Result.Append("private global::");
     Result.Append(description.TypeString);
     Result.Append(" ");
     Result.Append(description.FieldNameString);
     Result.AppendLine(";");
 }
 protected virtual void AppendFieldDeclaration([NotNull] T4ParameterDescription description)
 {
     AppendIndent();
     Result.Append("private ");
     description.AppendType(Result);
     Result.Append(" ");
     Result.Append(description.FieldNameString);
     Result.AppendLine(";");
     Result.AppendLine();
 }
 protected override void AppendParameterDeclaration(T4ParameterDescription description)
 {
     // Range maps of this converter are ignored, so it's safe to use Append instead of AppendMapped
     AppendIndent();
     Result.Append("private ");
     Result.Append(description.TypeString);
     Result.Append(" ");
     Result.Append(description.NameString);
     Result.Append(" => ");
     Result.Append(description.FieldNameString);
     Result.AppendLine(";");
 }
        protected override void AppendParameterDeclaration(T4ParameterDescription description)
        {
            foreach (string inspection in DisabledPropertyInspections)
            {
                AppendDisabledInspections(inspection);
            }

            Result.Append("        private ");
            description.AppendTypeMapped(Result);
            Result.Append(" ");
            description.AppendName(Result);
            Result.Append(" => ");
            Result.Append(description.FieldNameString);
            Result.AppendLine(";");
        }
 private void AppendPropertyInitializationFromSession([NotNull] T4ParameterDescription description)
 {
     AppendIndent();
     Result.AppendLine($"bool {description.PropertyNameString}ValueAcquired = false;");
     AppendIndent();
     Result.AppendLine($@"if (this.Session.ContainsKey(""{description.PropertyNameString}""))");
     using (new CodeBlockCookie(this))
     {
         AppendIndent();
         Result.Append($"this.{description.FieldNameString} = ((");
         description.AppendType(Result);
         Result.AppendLine($@")(this.Session[""{description.PropertyNameString}""]));");
         AppendIndent();
         Result.AppendLine($"{description.PropertyNameString}ValueAcquired = true;");
     }
 }
        private void AppendPropertyInitializationFromHost(bool hasHost, T4ParameterDescription description)
        {
            if (!hasHost)
            {
                return;
            }
            AppendIndent();
            Result.AppendLine($"if (({description.PropertyNameString}ValueAcquired == false))");
            using (new CodeBlockCookie(this))
            {
                AppendIndent();
                Result.AppendLine(
                    "string parameterValue = this.Host.ResolveParameterValue(\"Property\"," +
                    $" \"PropertyDirectiveProcessor\", \"{description.PropertyNameString}\");");
                AppendIndent();
                Result.AppendLine("if ((string.IsNullOrEmpty(parameterValue) == false))");
                using (new CodeBlockCookie(this))
                {
                    AppendIndent();
                    Result.Append(
                        $"{T4TextTemplatingFQNs.TypeConverter} tc = {T4TextTemplatingFQNs.GetConverter}(typeof(");
                    description.AppendType(Result);
                    Result.AppendLine("));");
                    AppendIndent();
                    Result.AppendLine("if (((tc != null) ");
                    AppendIndent();
                    Result.Append(new string(' ', indentSize * 3));
                    Result.AppendLine("&& tc.CanConvertFrom(typeof(string))))");
                    using (new CodeBlockCookie(this))
                    {
                        AppendIndent();
                        Result.Append($"this.{description.FieldNameString} = ((");
                        description.AppendType(Result);
                        Result.AppendLine(")(tc.ConvertFrom(parameterValue)));");
                        AppendIndent();
                        Result.AppendLine($"{description.PropertyNameString}ValueAcquired = true;");
                    }

                    AppendIndent();
                    Result.AppendLine("else");
                    using (new CodeBlockCookie(this))
                    {
                        AppendTypeErrorMessage(description);
                    }
                }
            }
        }
 private void AppendPropertyInitializationFromContext([NotNull] T4ParameterDescription description)
 {
     AppendIndent();
     Result.AppendLine($"if (({description.PropertyNameString}ValueAcquired == false))");
     using (new CodeBlockCookie(this))
     {
         AppendIndent();
         Result.AppendLine(
             $@"object data = global::System.Runtime.Remoting.Messaging.CallContext.LogicalGetData(""{description.PropertyNameString}"");");
         AppendIndent();
         Result.AppendLine("if ((data != null))");
         using (new CodeBlockCookie(this))
         {
             AppendIndent();
             Result.Append($"this.{description.FieldNameString} = ((");
             description.AppendType(Result);
             Result.AppendLine(")(data));");
         }
     }
 }
        protected override void AppendParameterDeclaration(T4ParameterDescription description)
        {
            // Range maps of this converter are ignored, so it's safe to use Append instead of AppendMapped
            Result.AppendLine($@"/// <summary>
/// Access the {description.PropertyNameString} parameter of the template.
/// </summary>");
            AppendIndent();
            Result.Append("private ");
            description.AppendTypeMapped(Result);
            Result.Append(" ");
            description.AppendName(Result);
            Result.AppendLine();
            using (new CodeBlockCookie(this))
            {
                AppendIndent();
                Result.AppendLine("get");
                using (new CodeBlockCookie(this))
                {
                    AppendIndent();
                    Result.AppendLine($"return this.{description.FieldNameString};");
                }
            }
            Result.AppendLine();
        }
 protected override void AppendFieldDeclaration(T4ParameterDescription description)
 {
     AppendSyntheticAttribute();
     base.AppendFieldDeclaration(description);
 }
Example #13
0
 public void Append([NotNull] T4ParameterDescription description) => MyParameterDescriptions.Add(description);
 protected abstract void AppendParameterDeclaration([NotNull] T4ParameterDescription description);