private void ProcessT4Directive()

in Backend/Core/ForTea.Core/Services/CodeStructure/T4CSharpCodeStructureProvider.cs [64:93]


    private void ProcessT4Directive([NotNull] IT4Directive directive, [NotNull] CodeStructureElement parentElement)
      => new T4CodeStructureDirective(parentElement, directive);

    private static void ProcessT4FeatureBlock(
      [NotNull] IT4FeatureBlock featureBlock,
      [NotNull] CodeStructureElement parentElement,
      [NotNull] ICSharpFile cSharpFile,
      [NotNull] ISecondaryRangeTranslator secondaryRangeTranslator,
      [NotNull] CSharpCodeStructureProcessingState state
    )
    {
      TreeTextRange t4Range = featureBlock.Code.GetTreeTextRange();
      TreeTextRange cSharpRange = secondaryRangeTranslator.OriginalToGenerated(t4Range);
      if (!cSharpRange.IsValid())
        return;

      TreeOffset cSharpStart = cSharpRange.StartOffset;
      TreeOffset cSharpEnd = cSharpRange.EndOffset;

      ITreeNode containingNode = cSharpFile.FindNodeAt(cSharpRange);
      if (containingNode == null)
        return;

      for (ITreeNode node = containingNode.FirstChild; node != null; node = node.NextSibling)
      {
        TreeOffset nodeStart = node.GetTreeStartOffset();
        if (nodeStart >= cSharpStart && nodeStart < cSharpEnd)
          ProcessCSharpNode(node, parentElement, state);
      }
    }