File indexing completed on 2024-12-22 05:36:51

0001 <?php
0002 /**
0003  * Zend Framework
0004  *
0005  * LICENSE
0006  *
0007  * This source file is subject to the new BSD license that is bundled
0008  * with this package in the file LICENSE.txt.
0009  * It is also available through the world-wide-web at this URL:
0010  * http://framework.zend.com/license/new-bsd
0011  * If you did not receive a copy of the license and are unable to
0012  * obtain it through the world-wide-web, please send an email
0013  * to license@zend.com so we can send you a copy immediately.
0014  *
0015  * @category   Zend
0016  * @package    Zend_Markup
0017  * @subpackage Parser
0018  * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0019  * @license    http://framework.zend.com/license/new-bsd     New BSD License
0020  * @version    $Id$
0021  */
0022 
0023 /**
0024  * @see Zend_Markup_TokenList
0025  */
0026 // require_once 'Zend/Markup/TokenList.php';
0027 
0028 /**
0029  * @category   Zend
0030  * @package    Zend_Markup
0031  * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0032  * @license    http://framework.zend.com/license/new-bsd     New BSD License
0033  */
0034 class Zend_Markup_Token
0035 {
0036     const TYPE_NONE    = 'none';
0037     const TYPE_TAG     = 'tag';
0038 
0039     /**
0040      * Children of this token
0041      *
0042      * @var Zend_Markup_TokenList
0043      */
0044     protected $_children;
0045 
0046     /**
0047      * The complete tag
0048      *
0049      * @var string
0050      */
0051     protected $_tag;
0052 
0053     /**
0054      * The tag's type
0055      *
0056      * @var string
0057      */
0058     protected $_type;
0059 
0060     /**
0061      * Tag name
0062      *
0063      * @var string
0064      */
0065     protected $_name = '';
0066 
0067     /**
0068      * Tag attributes
0069      *
0070      * @var array
0071      */
0072     protected $_attributes = array();
0073 
0074     /**
0075      * The used tag stopper (empty when none is found)
0076      *
0077      * @var string
0078      */
0079     protected $_stopper = '';
0080 
0081     /**
0082      * The parent token
0083      *
0084      * @var Zend_Markup_Token
0085      */
0086     protected $_parent;
0087 
0088 
0089     /**
0090      * Construct the token
0091      *
0092      * @param  string $tag
0093      * @param  string $type
0094      * @param  string $name
0095      * @param  array $attributes
0096      * @param  Zend_Markup_Token $parent
0097      * @return void
0098      */
0099     public function __construct(
0100         $tag,
0101         $type,
0102         $name = '',
0103         array $attributes = array(),
0104         Zend_Markup_Token $parent = null
0105     ) {
0106         $this->_tag        = $tag;
0107         $this->_type       = $type;
0108         $this->_name       = $name;
0109         $this->_attributes = $attributes;
0110         $this->_parent     = $parent;
0111     }
0112 
0113     // accessors
0114 
0115     /**
0116      * Set the stopper
0117      *
0118      * @param string $stopper
0119      * @return Zend_Markup_Token
0120      */
0121     public function setStopper($stopper)
0122     {
0123         $this->_stopper = $stopper;
0124 
0125         return $this;
0126     }
0127 
0128     /**
0129      * Get the stopper
0130      *
0131      * @return string
0132      */
0133     public function getStopper()
0134     {
0135         return $this->_stopper;
0136     }
0137 
0138     /**
0139      * Get the token's name
0140      *
0141      * @return string
0142      */
0143     public function getName()
0144     {
0145         return $this->_name;
0146     }
0147 
0148     /**
0149      * Get the token's type
0150      *
0151      * @return string
0152      */
0153     public function getType()
0154     {
0155         return $this->_type;
0156     }
0157 
0158     /**
0159      * Get the complete tag
0160      *
0161      * @return string
0162      */
0163     public function getTag()
0164     {
0165         return $this->_tag;
0166     }
0167 
0168     /**
0169      * Get an attribute
0170      *
0171      * @param string $name
0172      *
0173      * @return string
0174      */
0175     public function getAttribute($name)
0176     {
0177         return isset($this->_attributes[$name]) ? $this->_attributes[$name] : null;
0178     }
0179 
0180     /**
0181      * Check if the token has an attribute
0182      *
0183      * @param string $name
0184      *
0185      * @return bool
0186      */
0187     public function hasAttribute($name)
0188     {
0189         return isset($this->_attributes[$name]);
0190     }
0191 
0192     /**
0193      * Get all the attributes
0194      *
0195      * @return array
0196      */
0197     public function getAttributes()
0198     {
0199         return $this->_attributes;
0200     }
0201 
0202     /**
0203      * Add an attribute
0204      *
0205      * @return Zend_Markup_Token
0206      */
0207     public function addAttribute($name, $value)
0208     {
0209         $this->_attributes[$name] = $value;
0210 
0211         return $this;
0212     }
0213 
0214     /**
0215      * Check if an attribute is empty
0216      *
0217      * @param string $name
0218      *
0219      * @return bool
0220      */
0221     public function attributeIsEmpty($name)
0222     {
0223         return empty($this->_attributes[$name]);
0224     }
0225 
0226     // functions for child/parent tokens
0227 
0228     /**
0229      * Add a child token
0230      *
0231      * @return void
0232      */
0233     public function addChild(Zend_Markup_Token $child)
0234     {
0235         $this->getChildren()->addChild($child);
0236     }
0237 
0238     /**
0239      * Set the children token list
0240      *
0241      * @param  Zend_Markup_TokenList $children
0242      * @return Zend_Markup_Token
0243      */
0244     public function setChildren(Zend_Markup_TokenList $children)
0245     {
0246         $this->_children = $children;
0247         return $this;
0248     }
0249 
0250     /**
0251      * Get the children for this token
0252      *
0253      * @return Zend_Markup_TokenList
0254      */
0255     public function getChildren()
0256     {
0257         if (null === $this->_children) {
0258             $this->setChildren(new Zend_Markup_TokenList());
0259         }
0260         return $this->_children;
0261     }
0262 
0263     /**
0264      * Does this token have any children
0265      *
0266      * @return bool
0267      */
0268     public function hasChildren()
0269     {
0270         return !empty($this->_children);
0271     }
0272 
0273     /**
0274      * Get the parent token (if any)
0275      *
0276      * @return Zend_Markup_Token
0277      */
0278     public function getParent()
0279     {
0280         return $this->_parent;
0281     }
0282 
0283     /**
0284      * Set a parent token
0285      *
0286      * @param  Zend_Markup_Token $parent
0287      * @return Zend_Markup_Token
0288      */
0289     public function setParent(Zend_Markup_Token $parent)
0290     {
0291         $this->_parent = $parent;
0292         return $this;
0293     }
0294 
0295     /**
0296      * Magic clone function
0297      *
0298      * @return void
0299      */
0300     public function __clone()
0301     {
0302         $this->_parent   = null;
0303         $this->_children = null;
0304         $this->_tag      = '';
0305     }
0306 }