WebMarkupMin.Core.Parsers.HtmlParser.GetTagFlagsByName C# (CSharp) Method

GetTagFlagsByName() private method

Gets a HTML tag flags by tag name
private GetTagFlagsByName ( string tagNameInLowercase ) : WebMarkupMin.Core.Parsers.HtmlTagFlags
tagNameInLowercase string Tag name in lowercase
return WebMarkupMin.Core.Parsers.HtmlTagFlags
        private HtmlTagFlags GetTagFlagsByName(string tagNameInLowercase)
        {
            HtmlTagFlags tagFlags;

            if (_xmlTagStack.Count == 0)
            {
                if (_htmlTagFlagsCache.ContainsKey(tagNameInLowercase))
                {
                    tagFlags = _htmlTagFlagsCache[tagNameInLowercase];
                }
                else if (_customHtmlTagFlagsCache.ContainsKey(tagNameInLowercase))
                {
                    tagFlags = _customHtmlTagFlagsCache[tagNameInLowercase];
                }
                else
                {
                    tagFlags = HtmlTagFlags.None;
                    bool isXml = false;

                    var isHtml = HtmlTagFlagsHelpers.IsHtmlTag(tagNameInLowercase);
                    if (!isHtml)
                    {
                        isXml = HtmlTagFlagsHelpers.IsXmlBasedTag(tagNameInLowercase);
                    }

                    if (isHtml || isXml)
                    {
                        if (HtmlTagFlagsHelpers.IsInvisibleTag(tagNameInLowercase))
                        {
                            tagFlags |= HtmlTagFlags.Invisible;
                        }

                        if (HtmlTagFlagsHelpers.IsEmptyTag(tagNameInLowercase))
                        {
                            tagFlags |= HtmlTagFlags.Empty;
                        }

                        if (HtmlTagFlagsHelpers.IsBlockTag(tagNameInLowercase))
                        {
                            tagFlags |= HtmlTagFlags.Block;
                        }

                        if (HtmlTagFlagsHelpers.IsInlineTag(tagNameInLowercase))
                        {
                            tagFlags |= HtmlTagFlags.Inline;
                        }

                        if (HtmlTagFlagsHelpers.IsInlineBlockTag(tagNameInLowercase))
                        {
                            tagFlags |= HtmlTagFlags.InlineBlock;
                        }

                        if (HtmlTagFlagsHelpers.IsNonIndependentTag(tagNameInLowercase))
                        {
                            tagFlags |= HtmlTagFlags.NonIndependent;
                        }

                        if (HtmlTagFlagsHelpers.IsOptionalTag(tagNameInLowercase))
                        {
                            tagFlags |= HtmlTagFlags.Optional;
                        }

                        if (HtmlTagFlagsHelpers.IsTagWithEmbeddedCode(tagNameInLowercase))
                        {
                            tagFlags |= HtmlTagFlags.EmbeddedCode;
                        }

                        if (isXml)
                        {
                            tagFlags |= HtmlTagFlags.Xml;
                        }

                        _htmlTagFlagsCache[tagNameInLowercase] = tagFlags;
                    }
                    else
                    {
                        tagFlags = HtmlTagFlags.Custom;
                    }
                }
            }
            else
            {
                tagFlags = HtmlTagFlags.Xml | HtmlTagFlags.NonIndependent;
                if (HtmlTagFlagsHelpers.IsTagWithEmbeddedCode(tagNameInLowercase))
                {
                    tagFlags |= HtmlTagFlags.EmbeddedCode;
                }
            }

            return tagFlags;
        }