Exemplo n.º 1
0
        /// <summary>
        /// Will create a index map based on the textToSearch parameter.
        /// </summary>
        /// <param name="textToSearch">The source code to create an index map against for source code comments.</param>
        /// <returns></returns>
        public static CommentedCodeIndexMap CreateMap(String textToSearch)
        {
            var indexMap = new CommentedCodeIndexMap()
            {
                TextToSearch = textToSearch,
            };

            var currentIndex = 0;
            var startIndexOfComment = 0;
            var endIndexOfComment = 0;

            while (currentIndex < textToSearch.Length - 2) //will be checking next character as well.
            {
                var characters = textToSearch.Substring(currentIndex, 2);
                switch (characters)
                {
                    default:
                        //no comment, check the next character
                        currentIndex++;
                        continue;
                    case "//": //single line comment
                        endIndexOfComment = textToSearch.IndexOf("\n", currentIndex) - 1;
                        break;
                    case "/*":
                        endIndexOfComment = textToSearch.IndexOf("*/", currentIndex) + 2;
                        break;
                }

                startIndexOfComment = currentIndex;

                //if the last line of the file or strange overflow
                if (endIndexOfComment < 0 || endIndexOfComment < startIndexOfComment)
                    endIndexOfComment = textToSearch.Length - 1;

                indexMap._listOfIndexes.Add(new Tuple<int, int>(startIndexOfComment, endIndexOfComment));

                currentIndex = endIndexOfComment;
            }

            return indexMap;
        }
        /// <summary>
        ///     Will create a index map based on the textToSearch parameter.
        /// </summary>
        /// <param name="textToSearch">The source code to create an index map against for source code comments.</param>
        /// <returns></returns>
        public static CommentedCodeIndexMap CreateMap(String textToSearch)
        {
            var indexMap = new CommentedCodeIndexMap()
            {
                TextToSearch = textToSearch,
            };

            var currentIndex = 0;
            var startIndexOfComment = 0;
            var endIndexOfComment = 0;

            while (currentIndex < textToSearch.Length - 2)
            {
                var characters = textToSearch.Substring(currentIndex, 2);
                switch (characters)
                {
                    default:
                        currentIndex++;
                        continue;
                    case "//":
                        endIndexOfComment = textToSearch.IndexOf("\n", currentIndex) - 1;
                        break;
                    case "/*":
                        endIndexOfComment = textToSearch.IndexOf("*/", currentIndex) + 2;
                        break;
                }

                startIndexOfComment = currentIndex;

                if (endIndexOfComment < 0 || endIndexOfComment < startIndexOfComment)
                    endIndexOfComment = textToSearch.Length - 1;

                indexMap._listOfIndexes.Add(new Tuple<Int32, Int32>(startIndexOfComment, endIndexOfComment));

                currentIndex = endIndexOfComment;
            }

            return indexMap;
        }