void TagParsed(ILocation location, TagType tagtype, string tagid, TagAttributes attributes) { switch (tagtype) { case TagType.Close: if (openObject == null) { throw new ParseException(location, "There are more closing tags than opening tags"); } if (0 != string.Compare(openObject.TagID, tagid)) { throw new ParseException(location, "Closing tag " + tagid + " does not match opening tag " + openObject.TagID); } openObject = openObject.CloseObject(location.PlainText); break; case TagType.CodeRender: throw new NotImplementedException("Code render expressions have not yet been implemented: " + location.PlainText); //break; case TagType.CodeRenderExpression: throw new NotImplementedException("Code render expressions have not yet been implemented: " + location.PlainText); //break; case TagType.DataBinding: throw new NotImplementedException("Data binding expressions have not yet been implemented: " + location.PlainText); //break; case TagType.Directive: ProcessDirective(tagid, attributes); break; case TagType.Include: throw new NotImplementedException("Server-side includes have not yet been implemented: " + location.PlainText); //break; case TagType.ServerComment: throw new NotImplementedException("Server comments have not yet been implemented: " + location.PlainText); //break; case TagType.Tag: //TODO: don't do this for XHTML if ((string.Compare(tagid, "br", true) == 0) || (string.Compare(tagid, "hr", true) == 0)) { goto case TagType.SelfClosing; } openObject = openObject.CreateChildParsingObject(location, tagid, attributes); break; case TagType.SelfClosing: if (openObject == null) { throw new Exception("Root tag cannot be self-closing"); } openObject = openObject.CreateChildParsingObject(location, tagid, attributes); openObject = openObject.CloseObject(string.Empty); break; case TagType.Text: throw new NotImplementedException("Text tagtypes have not yet been implemented: " + location.PlainText); //break; } }
void TagParsed (ILocation location, TagType tagtype, string tagid, TagAttributes attributes) { switch (tagtype) { case TagType.Close: if (openObject == null) throw new ParseException (location, "There are more closing tags than opening tags"); if (0 != string.Compare (openObject.TagID, tagid)) throw new ParseException (location, "Closing tag " + tagid + " does not match opening tag " + openObject.TagID); openObject = openObject.CloseObject (location.PlainText); break; case TagType.CodeRender: throw new NotImplementedException ("Code render expressions have not yet been implemented: " + location.PlainText); //break; case TagType.CodeRenderExpression: throw new NotImplementedException ("Code render expressions have not yet been implemented: " + location.PlainText); //break; case TagType.DataBinding: throw new NotImplementedException("Data binding expressions have not yet been implemented: " + location.PlainText); //break; case TagType.Directive: ProcessDirective (tagid, attributes); break; case TagType.Include: throw new NotImplementedException ("Server-side includes have not yet been implemented: " + location.PlainText); //break; case TagType.ServerComment: throw new NotImplementedException ("Server comments have not yet been implemented: " + location.PlainText); //break; case TagType.Tag: //TODO: don't do this for XHTML if ((string.Compare (tagid, "br", true) == 0) || (string.Compare (tagid, "hr", true) == 0)) goto case TagType.SelfClosing; openObject = openObject.CreateChildParsingObject(location, tagid, attributes); break; case TagType.SelfClosing: if (openObject == null) throw new Exception ("Root tag cannot be self-closing"); openObject = openObject.CreateChildParsingObject(location, tagid, attributes); openObject = openObject.CloseObject(string.Empty); break; case TagType.Text: throw new NotImplementedException("Text tagtypes have not yet been implemented: " + location.PlainText); //break; } }