diff options
Diffstat (limited to 'buildscripts/phing/classes/phing/system/util/Register.php')
-rwxr-xr-x | buildscripts/phing/classes/phing/system/util/Register.php | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/buildscripts/phing/classes/phing/system/util/Register.php b/buildscripts/phing/classes/phing/system/util/Register.php deleted file mode 100755 index 56ab0e45..00000000 --- a/buildscripts/phing/classes/phing/system/util/Register.php +++ /dev/null @@ -1,149 +0,0 @@ -<?php - -/** - * Static class to handle a slot-listening system. - * - * Unlike the slots/signals Qt model, this class manages something that is - * more like a simple hashtable, where each slot has only one value. For that - * reason "Registers" makes more sense, the reference being to CPU registers. - * - * This could be used for anything, but it's been built for a pretty specific phing - * need, and that is to allow access to dynamic values that are set by logic - * that is not represented in a build file. For exampe, we need a system for getting - * the current resource (file) that is being processed by a filterchain in a fileset. - * - * Each slot corresponds to only one read-only, dynamic-value RegisterSlot object. In - * a build.xml register slots are expressed using a syntax similar to variables: - * - * <replaceregexp> - * <regexp pattern="\n" replace="%{task.current_file}"/> - * </replaceregexp> - * - * The task/type must provide a supporting setter for the attribute: - * - * <code> - * function setListeningReplace(RegisterSlot $slot) { - * $this->replace = $slot; - * } - * - * // in main() - * if ($this->replace instanceof RegisterSlot) { - * $this->regexp->setReplace($this->replace->getValue()); - * } else { - * $this->regexp->setReplace($this->replace); - * } - * </code> - * - * @author Hans Lellelid <hans@xmpl.org> - * @version $Id$ - * @package phing.system.util - */ -class Register { - - /** Slots that have been registered */ - private static $slots = array(); - - /** - * Returns RegisterSlot for specified key. - * - * If not slot exists a new one is created for key. - * - * @param string $key - * @return RegisterSlot - */ - public static function getSlot($key) { - if (!isset(self::$slots[$key])) { - self::$slots[$key] = new RegisterSlot($key); - } - return self::$slots[$key]; - } -} - - -/** - * Represents a slot in the register. - * - * @package phing.system.util - */ -class RegisterSlot { - - /** The name of this slot. */ - private $key; - - /** The value for this slot. */ - private $value; - - /** - * Constructs a new RegisterSlot, setting the key to passed param. - * @param string $key - */ - public function __construct($key) { - $this->key = (string) $key; - } - - /** - * Sets the key / name for this slot. - * @param string $k - */ - public function setKey($k) { - $this->key = (string) $k; - } - - /** - * Gets the key / name for this slot. - * @return string - */ - public function getKey() { - return $this->key; - } - - /** - * Sets the value for this slot. - * @param mixed - */ - public function setValue($v) { - $this->value = $v; - } - - /** - * Returns the value at this slot. - * @return mixed - */ - public function getValue() { - return $this->value; - } - - /** - * Recursively implodes an array to a comma-separated string - * @param array $arr - * @return string - */ - private function implodeArray(array $arr) { - $values = array(); - - foreach ($arr as $value) { - if (is_array($value)) { - $values[] = $this->implodeArray($value); - } else { - $values[] = $value; - } - } - - return "{" . implode(",", $values) . "}"; - } - - /** - * Returns the value at this slot as a string value. - * @return string - */ - public function __toString() - { - if (is_array($this->value)) { - return $this->implodeArray($this->value); - } else { - return (string) $this->value; - } - } - -} - |