1<?php
2
3/**
4 * Object that provides entity lookup table from entity name to character
5 */
6class HTMLPurifier_EntityLookup
7{
8    /**
9     * Assoc array of entity name to character represented.
10     * @type array
11     */
12    public $table;
13
14    /**
15     * Sets up the entity lookup table from the serialized file contents.
16     * @param bool $file
17     * @note The serialized contents are versioned, but were generated
18     *       using the maintenance script generate_entity_file.php
19     * @warning This is not in constructor to help enforce the Singleton
20     */
21    public function setup($file = false)
22    {
23        if (!$file) {
24            $file = HTMLPURIFIER_PREFIX . '/HTMLPurifier/EntityLookup/entities.ser';
25        }
26        $this->table = unserialize(file_get_contents($file));
27    }
28
29    /**
30     * Retrieves sole instance of the object.
31     * @param bool|HTMLPurifier_EntityLookup $prototype Optional prototype of custom lookup table to overload with.
32     * @return HTMLPurifier_EntityLookup
33     */
34    public static function instance($prototype = false)
35    {
36        // no references, since PHP doesn't copy unless modified
37        static $instance = null;
38        if ($prototype) {
39            $instance = $prototype;
40        } elseif (!$instance) {
41            $instance = new HTMLPurifier_EntityLookup();
42            $instance->setup();
43        }
44        return $instance;
45    }
46}
47
48// vim: et sw=4 sts=4
49