Parse() public method

Parse text from a text provider
public Parse ( ITextProvider textProvider ) : void
textProvider ITextProvider Text provider
return void
Example #1
0
        public void HtmlParser_UnknownDocType() {
            var parser = new HtmlParser();

            parser.Parse("<!doctype randomname1><html></html>");
            Assert.Equal(DocType.Unrecognized, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);

            parser.Parse("<html></html>");
            Assert.Equal(DocType.Undefined, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);
        }
Example #2
0
        public void HtmlParser_DuplicateDocType() {
            var parser = new HtmlParser();

            parser.Parse("<!doctype randomname1>" + DocTypeSignatures.Html5 + "<html></html>");
            Assert.Equal(DocType.Unrecognized, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Html5 + "<!doctype randomname1><html></html>");
            Assert.Equal(DocType.Html5, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);
        }
Example #3
0
        public void OnEntity_WellFormedTest1() {
            HtmlParser parser = new HtmlParser();

            parser.EntityFound += delegate (object sender, HtmlParserRangeEventArgs args) {
                Assert.Equal(3, args.Range.Start);
                Assert.Equal(9, args.Range.End);
            };

            parser.Parse("foo&nbsp;");
        }
Example #4
0
        public void HtmlParser_KnownDocTypes() {
            var parser = new HtmlParser();

            parser.Parse(DocTypeSignatures.Html32 + "<html></html>");
            Assert.Equal(DocType.Html32, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Html401Frameset + "<html></html>");
            Assert.Equal(DocType.Html401Frameset, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Html401Strict + "<html></html>");
            Assert.Equal(DocType.Html401Strict, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Html401Transitional + "<html></html>");
            Assert.Equal(DocType.Html401Transitional, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Html5 + "<html></html>");
            Assert.Equal(DocType.Html5, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Xhtml10Frameset + "<html></html>");
            Assert.Equal(DocType.Xhtml10Frameset, parser.DocType);
            Assert.Equal(ParsingMode.Xhtml, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Xhtml10Strict + "<html></html>");
            Assert.Equal(DocType.Xhtml10Strict, parser.DocType);
            Assert.Equal(ParsingMode.Xhtml, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Xhtml10Transitional + "<html></html>");
            Assert.Equal(DocType.Xhtml10Transitional, parser.DocType);
            Assert.Equal(ParsingMode.Xhtml, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Xhtml11 + "<html></html>");
            Assert.Equal(DocType.Xhtml11, parser.DocType);
            Assert.Equal(ParsingMode.Xhtml, parser.ParsingMode);

            parser.Parse(DocTypeSignatures.Xhtml20 + "<html></html>");
            Assert.Equal(DocType.Xhtml20, parser.DocType);
            Assert.Equal(ParsingMode.Xhtml, parser.ParsingMode);
        }
Example #5
0
        public void OnEntity_BrokenTest() {
            HtmlParser parser = new HtmlParser();
            int count = 0;

            parser.EntityFound += delegate (object sender, HtmlParserRangeEventArgs args) {
                count++;
            };

            parser.Parse("&gt");

            Assert.Equal(0, count);
        }
Example #6
0
        public void OnEntity_WellFormedTest3() {
            HtmlParser parser = new HtmlParser();
            int count = 0;

            parser.EntityFound += delegate (object sender, HtmlParserRangeEventArgs args) {
                count++;
            };

            parser.Parse(new TextStream("foo&#173;bar &#xabc;&abc;<html &lt; dir=\"&gt;"));

            Assert.Equal(2, count);
        }
Example #7
0
        public void OnEntity_WellFormedTest2() {
            HtmlParser parser = new HtmlParser();
            int count = 0;

            parser.EntityFound += delegate (object sender, HtmlParserRangeEventArgs args) {
                count++;
            };

            parser.Parse("foo&nbsp;bar &lt;<html &lt; dir=\"&gt;\"> &gt; &quot");

            Assert.Equal(3, count);
        }
Example #8
0
        static public void ParseText(HtmlTestFilesFixture fixture, string name) {
            string testFile = fixture.GetDestinationPath(name);
            string baselineFile = testFile + ".log";
            string text = fixture.LoadDestinationFile(name);
            EventLogger logger = null;

            HtmlParser p = new HtmlParser();
            logger = new EventLogger(p);
            p.Parse(text);
            var actual = logger.ToString();

            if (_regenerateBaselineFiles) {
                // Update this to your actual enlistment if you need to update baseline
                baselineFile = Path.Combine(fixture.SourcePath, name) + ".log";
                TestFiles.UpdateBaseline(baselineFile, actual);
            } else {
                TestFiles.CompareToBaseLine(baselineFile, actual);
            }
        }
Example #9
0
        public void HtmlParser_XmlPi() {
            var parser = new HtmlParser();

            parser.Parse("<?xml charset='utf-8' ?><html></html>");
            Assert.Equal(DocType.Undefined, parser.DocType);
            Assert.Equal(ParsingMode.Xml, parser.ParsingMode);
        }
Example #10
0
        public void HtmlParser_MalformedDocType() {
            var parser = new HtmlParser();

            parser.Parse("<!doctype randomname1<html></html>");
            Assert.Equal(DocType.Undefined, parser.DocType);
            Assert.Equal(ParsingMode.Html, parser.ParsingMode);
        }
Example #11
0
        public void AttributeParse_RandomCharacters() {
            var target = new HtmlParser();

            target.AttributeFound +=
                delegate (object sender, HtmlParserAttributeEventArgs args) {
                    Assert.True(args.AttributeToken is AttributeToken);
                    AttributeToken at = args.AttributeToken;

                    switch (attributeCalls) {
                        case 0:
                            Assert.True(at.HasName());
                            Assert.Equal(3, at.NameToken.Start);
                            Assert.Equal(2, at.NameToken.Length);

                            Assert.True(at.HasValue());
                            Assert.Equal(6, at.ValueToken.Start);
                            Assert.Equal(1, at.ValueToken.Length);
                            break;

                        case 1:
                            Assert.True(at.HasName());
                            Assert.Equal(8, at.NameToken.Start);
                            Assert.Equal(1, at.NameToken.Length);

                            Assert.True(at.HasValue());
                            Assert.Equal(10, at.ValueToken.Start);
                            Assert.Equal(1, at.ValueToken.Length);
                            break;

                        case 2:
                            Assert.True(at.HasName());
                            Assert.Equal(12, at.NameToken.Start);
                            Assert.Equal(2, at.NameToken.Length);

                            Assert.False(at.HasValue());
                            break;
                    }
                    attributeCalls++;
                };

            attributeCalls = 0;
            target.Parse("<a id=# $=% ^^");

            Assert.Equal(3, attributeCalls);
        }
Example #12
0
        public void AttributeParse_InlineStyle_Typo() {
            var target = new HtmlParser();

            target.AttributeFound +=
                delegate (object sender, HtmlParserAttributeEventArgs args) {
                    Assert.True(args.AttributeToken is AttributeToken);
                    AttributeToken at = args.AttributeToken;

                    switch (attributeCalls) {
                        case 0:
                            Assert.True(at.HasName());
                            Assert.Equal(7, at.NameToken.Start);
                            Assert.Equal(5, at.NameToken.Length);

                            Assert.True(at.HasValue());
                            Assert.Equal(13, at.ValueToken.Start);
                            Assert.Equal(14, at.ValueToken.Length);
                            break;

                        case 1:
                            Assert.True(at.HasName());
                            Assert.Equal(27, at.NameToken.Start);
                            Assert.Equal(1, at.NameToken.Length);

                            Assert.False(at.HasValue());
                            break;
                    }
                    attributeCalls++;
                };

            attributeCalls = 0;
            target.Parse("<input style=\"display:none\";>");
            Assert.Equal(2, attributeCalls);
        }
Example #13
0
        /// <summary>
        /// Main method to build a subtree from a text range.
        /// </summary>
        public virtual void Build(ITextRange range) {
            CommentCollection = new CommentCollection();

            HtmlParser parser = new HtmlParser(ParsingMode, ScriptTypeResolution, ScriptOrStyleTagNameService);
            HtmlTreeBuilder builder = new HtmlTreeBuilder(parser, this);
            parser.Parse(Text, range);

            DocType = parser.DocType;
            ParsingMode = parser.ParsingMode;
        }