protected CreoleElementProcessor(CreoleParserContext context, TokenRange <CreoleTokenCode> tokens) { Context = context; _tokens = tokens; _token = tokens.GetEnumerator(); _tokenHasValue = _token.MoveNext(); }
private CreoleRichTextElementProcessor(CreoleParserContext context, TokenRange <CreoleTokenCode> tokens, ICreoleRichTextElementDataIterator elementIterator) { _tokens = tokens; Context = context; _element = elementIterator; if (_element != null && _element.MoveNext()) { _token = _tokens.SubRange(_startIndex, (_element.Current.StartIndex - _startIndex)).GetEnumerator(); _startIndex = _element.Current.EndIndex; } else { _element?.Dispose(); _element = null; _token = _tokens.GetEnumerator(); _startIndex = _tokens.Count; } }
private string _GetCodeBlockTextFrom(TokenRange <CreoleTokenCode> tokens) { var builder = new StringBuilder(); using (var token = tokens.GetEnumerator()) if (token.MoveNext()) { var startIndex = (token.Current.Text.IndexOf('\n') + 1); builder.Append(token.Current.Text, startIndex, token.Current.Text.Length - startIndex); if (token.MoveNext()) { var previousToken = token.Current; while (token.MoveNext()) { builder.Append(previousToken.Text); previousToken = token.Current; } startIndex = previousToken.Text.LastIndexOf('\n'); if (startIndex >= 0) { if (startIndex > 0 && previousToken.Text[startIndex - 1] == '\r') { startIndex--; } builder.Append(previousToken.Text, 0, startIndex); } else { builder.Append(previousToken.Text); } } } return(builder.ToString()); }