1: <?php
 2: 
 3: /**
 4:  * Generic schema interchange format that can be converted to a runtime
 5:  * representation (HTMLPurifier_ConfigSchema) or HTML documentation. Members
 6:  * are completely validated.
 7:  */
 8: class HTMLPurifier_ConfigSchema_Interchange
 9: {
10: 
11:     /**
12:      * Name of the application this schema is describing.
13:      * @type string
14:      */
15:     public $name;
16: 
17:     /**
18:      * Array of Directive ID => array(directive info)
19:      * @type HTMLPurifier_ConfigSchema_Interchange_Directive[]
20:      */
21:     public $directives = array();
22: 
23:     /**
24:      * Adds a directive array to $directives
25:      * @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive
26:      * @throws HTMLPurifier_ConfigSchema_Exception
27:      */
28:     public function addDirective($directive)
29:     {
30:         if (isset($this->directives[$i = $directive->id->toString()])) {
31:             throw new HTMLPurifier_ConfigSchema_Exception("Cannot redefine directive '$i'");
32:         }
33:         $this->directives[$i] = $directive;
34:     }
35: 
36:     /**
37:      * Convenience function to perform standard validation. Throws exception
38:      * on failed validation.
39:      */
40:     public function validate()
41:     {
42:         $validator = new HTMLPurifier_ConfigSchema_Validator();
43:         return $validator->validate($this);
44:     }
45: }
46: 
47: // vim: et sw=4 sts=4
48: