示例#1
0
        public void TestingShorten()
        {
            var watch = new Stopwatch();

            watch.Start();


            var    data   = new HtmlTestData();
            string source = data.HTML1;

            TagParser = new TagParser(source);


            string tagname  = "p";
            var    start    = false;
            int    count    = 0;
            int    countto  = 250;
            var    tagender = new TagEnder();

            string result = "";

            TagParser.DoElement = stuff => {
                if (stuff.State == State.Name && stuff.Element == tagname)
                {
                    start = true;
                }
            };

            TagParser.DoTag = stuff => { tagender.Set(stuff.Tag, stuff.State); };

            TagParser.DoText = stuff => {
                if (start)
                {
                    count += stuff.Position - stuff.Origin;
                    if (count > countto)
                    {
                        result = stuff.Text.ToString().Substring(0, stuff.Position);
                        TagParser.Stop();
                    }
                }
            };

            TagParser.Parse();

            watch.Stop();

            result = result + tagender.CloseTags();
            ReportDetail(result);
            ReportDetail("Elapsed: " + watch.Elapsed);
        }
示例#2
0
        public void MissingEndTagsTest()
        {
            var watch = new Stopwatch();

            watch.Start();


            var    data   = new HtmlTestData();
            string source = data.MissingEndTags1;

            TagParser = new TagParser(source);

            var tagender = new TagEnder();

            string result          = "";
            var    lastTagPosition = 0;

            TagParser.DoElement = stuff => {
                lastTagPosition = stuff.TagPosition;
            };

            TagParser.DoTag = stuff => {
                var tag = tagender.Name(stuff.Tag);
                if (!tagender.Set(tag, stuff.State))
                {
                    var tagsend = tagender.CloseTag(tag);
                    TagParser.Insert(lastTagPosition, tagsend);
                }
            };

            TagParser.DoText = stuff => {};

            TagParser.Parse();

            watch.Stop();

            result = TagParser.Stuff.Text.ToString();
            ReportDetail(result);
            ReportDetail("Elapsed: " + watch.Elapsed);
        }