Added the Search API Synonym module to deal specifically with licence and license...
[yaffs-website] / vendor / ezyang / htmlpurifier / library / HTMLPurifier / ConfigSchema / ValidatorAtom.php
1 <?php
2
3 /**
4  * Fluent interface for validating the contents of member variables.
5  * This should be immutable. See HTMLPurifier_ConfigSchema_Validator for
6  * use-cases. We name this an 'atom' because it's ONLY for validations that
7  * are independent and usually scalar.
8  */
9 class HTMLPurifier_ConfigSchema_ValidatorAtom
10 {
11     /**
12      * @type string
13      */
14     protected $context;
15
16     /**
17      * @type object
18      */
19     protected $obj;
20
21     /**
22      * @type string
23      */
24     protected $member;
25
26     /**
27      * @type mixed
28      */
29     protected $contents;
30
31     public function __construct($context, $obj, $member)
32     {
33         $this->context = $context;
34         $this->obj = $obj;
35         $this->member = $member;
36         $this->contents =& $obj->$member;
37     }
38
39     /**
40      * @return HTMLPurifier_ConfigSchema_ValidatorAtom
41      */
42     public function assertIsString()
43     {
44         if (!is_string($this->contents)) {
45             $this->error('must be a string');
46         }
47         return $this;
48     }
49
50     /**
51      * @return HTMLPurifier_ConfigSchema_ValidatorAtom
52      */
53     public function assertIsBool()
54     {
55         if (!is_bool($this->contents)) {
56             $this->error('must be a boolean');
57         }
58         return $this;
59     }
60
61     /**
62      * @return HTMLPurifier_ConfigSchema_ValidatorAtom
63      */
64     public function assertIsArray()
65     {
66         if (!is_array($this->contents)) {
67             $this->error('must be an array');
68         }
69         return $this;
70     }
71
72     /**
73      * @return HTMLPurifier_ConfigSchema_ValidatorAtom
74      */
75     public function assertNotNull()
76     {
77         if ($this->contents === null) {
78             $this->error('must not be null');
79         }
80         return $this;
81     }
82
83     /**
84      * @return HTMLPurifier_ConfigSchema_ValidatorAtom
85      */
86     public function assertAlnum()
87     {
88         $this->assertIsString();
89         if (!ctype_alnum($this->contents)) {
90             $this->error('must be alphanumeric');
91         }
92         return $this;
93     }
94
95     /**
96      * @return HTMLPurifier_ConfigSchema_ValidatorAtom
97      */
98     public function assertNotEmpty()
99     {
100         if (empty($this->contents)) {
101             $this->error('must not be empty');
102         }
103         return $this;
104     }
105
106     /**
107      * @return HTMLPurifier_ConfigSchema_ValidatorAtom
108      */
109     public function assertIsLookup()
110     {
111         $this->assertIsArray();
112         foreach ($this->contents as $v) {
113             if ($v !== true) {
114                 $this->error('must be a lookup array');
115             }
116         }
117         return $this;
118     }
119
120     /**
121      * @param string $msg
122      * @throws HTMLPurifier_ConfigSchema_Exception
123      */
124     protected function error($msg)
125     {
126         throw new HTMLPurifier_ConfigSchema_Exception(ucfirst($this->member) . ' in ' . $this->context . ' ' . $msg);
127     }
128 }
129
130 // vim: et sw=4 sts=4