home *** CD-ROM | disk | FTP | other *** search
- <?php
- /**
- * $Id: PHPDocumentorTask.php 144 2007-02-05 15:19:00Z hans $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
- /**
- * Phing subclass of the phpDocumentor_setup class provided with PhpDocumentor to work around limitations in PhpDocumentor API.
- *
- * This class is necessary because phpDocumentor_setup does not expose a complete API for setting configuration options. Because
- * this class must directly modify some "private" GLOBAL(!) configuration variables, it is liable to break if the PhpDocumentor
- * internal implementation changes. Obviously this is far from ideal, but there's also no solution given the inflexibility of the
- * PhpDocumentor design.
- *
- * @author Hans Lellelid <hans@xmpl.org>@author hans
- * @version $Id$
- * @package phing.tasks.ext.phpdoc
- */
- class PhingPhpDocumentorSetup extends phpDocumentor_setup {
-
- /**
- * Constructs a new PhingPhpDocumentorSetup.
- *
- * @param string $configDir Directory in which to look for configuration files.
- */
- public function __construct($configdir = null) {
- global $_phpDocumentor_cvsphpfile_exts, $_phpDocumentor_setting;
-
- $this->setup = new Io();
- $this->render = new phpDocumentor_IntermediateParser("Default Title");
-
- $GLOBALS['_phpDocumentor_install_dir'] = $configdir;
- $this->parseIni();
-
- if (tokenizer_ext) {
- $this->parse = new phpDocumentorTParser();
- } else {
- $this->parse = new Parser();
- }
- }
-
- /**
- * Set whether to generate sourcecode for each file parsed.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param bool $b
- */
- public function setGenerateSourcecode($b) {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['sourcecode'] = (boolean) $b;
- }
-
- /**
- * Set an array of README/INSTALL/CHANGELOG file paths.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param array $files Absolute paths to files.
- */
- public function setRicFiles($files) {
- global $_phpDocumentor_RIC_files;
- $_phpDocumentor_RIC_files = $files;
- }
-
- /**
- * Set comma-separated list of tags to ignore.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param string $tags
- */
- public function setIgnoreTags($tags) {
- global $_phpDocumentor_setting;
- $ignoretags = explode(',', $tags);
- $ignoretags = array_map('trim', $ignoretags);
- $tags = array();
- foreach($ignoretags as $tag) {
- if (!in_array($tag,array('@global', '@access', '@package', '@ignore', '@name', '@param', '@return', '@staticvar', '@var')))
- $tags[] = $tag;
- }
- $_phpDocumentor_setting['ignoretags'] = $tags;
- }
-
- /**
- * Set whether to parse dirs as PEAR repos.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param bool $b
- */
- public function setPear($b) {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['pear'] = (boolean) $b;
- }
-
- /**
- * Set fullpath to directory to look in for examples.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param string $dir
- */
- public function setExamplesDir($dir) {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['examplesdir'] = $dir;
- }
-
- /**
- * Sets the default package name.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param string $name
- */
- public function setDefaultPackageName($name) {
- $GLOBALS['phpDocumentor_DefaultPackageName'] = trim($name);
- }
-
- /**
- * Sets the default category name.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param string $name
- */
- public function setDefaultCategoryName($name) {
- $GLOBALS['phpDocumentor_DefaultCategoryName'] = trim($name);
- }
-
- /**
- * Enables quiet mode.
- *
- * This method exists as a hack because the API exposed for this method in PhpDocumentor
- * doesn't work correctly.
- *
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- */
- public function setQuietMode() {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['quiet'] = true;
- parent::setQuietMode();
- }
-
- }