Example #1
0
 /// <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);
 }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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));
        }
Example #4
0
        /// <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));
        }