public void PartialToken_Uniqueness() { var partialToken = new PartialToken { Content = new StringSlice("partial"), Indent = 0, ContentStartPosition = 0, ContentEndPosition = 6, IsClosed = true, TagStartPosition = 0, TagEndPosition = 6 }; var partialToken2 = new PartialToken { Content = new StringSlice("partial"), Indent = 0, ContentStartPosition = 0, ContentEndPosition = 6, IsClosed = true, TagStartPosition = 0, TagEndPosition = 6 }; Assert.False(partialToken.Equals(null)); Assert.Equal(partialToken, partialToken2); Assert.Equal(partialToken.GetHashCode(), partialToken2.GetHashCode()); }
public override Token Parse(TextReader reader) { PartialToken token = null; if ((char)reader.Peek() == '>') { token = Token.Partial(); } return(token); }
public override Token Parse(ExtendedStringReader reader) { PartialToken token = null; if ((char)reader.Peek() == '>') { token = Token.Partial(reader.GetContext()); } return(token); }
/// <summary> /// Tries to match partial tag from the current slice /// </summary> /// <param name="processor">The processor</param> /// <param name="slice">The slice</param> /// <returns>If a match was found</returns> public override bool Match(Processor processor, ref StringSlice slice) { var tagStart = slice.Start - processor.CurrentTags.StartTag.Length; var index = slice.Start; while (slice[index].IsWhitespace()) { index++; } var match = slice[index]; if (match == TagId) { index++; while (slice[index].IsWhitespace()) { index++; } slice.Start = index; var startIndex = slice.Start; var partialTag = new PartialToken { LineIndent = processor.HasSeenNonSpaceOnLine ? 0 : processor.LineIndent, TagStartPosition = tagStart, ContentStartPosition = startIndex, IsClosed = false }; processor.CurrentToken = partialTag; while (!slice.IsEmpty && !slice.Match(processor.CurrentTags.EndTag)) { slice.NextChar(); } if (slice.IsEmpty) { return(false); } var content = new StringSlice(slice.Text, startIndex, slice.Start - 1); content.TrimEnd(); var contentEnd = content.End + 1; partialTag.ContentEndPosition = contentEnd; partialTag.TagEndPosition = slice.Start + processor.CurrentTags.EndTag.Length; partialTag.IsClosed = true; slice.Start += processor.CurrentTags.EndTag.Length; return(true); } return(false); }