/* create style element using rules from dictionary */
private void CreateStyleElement(Lexer lexer, Node doc)
{
Style style;
if (lexer.Styles == null && NiceBody(lexer, doc))
{
return;
}
Node node = lexer.NewNode(Node.START_TAG, null, 0, 0, "style");
node.Isimplicit = true;
/* insert type attribute */
var av = new AttVal(null, null, '"', "type", "text/css");
av.Dict = AttributeTable.DefaultAttributeTable.FindAttribute(av);
node.Attributes = av;
Node body = doc.FindBody(lexer.Options.TagTable);
lexer.Txtstart = lexer.Lexsize;
if (body != null)
{
CleanBodyAttrs(lexer, body);
}
for (style = lexer.Styles; style != null; style = style.Next)
{
lexer.AddCharToLexer(' ');
lexer.AddStringLiteral(style.Tag);
lexer.AddCharToLexer('.');
lexer.AddStringLiteral(style.TagClass);
lexer.AddCharToLexer(' ');
lexer.AddCharToLexer('{');
lexer.AddStringLiteral(style.Properties);
lexer.AddCharToLexer('}');
lexer.AddCharToLexer('\n');
}
lexer.Txtend = lexer.Lexsize;
Node.InsertNodeAtEnd(node, lexer.NewNode(Node.TEXT_NODE, lexer.Lexbuf, lexer.Txtstart, lexer.Txtend));
/*
now insert style element into document head
doc is root node. search its children for html node
the head node should be first child of html node
*/
Node head = doc.FindHead(lexer.Options.TagTable);
if (head != null)
{
Node.InsertNodeAtEnd(head, node);
}
}