1<?php
2
3/**
4 * Converts HTMLPurifier_ConfigSchema_Interchange to our runtime
5 * representation used to perform checks on user configuration.
6 */
7class HTMLPurifier_ConfigSchema_Builder_ConfigSchema
8{
9
10    public function build($interchange) {
11        $schema = new HTMLPurifier_ConfigSchema();
12        foreach ($interchange->directives as $d) {
13            $schema->add(
14                $d->id->key,
15                $d->default,
16                $d->type,
17                $d->typeAllowsNull
18            );
19            if ($d->allowed !== null) {
20                $schema->addAllowedValues(
21                    $d->id->key,
22                    $d->allowed
23                );
24            }
25            foreach ($d->aliases as $alias) {
26                $schema->addAlias(
27                    $alias->key,
28                    $d->id->key
29                );
30            }
31            if ($d->valueAliases !== null) {
32                $schema->addValueAliases(
33                    $d->id->key,
34                    $d->valueAliases
35                );
36            }
37        }
38        $schema->postProcess();
39        return $schema;
40    }
41
42}
43
44// vim: et sw=4 sts=4
45