private string IndentTransformTextMember()

in Backend/Core/ForTea.Core/Psi/Formatting/T4CSharpCustomIndentHandler.cs [69:108]


    private string IndentTransformTextMember(
      [NotNull] ITreeNode node,
      CustomIndentType indentType,
      FmtSettingsClassic<CSharpFormatSettingsKey> settings
    )
    {
      var rangeTranslator = GetRangeTranslator(node);

      if (indentType == CustomIndentType.RelativeLineCalculation)
        return CalculateRelativeIndentInTransformText(node, rangeTranslator);

      var statement = node as ICSharpStatement;
      if (node.GetTokenType() == CSharpTokenType.LBRACE)
        statement = node.Parent as IBlock;
      var block = BlockNavigator.GetByStatement(statement);
      if (node is IComment || node is IStartRegion || node is IEndRegion)
        block = node.GetContainingNode<ITreeNode>() as IBlock;
      if (block == null) return null;

      var generatedTreeRange = new TreeTextRange(node.GetTreeStartOffset());
      var blockGeneratedTreeRange = new TreeTextRange(block.GetTreeStartOffset());
      var originalRange = rangeTranslator.GeneratedToOriginal(generatedTreeRange);
      var blockOriginalRange = rangeTranslator.GeneratedToOriginal(blockGeneratedTreeRange);
      if (!originalRange.IsValid()) return null;

      var t4Element = rangeTranslator.OriginalFile.FindNodeAt(originalRange);
      var codeBlock = t4Element?.GetParentOfType<IT4CodeBlock>();
      if (codeBlock == null) return null;

      string indentFromPreviousStatement = GetIndentFromPreviousStatement(node, rangeTranslator);
      if (indentFromPreviousStatement != null) return indentFromPreviousStatement;

      if (blockOriginalRange.IsValid() && codeBlock.GetTreeTextRange().Contains(blockOriginalRange))
        return null;
      var blockStart = codeBlock.GetTreeStartOffset();
      int nodeStart = originalRange.StartOffset.Offset;
      if (!HasLineBreak(codeBlock, nodeStart, blockStart)) return null;
      if (HasStatementsBefore(rangeTranslator, node)) return null;
      return settings.Settings.GetIndentStr();
    }