Great news! Some thoughts on improvement: I think it would be better to have print-version-for attribute optional, so if it's absent phd would take current xml:id of current section i.e. its parent, because it will be frequently written as <sect1 xml:id="control.structures.alternative-syntax" ... > <?phpdoc print-version-for="control-structures.alternative-syntax"?> so it's effectively duplicates already written information. It would be also nicer if it was regular tag like <print-version/> and <print-version for="id"/>, if it possible, of course :) Secondly, won't it have namespace issues if those ids would coincide? It seems they don't strictly match xml:id attribute. That's all for now :) Again, great work!
2011/7/6 Hannes Magnusson <bj...@php.net>: > PhD has now support for <?phpdoc print-version-for="foobar"?> > > This means you can now print out the version information on any page, > such as namespace docs, language constructs or wherever. > See http://svn.php.net/viewvc?view=revision&revision=312947 for examples. > > Remember, the `foobar` entry needs to be available in some versions.xml file. > You can create a new versions.xml file if it doesn't already exists. > configure.php will aggregate all versions.xml under > en/<dir>/<dir>/versions.xml > > > -Hannes > > ---------- Forwarded message ---------- > From: Hannes Magnusson <bj...@php.net> > Date: Tue, Jul 5, 2011 at 20:54 > Subject: [DOC-CVS] svn: /phd/trunk/ package.xml > phpdotnet/phd/PI/PHPDOCHandler.php phpdotnet/phd/Package/PHP/XHTML.php > phpdotnet/phd/Render.php > To: doc-...@lists.php.net > > > bjori Tue, 05 Jul 2011 18:54:18 +0000 > > Revision: http://svn.php.net/viewvc?view=revision&revision=312946 > > Log: > Add support for <?phpdoc?> > Initially only supports <?phpdoc print-version-for="foobar"?> > where `foobar` is an item in the aggregated version.xml file. > print-version-for will go through the same mechanism as all > refpages to generate version information, and therefore > fallback to "may only be in svn" if no found. > > Changed paths: > U phd/trunk/package.xml > A phd/trunk/phpdotnet/phd/PI/PHPDOCHandler.php > U phd/trunk/phpdotnet/phd/Package/PHP/XHTML.php > U phd/trunk/phpdotnet/phd/Render.php > > Modified: phd/trunk/package.xml > =================================================================== > --- phd/trunk/package.xml 2011-07-05 18:38:56 UTC (rev 312945) > +++ phd/trunk/package.xml 2011-07-05 18:54:18 UTC (rev 312946) > @@ -24,18 +24,18 @@ > <active>yes</active> > </lead> > <lead> > - <name>Christian Weiske</name> > - <user>cweiske</user> > - <email>cwei...@php.net</email> > - <active>yes</active> > - </lead> > - <lead> > <name>Moacir de Oliveira</name> > <user>moacir</user> > <email>moa...@php.net</email> > <active>yes</active> > </lead> > <developer> > + <name>Christian Weiske</name> > + <user>cweiske</user> > + <email>cwei...@php.net</email> > + <active>yes</active> > + </developer> > + <developer> > <name>Paul M Jones</name> > <user>pmjones</user> > <email>pmjo...@php.net</email> > @@ -71,7 +71,7 @@ > </stability> > <license uri="http://www.opensource.org/licenses/bsd-license.php">BSD > Style</license> > <notes> > - -notes > + - Added phpdoc PI handler to handle manually added version information. > </notes> > > <contents> > @@ -117,6 +117,7 @@ > </dir> > <dir name="PI"> > <file name="DBHTMLHandler.php" role="php"/> > + <file name="PHPDOCHandler.php" role="php"/> > </dir> > <file name="Autoloader.php" role="php"/> > <file name="Config.php" role="php"> > > Added: phd/trunk/phpdotnet/phd/PI/PHPDOCHandler.php > =================================================================== > --- phd/trunk/phpdotnet/phd/PI/PHPDOCHandler.php > (rev 0) > +++ phd/trunk/phpdotnet/phd/PI/PHPDOCHandler.php 2011-07-05 > 18:54:18 UTC (rev 312946) > @@ -0,0 +1,29 @@ > +<?php > +namespace phpdotnet\phd; > +/* $Id: PHPDOCHandler.php 293260 2010-01-08 10:41:19Z rquadling $ */ > + > +class PI_PHPDOCHandler extends PIHandler { > + > + public function __construct($format) { > + parent::__construct($format); > + } > + > + public function parse($target, $data) { > + $pattern = > "/(?<attr>[\w]+[\w\-\.]*)[\s]*=[\s]*\"(?<value>[^\"]*)\"/"; > + > + preg_match($pattern, $data, $matches); > + switch($matches["attr"]) { > + case "print-version-for": > + // FIXME: Figureout a way to detect the current > language (for unknownversion) > + return > $this->format->autogenVersionInfo($matches["value"], "en"); > + } > + } > + > +} > + > +/* > +* vim600: sw=4 ts=4 syntax=php et > +* vim<600: sw=4 ts=4 > +*/ > + > + > > Modified: phd/trunk/phpdotnet/phd/Package/PHP/XHTML.php > =================================================================== > --- phd/trunk/phpdotnet/phd/Package/PHP/XHTML.php 2011-07-05 > 18:38:56 UTC (rev 312945) > +++ phd/trunk/phpdotnet/phd/Package/PHP/XHTML.php 2011-07-05 > 18:54:18 UTC (rev 312946) > @@ -134,12 +134,18 @@ > "refname" => array(), > ); > > + protected $pihandlers = array( > + 'dbhtml' => 'PI_DBHTMLHandler', > + 'dbtimestamp' => 'PI_DBHTMLHandler', > + 'phpdoc' => 'PI_PHPDOCHandler', > + ); > + > public function __construct() { > parent::__construct(); > $this->myelementmap = > array_merge(parent::getDefaultElementMap(), > static::getDefaultElementMap()); > $this->mytextmap = array_merge(parent::getDefaultTextMap(), > static::getDefaultTextMap()); > $this->dchunk = array_merge(parent::getDefaultChunkInfo(), > static::getDefaultChunkInfo()); > - $this->extraIndexInformation(); > + $this->registerPIHandlers($this->pihandlers); > } > > public function getDefaultElementMap() { > @@ -154,14 +160,6 @@ > return $this->dchunk; > } > > - public function extraIndexInformation() { > - $this->addRefname("function.include", "include"); > - $this->addRefname("function.include-once", "include-once"); > - $this->addRefname("function.require", "require"); > - $this->addRefname("function.require-once", "require-once"); > - $this->addRefname("function.return", "return"); > - } > - > public function loadVersionAcronymInfo() { > $this->versions = > self::generateVersionInfo(Config::phpweb_version_filename()); > $this->acronyms = > self::generateAcronymInfo(Config::phpweb_acronym_filename()); > @@ -234,23 +232,27 @@ > return $acronyms; > } > > + public function autogenVersionInfo($refnames, $lang) { > + $verinfo = null; > + foreach((array)$refnames as $refname) { > + $verinfo = $this->versionInfo($refname); > + > + if ($verinfo) { > + break; > + } > + } > + if (!$verinfo) { > + $verinfo = $this->autogen("unknownversion", $lang); > + } > + > + $retval = '<p class="verinfo">(' .(htmlspecialchars($verinfo, > ENT_QUOTES, "UTF-8")). ')</p>'; > + return $retval; > + } > public function format_refpurpose($open, $tag, $attrs, $props) { > if ($open) { > $retval = ""; > if ($this->cchunk["verinfo"]) { > - $verinfo = ""; > - foreach((array)$this->cchunk["refname"] as $refname) { > - $verinfo = $this->versionInfo($refname); > - > - if ($verinfo) { > - break; > - } > - } > - if (!$verinfo) { > - $verinfo = $this->autogen("unknownversion", > $props["lang"]); > - } > - > - $retval = '<p class="verinfo">(' > .(htmlspecialchars($verinfo, ENT_QUOTES, "UTF-8")). ')</p>'; > + $retval = > $this->autogenVersionInfo($this->cchunk["refname"], $props["lang"]); > } > $refnames = implode('</span> -- <span class="refname">', > $this->cchunk["refname"]); > > > Modified: phd/trunk/phpdotnet/phd/Render.php > =================================================================== > --- phd/trunk/phpdotnet/phd/Render.php 2011-07-05 18:38:56 UTC (rev 312945) > +++ phd/trunk/phpdotnet/phd/Render.php 2011-07-05 18:54:18 UTC (rev 312946) > @@ -173,7 +173,10 @@ > $target = $r->name; > $data = $r->value; > foreach ($this as $format) { > - $format->parsePI($target, $data); > + $retval = $format->parsePI($target, $data); > + if ($retval) { > + $format->appendData($retval); > + } > } > break; > } > > > -- > PHP Documentation Commits Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- Regards, Shein Alexey