gwynne Sun Jul 29 09:46:39 2007 UTC
Added files: (Branch: GWYNNE_PLAYS_HERE)
/phd/formats phpnetchunkedreader.php
Modified files:
/phd/formats xhtml.php
/phd/include PhDReader.class.php
Log:
Commit bjori's latest onto a separate branch. The branch was created so that
I could mess around with some of my ideas without interfering with the
mainstream development until we'd had a chance to discuss and approve them
concurrently.
http://cvs.php.net/viewvc.cgi/phd/formats/xhtml.php?r1=1.7&r2=1.7.2.1&diff_format=u
Index: phd/formats/xhtml.php
diff -u phd/formats/xhtml.php:1.7 phd/formats/xhtml.php:1.7.2.1
--- phd/formats/xhtml.php:1.7 Sat Jul 28 23:58:06 2007
+++ phd/formats/xhtml.php Sun Jul 29 09:46:39 2007
@@ -1,6 +1,6 @@
<?php
-/* $Id: xhtml.php,v 1.7 2007/07/28 23:58:06 gwynne Exp $
+/* $Id: xhtml.php,v 1.7.2.1 2007/07/29 09:46:39 gwynne Exp $
+-------------------------------------------------------------------------+
| Copyright(c) 2007 |
| Authors: |
@@ -49,16 +49,25 @@
'orderedlist' => 'ol',
'para' => 'p',
'parameter' => 'span',
+ 'partintro' => 'div',
'productname' => 'span',
'propname' => 'span',
'property' => 'span',
'proptype' => 'span',
+ 'section' => 'div',
'simplelist' => 'ul',
'simpara' => 'p',
- 'title' => 'h1',
+ 'title' => array(
+ /* DEFAULT */ 'h1',
+ 'refsect1' => 'h3',
+ 'example' => 'h4',
+ ),
'year' => 'span',
);
-
+ protected $CURRENT_FUNCTION_ID = "";
+ protected $CURRENT_REFERENCE_ID = "";
+ protected $functionList = array();
+
public function __construct( $file, $encoding = 'utf-8', $options = NULL )
{
parent::__construct( $file, $encoding, $options );
}
@@ -75,16 +84,29 @@
public function format_refentry( $open ) {
if ( $open ) {
- return '<div>';
+ $this->CURRENT_FUNCTION_ID = $id = $this->getID();
+
+ return sprintf( '<div id="%s" class="refentry">', $id );
}
+ $this->CURRENT_FUNCTION_ID = "";
+ return "</div>";
+ }
+ public function format_reference( $open ) {
+ if ( $open ) {
+ $this->CURRENT_REFERENCE_ID = $id = $this->getID();
+
+ return sprintf( '<div id="%s" class="reference">', $id
);
- echo "</div>";
- if ( $this->hasAttributes && $this->moveToAttributeNs( "id",
"http://www.w3.org/XML/1998/namespace" ) ) {
- $id = $this->value;
}
- $content = ob_get_contents();
- ob_clean();
- file_put_contents( "cache/$id.html", $content );
+ $content = "</div>";
+ $content .= '<ul class="funclist">';
+ foreach( $this->functionList as $func => $desc ) {
+ $content .= sprintf( '<li><a href="function.%1$s.html"
class="refentry">%1$s</a></li>', $func );
+ }
+ $content .= "</ul>\n";
+ $this->CURRENT_REFERENCE_ID = "";
+ $this->functionList = array();
+ return $content;
}
@@ -141,8 +163,26 @@
return $content;
}
+ public function format_refnamediv( $open ) {
+ $root = $this->name;
+
+ while ( $this->readNode( $root ) ) {
+ $name = $this->name;
+ switch( $name ) {
+ case "refname":
+ $refname = $this->readContent( $name );
+ break;
+ case "refpurpose":
+ $refpurpose = $this->readContent( $name );
+ break;
+ }
+ }
+
+ $this->functionList[ $refname ] = $refpurpose;
+ return sprintf( '<div class="refnamediv"><span
class="refname">%s</span><span class="refpurpose">%s</span></div>', $refname,
$refpurpose );
+ }
- protected function transformFromMap( $open, $name ) {
+ protected function transormFromMap($open, $tag, $name) {
$tag = $this->map[ $name ];
if($open) {
http://cvs.php.net/viewvc.cgi/phd/include/PhDReader.class.php?r1=1.6&r2=1.6.2.1&diff_format=u
Index: phd/include/PhDReader.class.php
diff -u phd/include/PhDReader.class.php:1.6
phd/include/PhDReader.class.php:1.6.2.1
--- phd/include/PhDReader.class.php:1.6 Sat Jul 28 23:58:06 2007
+++ phd/include/PhDReader.class.php Sun Jul 29 09:46:39 2007
@@ -1,6 +1,6 @@
<?php
-/* $Id: PhDReader.class.php,v 1.6 2007/07/28 23:58:06 gwynne Exp $
+/* $Id: PhDReader.class.php,v 1.6.2.1 2007/07/29 09:46:39 gwynne Exp $
+-------------------------------------------------------------------------+
| Copyright(c) 2007 |
| Authors: |
@@ -18,8 +18,12 @@
*/
abstract class PhDReader extends XMLReader {
+ const XMLNS_XML = "http://www.w3.org/XML/1998/namespace";
+ const XMLNS_XLINK = "http://www.w3.org/1999/xlinK";
+ const XMLNS_PHD = "http://www.php.net/ns/phd";
protected $map = array();
+ protected $STACK = array();
public function __construct( $file, $encoding = "utf-8", $options =
NULL ) {
@@ -42,15 +46,23 @@
public function seek( $id ) {
while( parent::read() ) {
- if ( $this->nodeType == XMLREADER::ELEMENT &&
$this->hasAttributes &&
- $this->moveToAttributeNs( "id",
"http://www.w3.org/XML/1998/namespace" ) && $this->value == $id ) {
+ if ( $this->nodeType === XMLREADER::ELEMENT &&
$this->hasAttributes &&
+ $this->moveToAttributeNs( "id", self::XMLNS_XML
) && $this->value === $id ) {
return $this->moveToElement();
}
}
return FALSE;
}
-
+ public function getID() {
+ if ( $this->hasAttributes && $this->moveToAttributeNs("id",
self::XMLNS_XML) ) {
+ $id = $this->value;
+ $this->moveToElement();
+ return $id;
+ }
+ return "";
+ }
+
/* Go to the next useful node in the file. */
public function nextNode() {
@@ -116,7 +128,19 @@
return "";
}
+ public function notXPath( $tag ) {
+ $depth = $this->depth;
+ do {
+ if ( isset( $tag[ $this->STACK[ --$depth ] ] ) ) {
+ $tag = $tag[ $this->STACK[ $depth ] ];
+ } else {
+ $tag = $tag[0];
+ }
+ } while ( is_array( $tag ) );
+ return $tag;
+ }
+
/* Perform a transformation. */
public function transform() {
@@ -126,11 +150,21 @@
switch( $type ) {
case XMLReader::ELEMENT:
+ $this->STACK[ $this->depth ] = $name;
+
case XMLReader::END_ELEMENT:
- if( isset( $this->map[ $name ] ) ) {
- return $this->transformFromMap( $type ==
XMLReader::ELEMENT, $name );
- }
- return call_user_func( array( $this, "format_${name}"
), $type == XMLReader::ELEMENT );
+ $funcname = "format_$name";
+ if ( isset( $this->map[ $name ] ) ) {
+ $tag = $this->map[ $name ];
+ if ( is_array( $tag ) ) {
+ $tag = $this->notXPath( $tag );
+ }
+ if ( strncmp( $tag, "format_", 7 ) ) {
+ return $this->transormFromMap( $type ==
XMLReader::ELEMENT, $tag, $name );
+ }
+ $funcname = $tag;
+ }
+ return call_user_func( array( $this, $funcname ),
$type == XMLReader::ELEMENT );
break;
case XMLReader::TEXT:
http://cvs.php.net/viewvc.cgi/phd/formats/phpnetchunkedreader.php?view=markup&rev=1.1
Index: phd/formats/phpnetchunkedreader.php
+++ phd/formats/phpnetchunkedreader.php