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);
}
}