You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections;
 | |
| using System.Collections.Specialized;
 | |
| using System.Xml;
 | |
| using Commons.Xml;
 | |
| 
 | |
| namespace Commons.Xml.Nvdl
 | |
| {
 | |
| 	public class NvdlBuiltInValidationProvider : NvdlValidationProvider
 | |
| 	{
 | |
| 		public NvdlBuiltInValidationProvider ()
 | |
| 		{
 | |
| 		}
 | |
| 
 | |
| 		public override NvdlValidatorGenerator CreateGenerator (
 | |
| 			XmlReader reader, NvdlConfig config)
 | |
| 		{
 | |
| 			reader.MoveToContent ();
 | |
| 			if (reader.NodeType != XmlNodeType.Element ||
 | |
| 				reader.NamespaceURI != Nvdl.BuiltInValidationNamespace)
 | |
| 				return null;
 | |
| 			return new NvdlBuiltInValidatorGenerator (reader.LocalName == "allow");
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	internal class NvdlBuiltInValidatorGenerator : NvdlValidatorGenerator
 | |
| 	{
 | |
| 		bool allow;
 | |
| 
 | |
| 		public NvdlBuiltInValidatorGenerator (bool allow)
 | |
| 		{
 | |
| 			this.allow = allow;
 | |
| 		}
 | |
| 
 | |
| 		public override XmlReader CreateValidator (XmlReader reader, XmlResolver resolver)
 | |
| 		{
 | |
| 			return new NvdlBuiltInValidationReader (reader, allow);
 | |
| 		}
 | |
| 
 | |
| 		public override bool AddOption (string name, string arg)
 | |
| 		{
 | |
| 			return false;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	internal class NvdlBuiltInValidationReader : XmlDefaultReader
 | |
| 	{
 | |
| 		bool allow;
 | |
| 
 | |
| 		public NvdlBuiltInValidationReader (XmlReader reader, bool allow)
 | |
| 			: base (reader)
 | |
| 		{
 | |
| 			this.allow = allow;
 | |
| 		}
 | |
| 
 | |
| 		public override bool Read ()
 | |
| 		{
 | |
| 			if (!Reader.Read ())
 | |
| 				return false;
 | |
| 			if (!allow)
 | |
| 				throw new NvdlValidationException (String.Format ("The NVDL script does not allow an element whose namespace is '{0}'", Reader.NamespaceURI), Reader as IXmlLineInfo);
 | |
| 			return true;
 | |
| 		}
 | |
| 	}
 | |
| }
 |