/// <summary>Calculates a line break count</summary> /// <param name="sourceCode">Source code</param> /// <param name="lineBreakCount">Number of line breaks</param> /// <param name="charRemainderCount">Number of characters left</param> public static void CalculateLineBreakCount( string sourceCode, out int lineBreakCount, out int charRemainderCount) { SourceCodeNavigator.CalculateLineBreakCount(sourceCode, 0, out lineBreakCount, out charRemainderCount); }
/// <summary>Calculates a line break count</summary> /// <param name="sourceCode">Source code</param> /// <param name="fragmentStartPosition">Start position of fragment</param> /// <param name="lineBreakCount">Number of line breaks</param> /// <param name="charRemainderCount">Number of characters left</param> public static void CalculateLineBreakCount( string sourceCode, int fragmentStartPosition, out int lineBreakCount, out int charRemainderCount) { int fragmentLength = sourceCode.Length - fragmentStartPosition; SourceCodeNavigator.CalculateLineBreakCount(sourceCode, fragmentStartPosition, fragmentLength, out lineBreakCount, out charRemainderCount); }
/// <summary>Calculates a node coordinates</summary> /// <param name="sourceCode">Source code</param> /// <param name="nodePosition">Current node position</param> /// <returns>Node coordinates</returns> public static SourceCodeNodeCoordinates CalculateNodeCoordinates( string sourceCode, int nodePosition) { if (string.IsNullOrEmpty(sourceCode) || nodePosition >= sourceCode.Length) { return(SourceCodeNodeCoordinates.Empty); } int fragmentLength = nodePosition + 1; int lineBreakCount; int charRemainderCount; SourceCodeNavigator.CalculateLineBreakCount(sourceCode, 0, fragmentLength, out lineBreakCount, out charRemainderCount); return(new SourceCodeNodeCoordinates(lineBreakCount + 1, charRemainderCount + 1)); }
/// <summary>Calculates a absolute node coordinates</summary> /// <param name="baseNodeCoordinates">Base node coordinates</param> /// <param name="additionalContent">Additional content</param> /// <returns>Absolute node coordinates</returns> public static SourceCodeNodeCoordinates CalculateAbsoluteNodeCoordinates( SourceCodeNodeCoordinates baseNodeCoordinates, string additionalContent) { int lineBreakCount = 0; int charRemainderCount = 0; if (!string.IsNullOrEmpty(additionalContent)) { SourceCodeNavigator.CalculateLineBreakCount(additionalContent, out lineBreakCount, out charRemainderCount); } int lineNumber1; int columnNumber1; if (!baseNodeCoordinates.IsEmpty) { int lineNumber2 = baseNodeCoordinates.LineNumber; int columnNumber2 = baseNodeCoordinates.ColumnNumber; if (lineBreakCount > 0) { lineNumber1 = lineNumber2 + lineBreakCount; columnNumber1 = charRemainderCount + 1; } else { lineNumber1 = lineNumber2; columnNumber1 = columnNumber2 + charRemainderCount; } } else { lineNumber1 = lineBreakCount + 1; columnNumber1 = charRemainderCount + 1; } return(new SourceCodeNodeCoordinates(lineNumber1, columnNumber1)); }