Validates the attributes of a token, mutating it as necessary.
19 {
20 $definition =
$config->getHTMLDefinition();
21 $e =&
$context->get(
'ErrorCollector',
true);
22
23
27 $context->register(
'IDAccumulator', $id_accumulator);
28 }
29
30
31 $current_token =&
$context->get(
'CurrentToken',
true);
32 if (!$current_token) {
34 }
35
38 ) {
39 return;
40 }
41
42
43
44 $d_defs = $definition->info_global_attr;
45
46
48
49
50
51 foreach ($definition->info_attr_transform_pre as $transform) {
53 if ($e) {
54 if ($attr != $o) {
55 $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
56 }
57 }
58 }
59
60
61
62 foreach ($definition->info[
$token->name]->attr_transform_pre as $transform) {
64 if ($e) {
65 if ($attr != $o) {
66 $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
67 }
68 }
69 }
70
71
72
73
74 $defs = $definition->info[
$token->name]->attr;
75
76 $attr_key = false;
77 $context->register(
'CurrentAttr', $attr_key);
78
79
80
81 foreach ($attr as $attr_key => $value) {
82
83
84 if (isset($defs[$attr_key])) {
85
86 if ($defs[$attr_key] === false) {
87
88
89
90
91
93 } else {
94
95 $result = $defs[$attr_key]->validate(
96 $value,
99 );
100 }
101 } elseif (isset($d_defs[$attr_key])) {
102
103
104 $result = $d_defs[$attr_key]->validate(
105 $value,
108 );
109 } else {
110
112 }
113
114
116
117
118 if ($e) {
119 $e->send(E_ERROR, 'AttrValidator: Attribute removed');
120 }
121
122
123 unset($attr[$attr_key]);
124 } elseif (is_string(
$result)) {
125
126
127
128
129
131 } else {
132
133 }
134
135
136
137
138
139
140 }
141
143
144
145
146
147 foreach ($definition->info_attr_transform_post as $transform) {
149 if ($e) {
150 if ($attr != $o) {
151 $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
152 }
153 }
154 }
155
156
157 foreach ($definition->info[
$token->name]->attr_transform_post as $transform) {
159 if ($e) {
160 if ($attr != $o) {
161 $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
162 }
163 }
164 }
165
167
168
169 if (!$current_token) {
171 }
172
173 }
static build($config, $context)
Builds an IDAccumulator, also initializing the default blacklist.
Concrete empty token class.
Concrete start token class.