/// <summary>
/// Creates a ParsingObject as a child of this one, and returns it.
/// </summary>
public virtual ParsingObject CreateChildParsingObject(ILocation location, string tagid, TagAttributes attributes)
{
string[] str = tagid.Split(':');
//html tags
//TODO: check for valid tags?
if (str.Length == 1)
{
if (attributes.IsRunAtServer() && (0 == string.Compare("form", tagid)))
{
return(new ServerFormParsingObject(location.PlainText, tagid, this));
}
return(new HtmlParsingObject(location.PlainText, tagid, this));
}
//fall through to server tags
if (str.Length != 2)
{
throw new ParseException(location, "Server tag name is not of form prefix:name");
}
Type tagType = WebFormReferenceManager.GetObjectType(str[0], str[1]);
if (tagType == null)
{
throw new ParseException(location, "The tag " + tagid + "has not been registered");
}
return(new ServerObjectParsingObject(tagType, attributes.GetDictionary(null), tagid, this));
}