Boo.BooLangService.StringParsing.BracketPairFinder.FindPairs C# (CSharp) Method

FindPairs() public method

public FindPairs ( string value ) : BracketPairCollection
value string
return BracketPairCollection
        public BracketPairCollection FindPairs(string value)
        {
            var pairs = new BracketPairCollection();
            var stack = new Stack<BracketPair>();
            var walker = new ExcludingStringLiteralsStringWalker();

            foreach (var position in walker.Iterate(value))
            {
                if (position.Character == type.Left)
                {
                    // starting new pair
                    stack.Push(new BracketPair { LeftIndex = position.Index });
                }

                if (position.Character == type.Right)
                {
                    // ending pair
                    var pair = stack.Pop();

                    pair.RightIndex = position.Index;

                    pairs.Add(pair);
                }
            }

            return pairs;
        }

Usage Example

        public void FindsSinglePair()
        {
            string value = "()";
            var finder = new BracketPairFinder(BracketPairType.Round);

            BracketPairCollection pairs = finder.FindPairs(value);

            Assert.Equal(1, pairs.Count);

            var pair = pairs.FindLeftByIndex(0);

            Assert.NotNull(pair);
            Assert.Equal(1, pair.RightIndex);
        }
All Usage Examples Of Boo.BooLangService.StringParsing.BracketPairFinder::FindPairs