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 <[email protected]>:
> 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 <[email protected]>
> 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: [email protected]
>
>
> 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>[email protected]</email>
> - <active>yes</active>
> - </lead>
> - <lead>
> <name>Moacir de Oliveira</name>
> <user>moacir</user>
> <email>[email protected]</email>
> <active>yes</active>
> </lead>
> <developer>
> + <name>Christian Weiske</name>
> + <user>cweiske</user>
> + <email>[email protected]</email>
> + <active>yes</active>
> + </developer>
> + <developer>
> <name>Paul M Jones</name>
> <user>pmjones</user>
> <email>[email protected]</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