PHP Classes

File: tests/runnable/HTMLPurifier/HTMLPurifier/AttrTypes.php

Recommend this page to a friend!
  Classes of Nicola Covolo   OPBE   tests/runnable/HTMLPurifier/HTMLPurifier/AttrTypes.php   Download  
File: tests/runnable/HTMLPurifier/HTMLPurifier/AttrTypes.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: OPBE
Ogame probabilistic battle engine
Author: By
Last change:
Date: 10 years ago
Size: 3,522 bytes
 

Contents

Class file image Download
<?php

/**
 * Provides lookup array of attribute types to HTMLPurifier_AttrDef objects
 */
class HTMLPurifier_AttrTypes
{
   
/**
     * Lookup array of attribute string identifiers to concrete implementations
     */
   
protected $info = array();

   
/**
     * Constructs the info array, supplying default implementations for attribute
     * types.
     */
   
public function __construct() {
       
// XXX This is kind of poor, since we don't actually /clone/
        // instances; instead, we use the supplied make() attribute. So,
        // the underlying class must know how to deal with arguments.
        // With the old implementation of Enum, that ignored its
        // arguments when handling a make dispatch, the IAlign
        // definition wouldn't work.

        // pseudo-types, must be instantiated via shorthand
       
$this->info['Enum'] = new HTMLPurifier_AttrDef_Enum();
       
$this->info['Bool'] = new HTMLPurifier_AttrDef_HTML_Bool();

       
$this->info['CDATA'] = new HTMLPurifier_AttrDef_Text();
       
$this->info['ID'] = new HTMLPurifier_AttrDef_HTML_ID();
       
$this->info['Length'] = new HTMLPurifier_AttrDef_HTML_Length();
       
$this->info['MultiLength'] = new HTMLPurifier_AttrDef_HTML_MultiLength();
       
$this->info['NMTOKENS'] = new HTMLPurifier_AttrDef_HTML_Nmtokens();
       
$this->info['Pixels'] = new HTMLPurifier_AttrDef_HTML_Pixels();
       
$this->info['Text'] = new HTMLPurifier_AttrDef_Text();
       
$this->info['URI'] = new HTMLPurifier_AttrDef_URI();
       
$this->info['LanguageCode'] = new HTMLPurifier_AttrDef_Lang();
       
$this->info['Color'] = new HTMLPurifier_AttrDef_HTML_Color();
       
$this->info['IAlign'] = self::makeEnum('top,middle,bottom,left,right');
       
$this->info['LAlign'] = self::makeEnum('top,bottom,left,right');
       
$this->info['FrameTarget'] = new HTMLPurifier_AttrDef_HTML_FrameTarget();

       
// unimplemented aliases
       
$this->info['ContentType'] = new HTMLPurifier_AttrDef_Text();
       
$this->info['ContentTypes'] = new HTMLPurifier_AttrDef_Text();
       
$this->info['Charsets'] = new HTMLPurifier_AttrDef_Text();
       
$this->info['Character'] = new HTMLPurifier_AttrDef_Text();

       
// "proprietary" types
       
$this->info['Class'] = new HTMLPurifier_AttrDef_HTML_Class();

       
// number is really a positive integer (one or more digits)
        // FIXME: ^^ not always, see start and value of list items
       
$this->info['Number'] = new HTMLPurifier_AttrDef_Integer(false, false, true);
    }

    private static function
makeEnum($in) {
        return new
HTMLPurifier_AttrDef_Clone(new HTMLPurifier_AttrDef_Enum(explode(',', $in)));
    }

   
/**
     * Retrieves a type
     * @param $type String type name
     * @return Object AttrDef for type
     */
   
public function get($type) {

       
// determine if there is any extra info tacked on
       
if (strpos($type, '#') !== false) list($type, $string) = explode('#', $type, 2);
        else
$string = '';

        if (!isset(
$this->info[$type])) {
           
trigger_error('Cannot retrieve undefined attribute type ' . $type, E_USER_ERROR);
            return;
        }

        return
$this->info[$type]->make($string);

    }

   
/**
     * Sets a new implementation for a type
     * @param $type String type name
     * @param $impl Object AttrDef for type
     */
   
public function set($type, $impl) {
       
$this->info[$type] = $impl;
    }
}

// vim: et sw=4 sts=4