private static string TryGetIndentFromStatement( [NotNull] ISecondaryRangeTranslator rangeTranslator, [NotNull] ITreeNode currentNode ) { if (!(currentNode is IStatement)) { return(null); } var token = currentNode.GetFirstTokenIn(); var tokenRange = token.GetDocumentRange(); if (!tokenRange.IsValid()) { return(null); } if (tokenRange.TextRange.EndOffset >= rangeTranslator.OriginalFile.GetTextLength()) { return(null); } var generatedTokenRange = new TreeTextRange(token.GetTreeStartOffset()); var originalTokenRange = rangeTranslator.GeneratedToOriginal(generatedTokenRange); var t4Element = rangeTranslator.OriginalFile.FindNodeAt(originalTokenRange); var otherCodeBlock = t4Element?.GetParentOfType <IT4CodeBlock>(); if (otherCodeBlock == null) { return(null); } return(tokenRange.GetIndentFromDocumentRange()); }
private static string CalculateRelativeIndentInTransformText( [NotNull] ITreeNode node, [NotNull] ISecondaryRangeTranslator rangeTranslator ) { var firstToken = node.GetFirstTokenIn(); var generatedTreeRange1 = new TreeTextRange(firstToken.GetTreeStartOffset()); var originalRange = rangeTranslator.GeneratedToOriginal(generatedTreeRange1); if (!originalRange.IsValid()) { return(null); } var t4Element = rangeTranslator.OriginalFile.FindNodeAt(originalRange); return(t4Element?.GetLineIndentFromOriginalNode(n => n is IT4Token token && token.GetTokenType() == T4TokenNodeTypes.RAW_CODE, originalRange.StartOffset)); }