internal MergeElementDataIterator(IElementDataIterator left, IElementDataIterator right) { _left = left; _leftHasValue = left.MoveNext(); _right = right; _rightHasValue = right.MoveNext(); }
private IElementDataIterator _GetStyleElementIterator(CreoleParserContext context, TokenRange <CreoleTokenCode> tokens, IEnumerable <CreoleRichTextElementData> baseElementsData, IEnumerable <CreoleRichTextElementType> excludedElementTypes) { var processors = new List <IElementDataIterator>(); if (excludedElementTypes == null) { foreach (var styleElementFactory in _styleElementFactories) { var elementType = styleElementFactory.Key; processors.Add(new ElementProcessorFilterIterator(styleElementFactory.Value(_context, tokens, baseElementsData), elementType)); } } else { foreach (var styleElementFactory in _styleElementFactories) { var elementType = styleElementFactory.Key; if (!_Contains(excludedElementTypes, elementType)) { processors.Add(new ElementProcessorFilterIterator(styleElementFactory.Value(_context, tokens, baseElementsData), elementType)); } } } IElementDataIterator styleElementIterator = null; using (var processor = processors.GetEnumerator()) if (processor.MoveNext()) { styleElementIterator = processor.Current; while (processor.MoveNext()) { styleElementIterator = new MergeElementDataIterator(styleElementIterator, processor.Current); } } return(styleElementIterator); }