Example #1
0
        public override void Visit(TagNode node)
        {
            if (!node.Attributes.IsRunAtServer())
            {
                return;
            }

            string id = node.Attributes ["id"] as string;

            if (id == null)
            {
                return;
            }

            if (Members.ContainsKey(id))
            {
                AddError(ErrorType.Error, node.Location, GettextCatalog.GetString("Tag ID must be unique within the document: '{0}'.", id));
                return;
            }

            string [] s      = node.TagName.Split(':');
            string    prefix = (s.Length == 1)? "" : s[0];
            string    name   = (s.Length == 1)? s[0] : s[1];

            if (s.Length > 2)
            {
                AddError(ErrorType.Error, node.Location, GettextCatalog.GetString("Malformed tag name: '{0}'.", node.TagName));
                return;
            }

            IType type = null;

            try
            {
                type = refMan.GetType(prefix, name, node.Attributes ["type"] as string);
            }
            catch (Exception e)
            {
                AddError(ErrorType.Error, node.Location, "Unknown parser error:" + e.ToString());
                return;
            }

            if (type == null)
            {
                AddError(ErrorType.Error, node.Location, GettextCatalog.GetString("The tag type '{0}{1}{2}' has not been registered.", prefix, string.IsNullOrEmpty(prefix)? string.Empty:":", name));
                return;
            }

            Members [id] = new CodeBehindMember(id, type, new TextLocation(node.Location.BeginLine, node.Location.BeginColumn));
        }
        void AddMember(XElement element)
        {
            string id = GetAttributeValueCI(element.Attributes, "id");

            if (IsRunatServer(element) && (id != string.Empty))
            {
                if (Members.ContainsKey(id))
                {
                    Errors.Add(new Error(
                                   ErrorType.Error,
                                   GettextCatalog.GetString("Tag ID must be unique within the document: '{0}'.", id),
                                   element.Region
                                   )
                               );
                }
                else
                {
                    string controlType = GetAttributeValueCI(element.Attributes, "type");
                    IType  type        = docRefMan.GetType(element.Name.Prefix, element.Name.Name, controlType);

                    if (type == null)
                    {
                        Errors.Add(
                            new Error(
                                ErrorType.Error,
                                GettextCatalog.GetString("The tag type '{0}{1}{2}' has not been registered.",
                                                         element.Name.Prefix,
                                                         element.Name.HasPrefix ? string.Empty : ":",
                                                         element.Name.Name),
                                element.Region
                                )
                            );
                    }
                    else
                    {
                        Members [id] = new CodeBehindMember(id, type, element.Region.Begin);
                    }
                }
            }
            foreach (XNode node in element.Nodes)
            {
                if (node is XElement)
                {
                    AddMember(node as XElement);
                }
            }
        }
        void AddMember(XElement element)
        {
            string id;

            if (element.IsRunatServer() && !string.IsNullOrEmpty(id = element.GetId()))
            {
                if (Members.ContainsKey(id))
                {
                    Errors.Add(new Error(
                                   ErrorType.Error,
                                   GettextCatalog.GetString("Tag ID must be unique within the document: '{0}'.", id),
                                   element.Region
                                   )
                               );
                }
                else
                {
                    string controlType = element.Attributes.GetValue(new XName("type"), true);
                    IType  type        = docRefMan.GetType(element.Name.Prefix, element.Name.Name, controlType);

                    if (type == null)
                    {
                        Errors.Add(
                            new Error(
                                ErrorType.Error,
                                GettextCatalog.GetString("The tag type '{0}{1}{2}' has not been registered.",
                                                         element.Name.Prefix,
                                                         element.Name.HasPrefix ? string.Empty : ":",
                                                         element.Name.Name),
                                element.Region
                                )
                            );
                    }
                    else
                    {
                        Members [id] = new CodeBehindMember(id, type, element.Region.Begin);
                    }
                }
            }
            foreach (XElement child in element.Nodes.OfType <XElement> ())
            {
                AddMember(child);
            }
        }
Example #4
0
		void AddMember (XElement element)
		{
			string id;
			if (element.IsRunatServer () && !string.IsNullOrEmpty (id = element.GetId ())) {
				
				if (Members.ContainsKey (id)) {
					Errors.Add (new Error (
						ErrorType.Error,
						GettextCatalog.GetString ("Tag ID must be unique within the document: '{0}'.", id),
						element.Region
					)
					);
				} else {
					string controlType = element.Attributes.GetValue (new XName ("type"), true);
					IType type = docRefMan.GetType (element.Name.Prefix, element.Name.Name, controlType);
	
					if (type == null) {
						Errors.Add (
							new Error (
								ErrorType.Error,
								GettextCatalog.GetString ("The tag type '{0}{1}{2}' has not been registered.", 
						                          element.Name.Prefix, 
						                          element.Name.HasPrefix ? string.Empty : ":", 
						                          element.Name.Name),
								element.Region
						)
						);
					} else
						Members [id] = new CodeBehindMember (id, type, element.Region.Begin);
				}

			}
			foreach (XNode node in element.Nodes) {
				if (node is XElement)
					AddMember (node as XElement);
			}
		}
		public override void Visit (TagNode node)
		{
			if (!node.Attributes.IsRunAtServer ())
				return;
			
			string id = node.Attributes ["id"] as string;
			
			if (id == null)
				return;
			
			if (Members.ContainsKey (id)) {
				AddError (ErrorType.Error, node.Location, GettextCatalog.GetString ("Tag ID must be unique within the document: '{0}'.", id));
				return;
			}
			
			string [] s = node.TagName.Split (':');
			string prefix = (s.Length == 1)? "" : s[0];
			string name = (s.Length == 1)? s[0] : s[1];
			if (s.Length > 2) {
				AddError (ErrorType.Error, node.Location, GettextCatalog.GetString ("Malformed tag name: '{0}'.", node.TagName));
				return;
			}
			
			IType type = null;
			try {
				type = refMan.GetType (prefix, name, node.Attributes ["type"] as string);
			} catch (Exception e) {
				AddError (ErrorType.Error, node.Location, "Unknown parser error:" + e.ToString ());
				return;
			}
			
			if (type == null) {
				AddError (ErrorType.Error, node.Location, GettextCatalog.GetString ("The tag type '{0}{1}{2}' has not been registered.", prefix, string.IsNullOrEmpty(prefix)? string.Empty:":", name));
				return;
			}
			
			Members [id] = new CodeBehindMember (id, type, new TextLocation (node.Location.BeginLine, node.Location.BeginColumn));
		}