/// <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)); }
public override ParsingObject CreateChildParsingObject(ILocation location, string tagid, TagAttributes attributes) { switch (mode) { case ParseChildrenMode.DefaultProperty: //oops, we didn't need to tokenise this. innerText += location.PlainText; //how do we get end tag? throw new NotImplementedException("Inner default properties that look like tags have not been implemented yet."); case ParseChildrenMode.DefaultEncodedProperty: innerText += System.Web.HttpUtility.HtmlDecode(location.PlainText); //how do we get end tag? throw new NotImplementedException("Inner default properties that look like tags have not been implemented yet."); case ParseChildrenMode.Controls: //html tags if (tagid.IndexOf(':') == -1) { return(new HtmlParsingObject(location.PlainText, tagid, this)); } goto case ParseChildrenMode.DefaultCollectionProperty; case ParseChildrenMode.DefaultCollectionProperty: string[] str = tagid.Split(':'); 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)); case ParseChildrenMode.Properties: throw new NotImplementedException("Multiple child properties have not yet been implemented."); } throw new ParseException(location, "Unexpected state encountered: "); }