Esempio n. 1
0
        private void ParseBlockSequence(BufferedTokenEnumerator tokenEnumerator, List <Region> regions)
        {
            Token previousBlockEntry = null;

            while (tokenEnumerator.MoveNext())
            {
                var token      = tokenEnumerator.Current;
                var isBlockEnd = token is BlockEnd;
                if (isBlockEnd || token is BlockEntry)
                {
                    if (previousBlockEntry != null && previousBlockEntry.End.Line != tokenEnumerator.Previous.End.Line)
                    {
                        regions.Add(new Region(previousBlockEntry.End, tokenEnumerator.Previous.End));
                    }

                    if (isBlockEnd)
                    {
                        return;
                    }

                    previousBlockEntry = token;
                }
                else if (token is BlockSequenceStart)
                {
                    ParseBlockSequence(tokenEnumerator, regions);
                }
                else if (token is BlockMappingStart)
                {
                    ParseBlockMapping(tokenEnumerator, regions);
                }
            }
        }
		private void ParseBlockMapping(BufferedTokenEnumerator tokenEnumerator, List<Region> regions)
		{
			Token currentValueEntry = null;
			while (tokenEnumerator.MoveNext())
			{
				var token = tokenEnumerator.Current;
				var isBlockEnd = token is BlockEnd;
				if (isBlockEnd || token is Key)
				{
					if (currentValueEntry != null && currentValueEntry.End.Line != tokenEnumerator.Previous.End.Line)
					{
						regions.Add(new Region(currentValueEntry.End, tokenEnumerator.Previous.End));
					}

					if (isBlockEnd)
					{
						return;
					}
				}
				else if (token is Value)
				{
					currentValueEntry = token;
				}
				else if (token is BlockSequenceStart)
				{
					ParseBlockSequence(tokenEnumerator, regions);
				}
				else if (token is BlockMappingStart)
				{
					ParseBlockMapping(tokenEnumerator, regions);
				}
			}
		}
Esempio n. 3
0
 private void ParseRegions(BufferedTokenEnumerator tokenEnumerator, List <Region> regions)
 {
     while (tokenEnumerator.MoveNext())
     {
         var token = tokenEnumerator.Current;
         if (token is BlockSequenceStart)
         {
             ParseBlockSequence(tokenEnumerator, regions);
         }
         else if (token is BlockMappingStart)
         {
             ParseBlockMapping(tokenEnumerator, regions);
         }
     }
 }
		private void ParseRegions(BufferedTokenEnumerator tokenEnumerator, List<Region> regions)
		{
			while (tokenEnumerator.MoveNext())
			{
				var token = tokenEnumerator.Current;
				if (token is BlockSequenceStart)
				{
					ParseBlockSequence(tokenEnumerator, regions);
				}
				else if (token is BlockMappingStart)
				{
					ParseBlockMapping(tokenEnumerator, regions);
				}
			}
		}