예제 #1
0
        /// <summary>Called when this node has been created and is being added to the given lexer.
        /// Closely related to Element.OnLexerCloseNode.</summary>
        /// <returns>True if this element handled itself.</returns>
        public override bool OnLexerAddNode(HtmlLexer lexer, int mode)
        {
            if ((mode & InHeadMode) != 0)
            {
                lexer.RawTextOrRcDataAlgorithm(this, HtmlParseMode.Rawtext);
            }
            else if (mode == HtmlTreeMode.AfterHead)
            {
                lexer.AfterHeadHeadTag(this);
            }
            else
            {
                return(false);
            }

            return(true);
        }
예제 #2
0
        /// <summary>Called when this node has been created and is being added to the given lexer.
        /// Closely related to Element.OnLexerCloseNode.</summary>
        /// <returns>True if this element handled itself.</returns>
        public override bool OnLexerAddNode(HtmlLexer lexer, int mode)
        {
            if ((mode & (HtmlTreeMode.InHead | HtmlTreeMode.InBody | HtmlTreeMode.InTemplate | HtmlTreeMode.InTable | HtmlTreeMode.InHeadNoScript)) != 0)
            {
                // Add as text:
                lexer.RawTextOrRcDataAlgorithm(this, HtmlParseMode.Rawtext);
            }
            else if (mode == HtmlTreeMode.AfterHead)
            {
                lexer.AfterHeadHeadTag(this);
            }
            else
            {
                return(false);
            }

            return(true);
        }
예제 #3
0
        /// <summary>Called when this node has been created and is being added to the given lexer.
        /// Closely related to Element.OnLexerCloseNode.</summary>
        /// <returns>True if this element handled itself.</returns>
        public override bool OnLexerAddNode(HtmlLexer lexer, int mode)
        {
            if ((mode & (HtmlTreeMode.InHead | HtmlTreeMode.InBody | HtmlTreeMode.InTemplate)) != 0)
            {
                // Generic RCData algorithm:
                lexer.RawTextOrRcDataAlgorithm(this, HtmlParseMode.RCData);
            }
            else if (mode == HtmlTreeMode.AfterHead)
            {
                lexer.AfterHeadHeadTag(this);
            }
            else
            {
                return(false);
            }

            return(true);
        }
예제 #4
0
        /// <summary>Called when this node has been created and is being added to the given lexer.
        /// Closely related to Element.OnLexerCloseNode.</summary>
        /// <returns>True if this element handled itself.</returns>
        public override bool OnLexerAddNode(HtmlLexer lexer, int mode)
        {
            if ((mode & (HtmlTreeMode.InHead | HtmlTreeMode.InBody | HtmlTreeMode.InTemplate | HtmlTreeMode.InHeadNoScript)) != 0)
            {
                // Append it. DO NOT push to the stack:
                lexer.Push(this, false);
            }
            else if (mode == HtmlTreeMode.AfterHead)
            {
                lexer.AfterHeadHeadTag(this);
            }
            else
            {
                return(false);
            }

            return(true);
        }
예제 #5
0
        /// <summary>Called when this node has been created and is being added to the given lexer.
        /// Closely related to Element.OnLexerCloseNode.</summary>
        /// <returns>True if this element handled itself.</returns>
        public override bool OnLexerAddNode(HtmlLexer lexer, int mode)
        {
            if ((mode & (HtmlTreeMode.InHead | HtmlTreeMode.InBody | HtmlTreeMode.InTemplate | HtmlTreeMode.InHeadNoScript)) != 0)
            {
                // Append it. DO NOT push to the stack:
                lexer.Push(this, false);

                // Should check for encoding here.
                // http://w3c.github.io/html/syntax.html#the-in-head-insertion-mode
            }
            else if (mode == HtmlTreeMode.AfterHead)
            {
                lexer.AfterHeadHeadTag(this);
            }
            else
            {
                return(false);
            }

            return(true);
        }
예제 #6
0
        /// <summary>Called when this node has been created and is being added to the given lexer.
        /// Closely related to Element.OnLexerCloseNode.</summary>
        /// <returns>True if this element handled itself.</returns>
        public override bool OnLexerAddNode(HtmlLexer lexer, int mode)
        {
            if ((mode & InHeadOpen) != 0)
            {
                // Opening a template
                lexer.Push(this, true);

                lexer.AddScopeMarker();
                lexer.FramesetOk  = false;
                lexer.CurrentMode = HtmlTreeMode.InTemplate;
                lexer.TemplateModes.Push(HtmlTreeMode.InTemplate);
            }
            else if (mode == HtmlTreeMode.AfterHead)
            {
                lexer.AfterHeadHeadTag(this);
            }
            else
            {
                return(false);
            }

            return(true);
        }
예제 #7
0
        /// <summary>Called when this node has been created and is being added to the given lexer.
        /// Closely related to Element.OnLexerCloseNode.</summary>
        /// <returns>True if this element handled itself.</returns>
        public override bool OnLexerAddNode(HtmlLexer lexer, int mode)
        {
            if ((mode & (HtmlTreeMode.InHead | HtmlTreeMode.InBody | HtmlTreeMode.InTemplate | HtmlTreeMode.InSelectInTable | HtmlTreeMode.InSelect | HtmlTreeMode.InTable)) != 0)
            {
                // Append it:
                lexer.Push(this, true);

                // Switch to Script data:
                lexer.PreviousMode = lexer.CurrentMode;
                lexer.CurrentMode  = HtmlTreeMode.Text;
                lexer.State        = HtmlParseMode.Script;
            }
            else if (mode == HtmlTreeMode.AfterHead)
            {
                lexer.AfterHeadHeadTag(this);
            }
            else
            {
                return(false);
            }

            return(true);
        }