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

Reply via email to