private void WriteAttributes(ArrayList list, int count, HtmlElementProps htmlElementsProps)
{
Debug.Assert(count <= list.Count);
for (int attrib = 0; attrib < count; attrib++)
{
Debug.Assert(list[attrib] is BuilderInfo);
BuilderInfo attribute = (BuilderInfo)list[attrib];
string attrValue = attribute.Value;
bool abr = false, uri = false;
{
if (htmlElementsProps != null && attribute.Prefix.Length == 0)
{
HtmlAttributeProps htmlAttrProps = attribute.htmlAttrProps;
if (htmlAttrProps == null && attribute.search)
{
htmlAttrProps = HtmlAttributeProps.GetProps(attribute.LocalName);
}
if (htmlAttrProps != null)
{
abr = htmlElementsProps.AbrParent && htmlAttrProps.Abr;
uri = htmlElementsProps.UriParent && (htmlAttrProps.Uri ||
htmlElementsProps.NameParent && htmlAttrProps.Name
);
}
}
}
Write(s_Space);
WriteName(attribute.Prefix, attribute.LocalName);
if (abr && string.Equals(attribute.LocalName, attrValue, StringComparison.OrdinalIgnoreCase))
{
// Since the name of the attribute = the value of the attribute,
// this is a boolean attribute whose value should be suppressed
continue;
}
Write(s_EqualQuote);
if (uri)
{
WriteHtmlUri(attrValue);
}
else if (_isHtmlOutput)
{
WriteHtmlAttributeValue(attrValue);
}
else
{
WriteXmlAttributeValue(attrValue);
}
Write(s_Quote);
}
}