public void HtmlTokenizer_GetNameToken_BasicTest() { var cs = new HtmlCharStream("foo"); HtmlTokenizer target = new HtmlTokenizer(cs); NameToken actual = target.GetNameToken(); Assert.Equal(3, actual.Length); Assert.Equal(0, actual.Start); Assert.Equal(3, actual.End); Assert.Equal(3, actual.NameRange.Length); Assert.Equal(0, actual.NameRange.Start); Assert.Equal(3, actual.NameRange.End); Assert.Equal(0, actual.PrefixRange.Start); Assert.Equal(0, actual.PrefixRange.End); }
public void HtmlTokenizer_GetNameToken_MissingNameTest() { var cs = new HtmlCharStream("foo:"); HtmlTokenizer target = new HtmlTokenizer(cs); NameToken actual = target.GetNameToken(); Assert.Equal(4, actual.Length); Assert.Equal(0, actual.Start); Assert.Equal(4, actual.End); Assert.True(actual.HasPrefix()); Assert.Equal(0, actual.PrefixRange.Start); Assert.Equal(3, actual.PrefixRange.End); Assert.False(actual.HasName()); Assert.Equal(0, actual.NameRange.Length); Assert.False(actual.HasQualifiedName()); Assert.Equal(0, actual.QualifiedName.Start); Assert.Equal(4, actual.QualifiedName.End); }
public void HtmlTokenizer_SkipWhitespaceTest() { var cs = new HtmlCharStream(" abc\t\tdef\r\n gh"); HtmlTokenizer target = new HtmlTokenizer(cs); target.SkipWhitespace(); Assert.Equal(3, cs.Position); target.SkipWhitespace(); Assert.Equal(3, cs.Position); cs.Advance(3); target.SkipWhitespace(); Assert.Equal(8, cs.Position); cs.Advance(3); target.SkipWhitespace(); Assert.Equal(14, cs.Position); }
/// <summary> /// Parse text from a text provider within a given range /// </summary> /// <param name="textProvider">Text provider</param> /// <param name="range">Range to parse</param> public void Parse(ITextProvider textProvider, ITextRange range) { DateTime? timeStart = null; if (Stats.Enabled) timeStart = DateTime.UtcNow; if (ParsingStarting != null) ParsingStarting(this, new HtmlParserRangeEventArgs(range)); DocType = DocType.Undefined; _cs = new HtmlCharStream(textProvider, range); _tokenizer = new HtmlTokenizer(_cs); _softRangeEnd = range.End; OnTextState(); if (ParsingComplete != null) ParsingComplete(this, new HtmlParserRangeEventArgs(range)); if (Stats.Enabled) { Stats.ParseTime = (DateTime.UtcNow - timeStart.Value); Stats.CharactersPerSecond = (int)(1000.0 * (double)_cs.Length / (double)Stats.ParseTime.TotalMilliseconds + 0.5); } }