diff options
Diffstat (limited to 'buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc')
-rwxr-xr-x | buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc b/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc new file mode 100755 index 00000000..f0c78eb2 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc @@ -0,0 +1,110 @@ +<?php +/** + * a class for handling the publishing of data + * + * phpDocumentor :: automatic documentation generator + * + * PHP versions 4 and 5 + * + * Copyright (c) 2000-2007 Kellin, Joshua Eichorn + * + * LICENSE: + * + * This library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General + * Public License as published by the Free Software Foundation; + * either version 2.1 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * @category ToolsAndUtilities + * @package phpDocumentor + * @author Kellin <passionplay@hotmail.com> + * @author Joshua Eichorn <jeichorn@phpdoc.org> + * @copyright 2000-2007 Kellin, Joshua Eichorn + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @version CVS: $Id: Publisher.inc 244033 2007-10-11 03:30:34Z ashnazg $ + * @link http://www.phpdoc.org + * @link http://pear.php.net/PhpDocumentor + * @since 0.1 + * @todo CS cleanup - change package to PhpDocumentor + */ +/** + * a class for handling the publishing of data + * + * @category ToolsAndUtilities + * @package phpDocumentor + * @author Kellin <passionplay@hotmail.com> + * @author Joshua Eichorn <jeichorn@phpdoc.org> + * @copyright 2000-2007 Kellin, Joshua Eichorn + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @version Release: 1.4.3 + * @link http://www.phpdoc.org + * @link http://pear.php.net/PhpDocumentor + * @todo CS cleanup - change package to PhpDocumentor + */ +class Publisher +{ + /**#@+ + * @var array + */ + /** + * Array of references objects that have Subscribed to this publisher + */ + var $subscriber = array(); + + var $tokens = array(); + + var $pushEvent = array(); + var $popEvent = array(); + /**#@-*/ + + + /** + * Adds a subscriber to the {@link $subscriber} array(). + * if $event is '*', the publisher will use $object as the default event handler + * + * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants + * @param class &$object any class that has a HandleEvent() method like + * {@link phpDocumentor_IntermediateParser::HandleEvent()} + * or {@link Classes::HandleEvent()} + * + * @return void + * @todo CS Cleanup - there's no way I can get the &$object desc under 85 chars + */ + function subscribe($event, &$object) + { + $this->subscriber[$event] =& $object; + } + + /** + * Publish an event + * + * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants + * @param mixed $data anything the subscribed event handler is expecting + * + * @return void + */ + function publishEvent($event,$data) + { + + // see if there is a specific event handler + if (!empty($this->subscriber[$event])) { + $this->subscriber[$event]->HandleEvent($event, $data); + } else if (isset($this->subscriber['*']) + && is_object($this->subscriber['*'])) { + // check to see if a generic handler exists + + $this->subscriber['*']->HandleEvent($event, $data); + } + } +} +?> |