Beispiel #1
0
 public void AppendContent(
     T4CSharpCodeGenerationResult destination,
     IT4ElementAppendFormatProvider provider
     )
 {
     if (FirstNode != null)
     {
         destination.AppendLine(provider.Indent);
         destination.Append(provider.Indent);
         provider.AppendLineDirective(destination, FirstNode);
     }
     else
     {
         destination.Append(provider.Indent);
     }
     destination.Append(provider.ExpressionWritingPrefix);
     destination.Append("\"");
     destination.Append(Sanitize(Text));
     destination.Append("\"");
     destination.AppendLine(provider.ExpressionWritingSuffix);
     if (FirstNode != null)
     {
         destination.AppendLine();
         destination.AppendLine(provider.Indent);
         destination.Append(provider.Indent);
         destination.AppendLine("#line default");
         destination.Append(provider.Indent);
         destination.AppendLine("#line hidden");
     }
 }
Beispiel #2
0
 protected override void AppendContentPrefix(
     T4CSharpCodeGenerationResult destination,
     IT4ElementAppendFormatProvider provider
     )
 {
     destination.Append(provider.ExpressionWritingPrefix);
     destination.Append(provider.ToStringConversionPrefix);
 }
        public override void AppendLineDirective(T4CSharpCodeGenerationResult destination, IT4TreeNode node)
        {
            var sourceFile = node.FindLogicalPsiSourceFile();
            int offset     = T4UnsafeManualRangeTranslationUtil.GetDocumentStartOffset(node).Offset;
            int line       = (int)sourceFile.Document.GetCoordsByOffset(offset).Line;

            destination.AppendLine($"#line {line + 1} \"{sourceFile.GetLocation()}\"");
        }
 public void AppendName([NotNull] T4CSharpCodeGenerationResult result)
 {
     if (CSharpLexer.IsKeyword(NameToken.GetText()))
     {
         result.Append("@");
     }
     result.AppendMapped(NameToken);
 }
 protected T4CSharpIntermediateConverterBase(
     [NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult,
     [NotNull] IT4File file
     )
 {
     IntermediateResult = intermediateResult;
     File   = file;
     Result = new T4CSharpCodeGenerationResult(File);
 }
 protected T4CSharpIntermediateConverterBase(
     [NotNull] IT4File file,
     [NotNull] IT4GeneratedClassNameProvider classNameProvider
     )
 {
     File = file;
     ClassNameProvider = classNameProvider;
     Result            = new T4CSharpCodeGenerationResult(File);
 }
Beispiel #7
0
 public T4CSharpCodeGenerationIntermediateResult(
     [NotNull] IT4File file,
     [NotNull] IT4CodeGenerationInterrupter interrupter
     )
 {
     CollectedBaseClass           = new T4CSharpCodeGenerationResult(file);
     MyTransformationDescriptions = new List <IT4AppendableElementDescription>();
     MyFeatureDescriptions        = new List <IT4AppendableElementDescription>();
     MyParameterDescriptions      = new List <T4ParameterDescription>();
     MyImportDescriptions         = new List <T4ImportDescription>();
     State   = new T4InfoCollectorStateInitial(interrupter);
     HasHost = false;
 }
        public override void AppendCompilationOffset(T4CSharpCodeGenerationResult destination, IT4TreeNode node)
        {
            int documentOffset = T4UnsafeManualRangeTranslationUtil.GetDocumentStartOffset(node).Offset;
            var lineOffset     = node
                                 .FindLogicalPsiSourceFile()
                                 .Document
                                 .GetCoordsByOffset(documentOffset)
                                 .Column;

            for (var i = Int32 <DocColumn> .O; i < lineOffset; i++)
            {
                destination.Append(" ");
            }
        }
 public override void AppendContent(
     T4CSharpCodeGenerationResult destination,
     IT4ElementAppendFormatProvider provider
     )
 {
     destination.Append(provider.Indent);
     provider.AppendLineDirective(destination, Source);
     provider.AppendCompilationOffset(destination, Source);
     destination.Append("using ");
     destination.AppendMapped(Source);
     destination.AppendLine(";");
     destination.Append(provider.Indent);
     destination.AppendLine("#line default");
     destination.Append(provider.Indent);
     destination.AppendLine("#line hidden");
 }
        public void AppendTypeMapped([NotNull] T4CSharpCodeGenerationResult result)
        {
            string typeText = TypeToken.GetText();
            string keyword  = CSharpTypeFactory.GetTypeKeyword(new ClrTypeName(typeText));

            if (keyword != null)
            {
                result.Append(keyword);
                return;
            }

            result.Append("global::");
            if (CSharpLexer.IsKeyword(typeText))
            {
                result.Append("@");
            }
            result.AppendMapped(TypeToken);
        }
 public override void AppendMappedIfNeeded(T4CSharpCodeGenerationResult destination, IT4Code code) =>
 destination.Append(code.GetText().Trim());
 public abstract void AppendLineDirective(T4CSharpCodeGenerationResult destination, IT4TreeNode node);
 public override void AppendCompilationOffset(T4CSharpCodeGenerationResult destination, IT4TreeNode node)
 {
     // In preprocessed file, behave like VS
 }
 public abstract void AppendMappedIfNeeded(T4CSharpCodeGenerationResult destination, IT4Code code);
 public override void AppendCompilationOffset(T4CSharpCodeGenerationResult destination, IT4TreeNode node)
 {
 }
 public override void AppendLineDirective(T4CSharpCodeGenerationResult destination, IT4TreeNode node)
 {
     // Line directives in code-behind affect nothing anyway.
     // The mapping between the code and the document
     // is handled by document range translators.
 }
 public void AppendType([NotNull] T4CSharpCodeGenerationResult result) => result.Append(TypeString);
 public abstract void AppendCompilationOffset(T4CSharpCodeGenerationResult destination, IT4TreeNode node);