<?php // // +------------------------------------------------------------------------+ // | phpDocumentor | // +------------------------------------------------------------------------+ // | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver | // | Email jeichorn@phpdoc.org, cellog@phpdoc.org | // | Web http://www.phpdoc.org | // | Mirror http://phpdocu.sourceforge.net/ | // | PEAR http://pear.php.net/package-info.php?pacid=137 | // +------------------------------------------------------------------------+ // | This source file is subject to version 3.00 of the PHP License, | // | that is available at http://www.php.net/license/3_0.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +------------------------------------------------------------------------+ // /** * All abstract representations of html tags in DocBlocks are handled by the * classes in this file * * Before version 1.2, phpDocumentor simply passed html to converters, without * much thought, except the {@link adv_htmlentities()} function was provided * along with a list of allowed html. That list is no longer used, in favor * of these classes. * * The PDF Converter output looked wretched in version 1.1.0 because line breaks * in DocBlocks were honored. This meant that output often had just a few words * on every other line! To fix this problem, DocBlock descriptions are now * parsed using the {@link ParserDescParser}, and split into paragraphs. In * addition, html in DocBlocks are parsed into these objects to allow for easy * conversion in destination converters. This design also allows different * conversion for different templates within a converter, which separates * design from logic almost 100% * @package phpDocumentor * @subpackage DescHTML * @since 1.2 */ /** * Used for <<code>> in a description * @package phpDocumentor * @subpackage DescHTML */ class parserCode extends parserStringWithInlineTags { /** * @param Converter * @uses Converter::ProgramExample() */ function Convert(&$c) { if (!isset($this->value[0])) return ''; if (is_string($this->value[0]) && $this->value[0]{0} == "\n") { $this->value[0] = substr($this->value[0],1); } $linktags = array(); foreach($this->value as $val) { if (phpDocumentor_get_class($val) == 'parserlinkinlinetag' || phpDocumentor_get_class($val) == 'parsertutorialinlinetag') { $linktags[] = array($c->postProcess($val->Convert($c, false, false)), $val); } } $a = $c->ProgramExample(rtrim(ltrim(parent::Convert($c, false, false), "\n\r"))); foreach ($linktags as $tag) { $a = str_replace($tag[0], $tag[1]->Convert($c, false, false), $a); } return $a; // else return $c->PreserveWhiteSpace($this->getString(false)); } } /** * Used for <<pre>> in a description * @package phpDocumentor * @subpackage DescHTML */ class parserPre extends parserStringWithInlineTags { /** * @param Converter * @uses Converter::PreserveWhiteSpace() */ function Convert(&$c) { return $c->PreserveWhiteSpace(rtrim(ltrim(parent::Convert($c, false, false), "\n\r"))); } } /** * Used for <<b>> in a description * @package phpDocumentor * @subpackage DescHTML */ class parserB extends parserStringWithInlineTags { /** * @param Converter * @uses Converter::Bolden() */ function Convert(&$c) { return $c->Bolden(parent::Convert($c)); } } /** * Used for <<i>> in a description * @package phpDocumentor * @subpackage DescHTML */ class parserI extends parserStringWithInlineTags { /** * @param Converter * @uses Converter::Italicize() */ function Convert(&$c) { return $c->Italicize(parent::Convert($c)); } } /** * Used for <<var>> in a description * @package phpDocumentor * @subpackage DescHTML */ class parserDescVar extends parserStringWithInlineTags { /** * @param Converter * @uses Converter::Varize() */ function Convert(&$c) { return $c->Varize(parent::Convert($c)); } } /** * Used for <<samp>> in a description * @package phpDocumentor * @subpackage DescHTML */ class parserSamp extends parserStringWithInlineTags { /** * @param Converter * @uses Converter::Sampize() */ function Convert(&$c) { return $c->Sampize(parent::Convert($c)); } } /** * Used for <<kbd>> in a description * @package phpDocumentor * @subpackage DescHTML */ class parserKbd extends parserStringWithInlineTags { /** * @param Converter * @uses Converter::Kbdize() */ function Convert(&$c) { return $c->Kbdize(parent::Convert($c)); } } /** * Used for <<br>> in a description * @package phpDocumentor * @subpackage DescHTML */ class parserBr extends parserStringWithInlineTags { /** * @param Converter * @uses Converter::Br() */ function Convert(&$c) { return $c->Br($this->getString()); } } /** * Used for lists <<ol>> and <<ul>> * @package phpDocumentor * @subpackage DescHTML */ class parserList extends parserStringWithInlineTags { /** @var boolean */ var $numbered; /** @var integer */ var $items = 0; /** * @param integer */ function parserList($numbered) { $this->numbered = $numbered; } /** @param parserStringWithInlineTags */ function addItem($item) { $this->value[$this->items++] = $item; } /** @param parserList */ function addList($list) { $this->value[$this->items++] = $list; } /** * @uses Converter::ListItem() enclose each item of the list * @uses Converter::EncloseList() enclose the list * @param Converter */ function Convert(&$c) { $list = ''; foreach($this->value as $item) { $list .= $c->ListItem(trim($item->Convert($c))); } return $c->EncloseList($list,$this->numbered); } } ?>