Commit:    1f32d792a7ada49f8414e77cab9c2c9aeb121369
Author:    Hannes Magnusson <bj...@mongodb.com>         Mon, 28 Oct 2013 
19:20:58 -0700
Parents:   7e132510ce44002e570ace79cd88df57c283cd09
Branches:  master

Link:       
http://git.php.net/?p=web/master.git;a=commitdiff;h=1f32d792a7ada49f8414e77cab9c2c9aeb121369

Log:
Kill rest stuff thats no longer used

Changed paths:
  D  include/Text/reST.php
  D  include/Text/reST/Formatter.php
  D  include/Text/reST/Formatter/html.php
  D  include/Text/reST/Parser.php
  D  scripts/rest_render

diff --git a/include/Text/reST.php b/include/Text/reST.php
deleted file mode 100644
index 6ad98b2..0000000
--- a/include/Text/reST.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-/**
- * The Text_reST:: class represents a parse node of a reStructuredText
- * document and provides an API for parsing reStructuredText documents.
- *
- * $Horde: framework/Text_reST/reST.php,v 1.12 2006/12/30 20:24:32 jan Exp $
- *
- * Copyright 2003-2007 Jason M. Felice <jfel...@cronosys.com>
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Jason M. Felice <jfel...@cronosys.com>
- * @package Text_reST
- */
-class Text_reST {
-
-    /**
-     * The parse node type.
-     *
-     * @access private
-     * @var string
-     */
-    var $_type;
-
-    /**
-     * An array of the parse node's children.
-     *
-     * @access private
-     * @var string
-     */
-    var $_children = array();
-
-    /**
-     * A hash of parse node properties.
-     *
-     * @access private
-     * @var array
-     */
-    var $_properties = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $type  This is the node type.  The default is 'Document'.
-     */
-    function Text_reST($type = 'Document')
-    {
-        $this->_type = $type;
-    }
-
-    /**
-     * Appends a child parse node to this parse node.
-     *
-     * @param string|Text_reST &$child  This is the string or object child
-     *                                  to append to this parse node.
-     */
-    function appendChild(&$child)
-    {
-        $n = count($this->_children);
-        if (is_string($child) && $n > 0 && is_string($this->_children[$n - 
1])) {
-            $this->_children[$n - 1] .= $child;
-        } elseif (is_string($child)) {
-            $this->_children[] = $child;
-        } else {
-            $this->_children[] = &$child;
-        }
-    }
-
-    /**
-     * Sets the value of a parse node property.
-     *
-     * @param string $name   The property's name.
-     * @param string $value  The property's value.
-     */
-    function setProperty($name, $value)
-    {
-        $this->_properties[$name] = $value;
-    }
-
-    /**
-     * Retrieves the value of a parse node property.
-     *
-     * @param string $name  The property's name.
-     *
-     * @return string  The property's value.
-     */
-    function getProperty($name)
-    {
-        if (!array_key_exists($name, $this->_properties)) {
-            return null;
-        }
-        return $this->_properties[$name];
-    }
-
-    /**
-     * Dumps this parse node and its children.
-     * This method is for debugging purposes.
-     *
-     * @param integer $level  This is the indent level of this parse node.
-     */
-    function dump($level = 0)
-    {
-        for ($i = 0; $i < $level; $i++) {
-            echo '  ';
-        }
-        echo $this->_type, '::';
-        ksort($this->_properties);
-        foreach ($this->_properties as $name => $value) {
-            echo ' ', $name, '="', preg_replace('/["\\\\]/', '\\$1', $value),
-                '"';
-        }
-        echo "\n";
-        foreach ($this->_children as $child) {
-            if (is_string($child)) {
-                for ($i = 0; $i < ($level + 1); $i++) {
-                    echo '  ';
-                }
-                echo '"', preg_replace('/["\\\\]/', '\\$1', $child), "\"\n";
-            } else {
-                $child->dump($level + 1);
-            }
-        }
-    }
-
-    /**
-     * Parses a reStructuredText document.
-     *
-     * @static
-     *
-     * @param string $text  This is the text of the document we want to parse.
-     *
-     * @return Text_reST  The parsed document or PEAR_Error on failure.
-     */
-    static function &parse($text)
-    {
-        require_once dirname(__FILE__) . '/reST/Parser.php';
-        $parser = new Text_reST_Parser();
-        return $parser->parse($text);
-    }
-
-}
diff --git a/include/Text/reST/Formatter.php b/include/Text/reST/Formatter.php
deleted file mode 100644
index 381f338..0000000
--- a/include/Text/reST/Formatter.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * The Text_reST_Formatter:: class is the framework for rendering
- * reStructuredText documents to different media (e.g. HTML).
- *
- * $Horde: framework/Text_reST/reST/Formatter.php,v 1.14 2006/12/30 20:24:32 
jan Exp $
- *
- * Copyright 2003-2007 Jason M. Felice <jfel...@cronosys.com>
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Jason M. Felice <jfel...@cronosys.com>
- * @package Text_reST
- */
-class Text_reST_Formatter {
-
-    /**
-     * Array of driver-specific parameters for formatting.
-     *
-     * @var array
-     */
-    var $_args;
-
-    /**
-     * Construct a new formatter.
-     *
-     * @access protected
-     *
-     * @param array $args  Arguments specific to this formatter.
-     */
-    function Text_reST_Formatter($args = array())
-    {
-        $this->_args = $args;
-    }
-
-    /**
-     * Construct a new formatter.
-     *
-     * @param string $driver  Name of the formatting driver to construct.
-     * @param array $args     An array of driver-specific parameters.
-     *
-     * @return Text_reST_Formatter  The formatter
-     */
-    static function &factory($driver, $args = array())
-    {
-        if (is_array($driver)) {
-            list($path, $driver) = $driver;
-        } else {
-            $path = dirname(__FILE__) . '/Formatter/';
-        }
-        $class = 'Text_reST_Formatter_' . $driver;
-        require_once $path . $driver . '.php';
-        $formatter = new $class($args);
-        return $formatter;
-    }
-
-    /**
-     * Render the document.
-     *
-     * @abstract
-     *
-     * @param Text_reST $document  The document we will render.
-     * @param string $charset      The output charset.
-     */
-    function format(&$document, $charset = null)
-    {
-    }
-
-}
diff --git a/include/Text/reST/Formatter/html.php 
b/include/Text/reST/Formatter/html.php
deleted file mode 100644
index 90b86e7..0000000
--- a/include/Text/reST/Formatter/html.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-require_once dirname(__FILE__) . '/../Formatter.php';
-
-/**
- * The Text_reST_Formatter_html:: class is the HTML formatter.
- *
- * $Horde: framework/Text_reST/reST/Formatter/html.php,v 1.13 2006/12/30 
20:24:32 jan Exp $
- *
- * Copyright 2003-2007 Jason M. Felice <jfel...@cronosys.com>
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Jason M. Felice <jfel...@cronosys.com>
- * @package Text_reST
- */
-class Text_reST_Formatter_html extends Text_reST_Formatter {
-
-    /**
-     * The current output charset.
-     *
-     * @var string
-     */
-    var $_charset = null;
-
-    function format(&$node, $charset = null)
-    {
-        if (!isset($charset)) {
-            $charset = $this->_charset;
-        }
-
-        if (is_string($node)) {
-            if (isset($charset)) {
-                return @htmlspecialchars($node, ENT_QUOTES, $charset);
-            } else {
-                return htmlspecialchars($node, ENT_QUOTES);
-            }
-        }
-
-        switch ($node->_type) {
-        case 'Document':
-            return $this->_children($node);
-
-        case 'Heading':
-            $level = $node->getProperty('level');
-            return '<h' . $level . '>' . $this->_children($node) . '</h' .
-                $level . '>';
-
-        case 'Link':
-            return '<a href="' .
-                (isset($charset) ?
-                 @htmlspecialchars($node->getProperty('href'), ENT_QUOTES, 
$charset) :
-                 htmlspecialchars($node->getProperty('href'), ENT_QUOTES)) .
-                '">' .
-                $this->_children($node) . '</a>';
-
-        case 'Literal-Block':
-            list($text) = $node->_children;
-            return '<pre>' . (isset($charset) ?
-                              @htmlspecialchars($text, ENT_QUOTES, $charset) :
-                              htmlspecialchars($text, ENT_QUOTES)) . '</pre>';
-
-        case 'Paragraph':
-            return "<p>" . $this->_children($node) . "</p>";
-
-        case 'Interpreted-Text':
-            switch ($node->getProperty('role')) {
-            case 'emphasis':
-                return '<em>' . $this->_children($node) . '</em>';
-
-            case 'literal':
-                return '<tt>' . $this->_children($node) . '</tt>';
-
-            case 'strong':
-                return '<strong>' . $this->_children($node) . '</strong>';
-
-            case 'superscript':
-                return '<sup>' . $this->_children($node) . '</sup>';
-
-            case 'subscript':
-                return '<sub>' . $this->_children($node) . '</sub>';
-
-            case 'title-reference':
-                return '<cite>' . $this->_children($node) . '</cite>';
-
-            default:
-                // XXX: Issue a warning.
-                return $this->_children($node);
-            }
-
-        case 'Section':
-            return $this->_children($node);
-        }
-    }
-
-    function _children(&$node)
-    {
-        $result = '';
-        foreach ($node->_children as $child) {
-            $result .= $this->format($child);
-        }
-        return $result;
-    }
-
-}
diff --git a/include/Text/reST/Parser.php b/include/Text/reST/Parser.php
deleted file mode 100644
index d15921c..0000000
--- a/include/Text/reST/Parser.php
+++ /dev/null
@@ -1,777 +0,0 @@
-<?php
-/**
- * The Text_reST_Parser:: class implements a parser for reStructuredText
- * documents.
- *
- * $Horde: framework/Text_reST/reST/Parser.php,v 1.17 2006/12/30 20:24:32 jan 
Exp $
- *
- * Copyright 2003-2007 Jason M. Felice <jfel...@cronosys.com>
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author  Jason M. Felice <jfel...@cronosys.com>
- * @package Text_reST
- */
-class Text_reST_Parser {
-
-    /**
-     * The parse tree.
-     *
-     * @var Text_reST
-     */
-    var $_document;
-
-    /**
-     * A hash of adornment levels.
-     *
-     * The keys are one-character or two-character strings.  The one-character
-     * strings represent underline adornments of the specified character, and
-     * the double-character keys are the underline-and-overline styles.  The
-     * values associated with the keys are integers representing the
-     * adornment's heading level.
-     *
-     * @var array
-     */
-    var $_adornmentLevels = array();
-
-    /**
-     * Constructor.
-     */
-    function Text_reST_Parser()
-    {
-    }
-
-    /**
-     * Returns a parse tree representing a document.
-     *
-     * @param string $text  This is the text of the document to parse.
-     *
-     * @return Text_reST  The parse tree.
-     */
-    function &parse($text)
-    {
-        $this->_text = $text;
-
-        require_once dirname(__FILE__) . '/../reST.php';
-
-        $this->_document = new Text_reST('Document');
-        $this->_pushState($this->_document, 'Section', 0);
-
-        while ($this->_next()) {
-
-            //
-            // Parse a `..' directive.  We rewrite an `__' directive to a
-            // `.. __: ' directive here.
-            //
-            if (preg_match('/^(\.\.|__)\s+(.*?)\s*$/',
-                           $this->_lineBuffer[0], $m)) {
-                if ($m[1] == '__') {
-                    $text = '__: ' . $m[2];
-                } else {
-                    $text = $m[2];
-                }
-                while ($this->_ensureLines(2) &&
-                       preg_match('/^  ([^\s].*?)\s*$/',
-                                  $this->_lineBuffer[1], $m)) {
-                    $text .= ' '.$m[1];
-                    $this->_next();
-                }
-                $this->_parseDirective($text);
-                continue;
-            }
-
-            //
-            // Look for overline-and-underline headings.
-            //
-            if ($this->_ensureLines(3) &&
-                preg_match('/^(.+?)\s*$/', $this->_lineBuffer[1], $lineMatch) 
&&
-                $this->_checkAdornment(array(0, 2), strlen($lineMatch[1]))) {
-
-                $adornmentType = $this->_lineBuffer[0][0];
-                $adornmentType .= $adornmentType;
-
-                $this->_next();
-                $this->_next();
-
-                if (isset($this->_adornmentLevels[$adornmentType])) {
-                    $newLevel = $this->_adornmentLevels[$adornmentType];
-                    $this->_popToLevel('Section', $newLevel - 1);
-                } else {
-                    $newLevel = $this->_getStateLevel('Section') + 1;
-                    $this->_adornmentLevels[$adornmentType] = $newLevel;
-                }
-                $node = &$this->_makeNode($this->_currentNode, 'Section',
-                                          array('level' => $newLevel));
-                $this->_pushState($node, 'Section', $newLevel);
-                preg_match('/^\s*(.*?)\s*$/', $lineMatch[1], $lineMatch);
-                $this->_makeNode($this->_currentNode, 'Heading',
-                                 array('level' => $newLevel),
-                                 $lineMatch[1]);
-                continue;
-            }
-
-            //
-            // Look for underline headings.
-            //
-            if ($this->_ensureLines(2) &&
-                preg_match('/^([^\s].*?)\s*$/',
-                           $this->_lineBuffer[0], $lineMatch) &&
-                $this->_checkAdornment(array(1), strlen($lineMatch[1]))) {
-
-                $adornmentType = $this->_lineBuffer[1][0];
-                $this->_next();
-                if (isset($this->_adornmentLevels[$adornmentType])) {
-                    $newLevel = $this->_adornmentLevels[$adornmentType];
-                    $this->_popToLevel('Section', $newLevel - 1);
-                } else {
-                    $newLevel = $this->_getStateLevel('Section') + 1;
-                    $this->_adornmentLevels[$adornmentType] = $newLevel;
-                }
-                $node = &$this->_makeNode($this->_currentNode, 'Section',
-                                          array('level' => $newLevel));
-                $this->_pushState($node, 'Section', $newLevel);
-                $this->_makeNode($this->_currentNode, 'Heading',
-                                 array('level' => $newLevel),
-                                 $lineMatch[1]);
-                continue;
-            }
-
-            //
-            // Parse a `::' paragraph.
-            //
-            if (preg_match('/^\s*::\s*$/', $this->_lineBuffer[0])) {
-                $this->_next();
-                $this->_parseLiteralBlock();
-                continue;
-            }
-
-            //
-            // Parse a paragraph.  We end the paragraph when we return to
-            // a lower indentation level or encounter a blank line.
-            //
-            if (preg_match('/^(\s*)([^\s].*?)\s*$/',
-                           $this->_lineBuffer[0], $m)) {
-                $text = $m[2];
-                $level = strlen($m[1]);
-                while ($this->_ensureLines(2) &&
-                       preg_match('/^(\s*)([^\s].*?)\s*$/',
-                                  $this->_lineBuffer[1], $m)) {
-                    if (strlen($m[1]) < $level) {
-                        break;
-                    }
-                    $text .= ' ' . $m[2];
-                    $this->_next();
-                }
-
-                $trailingLiteral = false;
-                if (preg_match('/^(.*[^\s]:):\s*$/', $text, $m)) {
-                    $text = $m[1];
-                    $trailingLiteral = true;
-                } elseif (preg_match('/^(.*?)\s*::\s*$/', $text, $m)) {
-                    $text = $m[1];
-                    $trailingLiteral = true;
-                }
-
-                $this->_makeNode($this->_currentNode, 'Paragraph', array(),
-                                 $text);
-
-                if ($trailingLiteral) {
-                    $this->_next();
-                    $this->_parseLiteralBlock();
-                }
-                continue;
-            }
-
-            // XXX: Handle garbage line.
-
-        };
-
-        return $this->_document;
-    }
-
-    function &_makeNode(&$parent, $type, $props = array(), $childText = null)
-    {
-        $node = new Text_reST($type);
-        foreach ($props as $name => $value) {
-            $node->setProperty($name, $value);
-        }
-        if (!is_null($parent)) {
-            $parent->appendChild($node);
-        }
-        if (!is_null($childText)) {
-            $this->_parseInline($node, $childText);
-        }
-        return $node;
-    }
-
-    /**
-     * Checks multiple adornemnt lines in the line buffer and makes sure they
-     * are adornments and that all are identical adornments.
-     *
-     * @access private
-     *
-     * @param array $lines        An array of line numbers to check if they are
-     *                            adornments.
-     * @param integer $minLength  The minimum length for this adornment.  The
-     *                            default is 1.
-     *
-     * @return boolean  Whether this line is an adornment which matches the
-     *                  above criteria.
-     */
-    function _checkAdornment($lines = array(0), $minLength = 1)
-    {
-        $chr = null;
-        foreach ($lines as $i) {
-            if (!preg_match('/^([^a-zA-Z0-9\x7f-\xff\s]+)\s*$/',
-                            $this->_lineBuffer[$i], $m)) {
-                return false;
-            }
-            if (is_null($chr)) {
-                if (strlen($m[1]) < $minLength) {
-                    return false;
-                }
-                $chr = $m[1][0];
-            } else {
-                if (strlen($m[1]) != $minLength) {
-                    return false;
-                }
-            }
-            $minLength = strlen($m[1]);
-            for ($j = 0; $j < strlen($m[1]); $j++) {
-                if ($m[1][$j] != $chr) {
-                    return false;
-                }
-            }
-        }
-        return true;
-    }
-
-    function &_parseInline(&$node, $text)
-    {
-        static $aliases = array('sup' => 'superscript',
-                                'sub' => 'subscript');
-        static $schemas = array('http',
-                                'https',
-                                'ftp',
-                                'irc',
-                                'telnet',
-                                'news');
-
-        while (strlen($text) > 0) {
-            if (preg_match('/^\*\*((?:\\\\.|[^\\\\])*?)\*\*(.*)$/', $text, 
$m)) {
-                $this->_makeNode($node, 'Interpreted-Text',
-                                 array('role' => 'strong'),
-                                 $m[1]);
-                $text = $m[2];
-            } elseif (preg_match('/^\*((?:\\\\.|[^\\\\])*?)\*(.*)$/', $text, 
$m)) {
-                $this->_makeNode($node, 'Interpreted-Text',
-                                 array('role' => 'emphasis'),
-                                 $m[1]);
-                $text = $m[2];
-            } elseif (preg_match('/^``(.*?)``(.*)$/', $text, $m)) {
-                $sub = &$this->_makeNode($node, 'Interpreted-Text',
-                                         array('role' => 'literal'));
-                $sub->appendChild($m[1]);
-                $text = $m[2];
-            } elseif (preg_match('/^:([a-z-]+):`((?:\\\\.|[^\\\\])*?)`(.*)$/',
-                                 $text, $m)) {
-                $role = $m[1];
-                if (isset($aliases[$m[1]])) {
-                    $role = $aliases[$m[1]];
-                }
-                $sub = &$this->_makeNode($node, 'Interpreted-Text',
-                                         array('role' => $role));
-                if ($role == 'literal') {
-                    $sub->appendChild($m[2]);
-                } else {
-                    $this->_parseInline($sub, $m[2]);
-                }
-                $text = $m[3];
-            } elseif (preg_match('/^`((?:\\\\.|[^\\\\])*?)`:([a-z-]+):(.*)$/',
-                                 $text, $m)) {
-                $role = $m[2];
-                if (isset($aliases[$m[2]])) {
-                    $role = $aliases[$m[2]];
-                }
-                $sub = &$this->_makeNode($node, 'Interpreted-Text',
-                                         array('role' => $role));
-                if ($role == 'literal') {
-                    $sub->appendChild($m[1]);
-                } else {
-                    $this->_parseInline($sub, $m[1]);
-                }
-                $text = $m[3];
-            } elseif (preg_match('/^`((?:\\\\.|[^\\\\])*?)`__(.*)$/',
-                                 $text, $m)) {
-                $this->_parseLink($node, $m[1], true);
-                $text = $m[2];
-            } elseif (preg_match('/^`((?:\\\\.|[^\\\\])*?)`_(.*)$/',
-                                 $text, $m)) {
-                $this->_parseLink($node, $m[1], false);
-                $text = $m[2];
-            } elseif (preg_match('/^`((?:\\\\.|[^\\\\])*?)`(.*)$/',
-                                 $text, $m)) {
-                $this->_makeNode($node, 'Interpreted-Text',
-                                 array('role' => 'title-reference'),
-                                 $m[1]);
-                $text = $m[2];
-            } elseif (preg_match('/^((?:' . join('|', $schemas) .  
'):\/\/[-0-9a-z#%&+.\/:;?_\\~]+[-0-9a-z#%&+\/_\\~])(.*)$/i', $text, $m)) {
-                $sub = &$this->_makeNode($node, 'Link', array('href' => 
$m[1]));
-                $sub->appendChild($m[1]);
-                $text = $m[2];
-            } elseif 
(preg_match('/^([a-z0-9-]+@[a-z0-9-\.]+\.[a-z0-9-]+)(.*)$/i',
-                                 $text, $m)) {
-                $sub = &$this->_makeNode($node, 'Link',
-                                         array('href' => 'mailto:' . $m[1]));
-                $sub->appendChild($m[1]);
-                $text = $m[2];
-            } elseif (preg_match('/^(\w+)_\b(.*)$/', $text, $m)) {
-                $this->_parseLink($node, $m[1], false);
-                $text = $m[2];
-            } elseif (preg_match('/^\\\\\s(.*)$/', $text, $m)) {
-                // Backslash-escaped whitespace characters are removed from
-                // the document.
-                $text = $m[1];
-            } elseif (preg_match('/^\\\\(.)(.*)$/', $text, $m)) {
-                $c = $m[1];
-                $text = $m[2];
-                $node->appendChild($c);
-            } else {
-                // XXX: We should try to use a regexp to grab as much text as
-                // possible, then fall through to the single-character case
-                // if we can't get anything.
-
-                $c = substr($text, 0, 1);
-                $text = substr($text, 1);
-                $node->appendChild($c);
-            }
-        }
-
-        return $body;
-    }
-
-    /**
-     * Parses an anonymous or named link.
-     *
-     * @access private
-     *
-     * @param Text_reST           The parent node for the link.
-     * @param string $text        The text to parse.
-     * @param boolean $anonymous  Whether this is an anonymous link.
-     *
-     * @return Text_reST  The new link node.
-     */
-    function &_parseLink(&$node, $text, $anonymous = false)
-    {
-        $link = &$this->_makeNode($node, 'Link');
-
-        if (preg_match('/<(.*)>/', $text, $m)) {
-            $link->setProperty('href', $m[1]);
-            if (preg_match('/^([^<]+?)\s*</', $text, $m)) {
-                $link->appendChild($m[1]);
-                if (!$anonymous) {
-                    $link->setProperty('name', $this->_normalizeName($m[1]));
-                }
-            }
-        } else {
-            if (!$anonymous) {
-                $link->setProperty('name', $this->_normalizeName($text));
-            }
-            $link->appendChild($text);
-        }
-
-        if ($anonymous && is_null($link->getProperty('href'))) {
-            $this->_queueAnonymousReference($link, 'link');
-        } elseif (!$anonymous && !is_null($link->getProperty('name'))) {
-            $this->_putNamedReference($link, 'link');
-        }
-
-        return $link;
-    }
-
-    /**
-     * Normalizes an object name.
-     * This means that we lowercase it and normalize any whitespace in it.
-     *
-     * @param string $name  A name to normalize.
-     *
-     * @return string  The normalized name.
-     */
-    function _normalizeName($name)
-    {
-        return preg_replace('/\s+/', ' ', strtolower($name));
-    }
-
-    /**
-     * Parses and executes a `..' directive.
-     *
-     * @access private
-     *
-     * @param string $text  A directive to execute, less the leading `.. '.
-     */
-    function _parseDirective($text)
-    {
-        if (preg_match('/^__:\s*(.*?)\s*$/', $text, $m)) {
-            //
-            // Anonymous link definition
-            //
-            $defn = new Text_reST('Link');
-            if (preg_match('/^[a-z0-9-]+@[a-z0-9-\.]+\.[a-z0-9-]+$/i', $m[1])) 
{
-                $m[1] = 'mailto:' . $m[1];
-            }
-            $defn->setProperty('href', $m[1]);
-            $this->_queueAnonymousDefinition($defn, 'link');
-        } elseif (preg_match('/^\s*_(.*?):\s*(.*?)\s*$/', $text, $m)) {
-            //
-            // Named link definition
-            //
-            $defn = new Text_reST('Link');
-            $defn->setProperty('name', $this->_normalizeName($m[1]));
-            if (preg_match('/^[a-z0-9-]+@[a-z0-9-\.]+\.[a-z0-9-]+$/i', $m[2])) 
{
-                $m[2] = 'mailto:' . $m[2];
-            }
-            $defn->setProperty('href', $m[2]);
-            $this->_putNamedDefinition($defn, 'link');
-        }
-    }
-
-    /**
-     * Skips blank lines until we find one we can get the indentation level
-     * from, then, gathers lines until we have a different level.
-     */
-    function _parseLiteralBlock()
-    {
-        if (!$this->_ensureLines(1)) {
-            return false;
-        }
-
-        while (preg_match('/^\s*$/', $this->_lineBuffer[0])) {
-            if (!$this->_next()) {
-                return false;
-            }
-        }
-
-        if (!preg_match('/^(\s+)(.*?)\s*$/', $this->_lineBuffer[0], $m)) {
-            return false;
-        }
-        $level = strlen($m[1]);
-        $text = $m[2];
-
-        if ($this->_next()) {
-            $re = '/^(?: {' . $level . '}(.*?)|())\s*$/';
-            while (preg_match($re, $this->_lineBuffer[0], $m)) {
-                $text .= "\n" . $m[1];
-                if (!$this->_next()) {
-                    break;
-                }
-            }
-        }
-
-        $l = &$this->_makeNode($this->_currentNode, 'Literal-Block', array());
-        $stripped_text = preg_replace('/\s+$/s', '', $text);
-        $l->appendChild($stripped_text);
-
-        // XXX: Dirty hack!
-        array_unshift($this->_lineBuffer, '');
-    }
-
-    //----
-    // Line-reading members
-    //----
-
-    /**
-     * The remainder of the text we are parsing, being modified by _getLine()
-     * and _next().
-     *
-     * @access private
-     * @var string
-     */
-    var $_text;
-
-    /**
-     * An array of the lines we have peeked at.
-     *
-     * The first element is the line we are currently working with and so on.
-     *
-     * @access private
-     * @var array
-     */
-    var $_lineBuffer = array();
-
-    /**
-     * Retrieves the next line from a block of text.
-     *
-     * We replace tabs with 8 spaces.
-     *
-     * @access private
-     */
-    function _getLine()
-    {
-        if (strlen($this->_text) == 0) {
-            return null;
-        }
-        $i = strpos($this->_text, "\n");
-        if ($i !== false) {
-            $line = substr($this->_text, 0, $i);
-            $this->_text = substr($this->_text, $i + 1);
-        } else {
-            $line = $this->_text;
-            $this->_text = '';
-        }
-        return preg_replace('/\t/', '        ', $line);
-    }
-
-    /**
-     * Bumps to the next line in the input.
-     *
-     * @access private
-     */
-    function _next()
-    {
-        // Special case the first time 'round.
-        if (count($this->_lineBuffer) == 0) {
-            return $this->_ensureLines(1);
-        }
-
-        if (!$this->_ensureLines(2)) {
-            return false;
-        }
-        array_shift($this->_lineBuffer);
-        return true;
-    }
-
-    /**
-     * Makes sure there is a certain number of lines at minimum in the line
-     * buffer.
-     *
-     * @access private
-     *
-     * @param integer $count  This is the number of lines which must be in the
-     *                        buffer.
-     *
-     * @return boolean  Whether or not we succeeded.  We can fail at
-     *                  end-of-file.
-     */
-    function _ensureLines($count = 1)
-    {
-        while (count($this->_lineBuffer) < $count) {
-            $line = $this->_getLine();
-            if (is_null($line)) {
-                return false;
-            }
-            $this->_lineBuffer[] = $line;
-        }
-        return true;
-    }
-
-    //----
-    // Anonymous references and definitions
-    //----
-
-    var $_anonymousReferences = array();
-    var $_anonymousDefinitions = array();
-
-    /**
-     * Since anonymous references and definitions (e.g. footnotes, links) do
-     * not need to be defined "in lockstep" according to the spec, we create
-     * the partial parse node in both places and use this nifty system to
-     * queue or merge in each place.  Note that the reference is the "master"
-     * node.  The definition gets thrown away since it really isn't in the
-     * parse tree anyway.
-     *
-     * @access private
-     *
-     * @param object &$node  The node to queue or merge to.
-     * @param string $type   The type of anonymous object.
-     */
-    function _queueAnonymousReference(&$node, $type)
-    {
-        if (!array_key_exists($type, $this->_anonymousDefinitions)) {
-            $this->_anonymousDefinitions[$type] = array();
-        }
-        if (count($this->_anonymousDefinitions[$type]) > 0) {
-            $defn = &$this->_anonymousDefinitions[$type][0];
-            array_shift($this->_anonymousDefinitions[$type]);
-            $this->_mergeNodeProperties($node, $defn);
-        } else {
-            $this->_anonymousReferences[$type][] = &$node;
-        }
-    }
-
-    /**
-     * Handles an anonymous definition.
-     *
-     * @access private
-     *
-     * @param object &$node  The node to queue or merge from.
-     * @param string $type   The type of anonymous object.
-     */
-    function _queueAnonymousDefinition(&$node, $type)
-    {
-        if (!array_key_exists($type, $this->_anonymousReferences)) {
-            $this->_anonymousReferences[$type] = array();
-        }
-        if (count($this->_anonymousReferences[$type]) > 0) {
-            $ref = &$this->_anonymousReferences[$type][0];
-            array_shift($this->_anonymousReferences[$type]);
-            $this->_mergeNodeProperties($ref, $node);
-        } else {
-            $this->_anonymousDefinitions[$type][] = &$node;
-        }
-    }
-
-    /**
-     * Merges the properties from each node into the other node.
-     *
-     * The node type is not changed (for the case where we have a footnote
-     * reference and a footnote definition), but both nodes will have all
-     * properties.
-     *
-     * @access private
-     *
-     * @param object &$node  The reference node.
-     * @param object &$defn  The definition node.
-     */
-    function _mergeNodeProperties(&$node, &$defn)
-    {
-        // XXX: We should make sure there is no collision.
-        foreach ($defn->_properties as $name => $value) {
-            $node->setProperty($name, $value);
-        }
-        foreach ($node->_properties as $name => $value) {
-            $defn->setProperty($name, $value);
-        }
-    }
-
-    //----
-    // Named references and definitions
-    //----
-
-    var $_namedReferences = array();
-    var $_namedDefinitions = array();
-
-    /**
-     * Stores a named reference parse node in a hash so we can later merge
-     * properties with a definition.  If we already have a definition, do
-     * the merge now.
-     *
-     * @access private
-     *
-     * @param Text_reST &$node  The parse tree node.
-     * @param string $type      The type of named reference.
-     *
-     * @return boolean  Whether or not we successfully added the reference.
-     */
-    function _putNamedReference(&$node, $type)
-    {
-        $name = $node->getProperty('name');
-        if (isset($this->_namedReferences[$type][$name])) {
-            return false;
-        }
-        $this->_namedReferences[$type][$name] = &$node;
-        if (isset($this->_namedDefinitions[$type][$name])) {
-            $defn = &$this->_namedDefinitions[$type][$name];
-            $this->_mergeNodeProperties($node, $defn);
-        }
-        return true;
-    }
-
-    /**
-     * The inverse of {@link _putNamedReference()}.
-     *
-     * @access private
-     */
-    function _putNamedDefinition(&$node, $type)
-    {
-        $name = $node->getProperty('name');
-        if (isset($this->_namedDefinitions[$type][$name])) {
-            return false;
-        }
-        $this->_namedDefinitions[$type][$name] = &$node;
-        if (isset($this->_namedReferences[$type][$name])) {
-            $ref = &$this->_namedReferences[$type][$name];
-            $this->_mergeNodeProperties($ref, $node);
-        }
-        return true;
-    }
-
-    //----
-    // State stack management
-    //----
-
-    /**
-     * The state stack.
-     *
-     * It is used to keep track of nested body-level elements and how they
-     * might end.
-     *
-     * @var array
-     */
-    var $_stateStack = array();
-
-    var $_currentNode;
-
-    function _pushState(&$node, $stateType, $level)
-    {
-        $state = new Text_reST_Parser_state($node, $stateType, $level);
-        $this->_stateStack[] = &$state;
-        $this->_currentNode = &$node;
-    }
-
-    function _getStateLevel($stateType)
-    {
-        for ($i = count($this->_stateStack) - 1; $i >= 0; $i--) {
-            if ($this->_stateStack[$i]->stateType == $stateType) {
-                return $this->_stateStack[$i]->level;
-            }
-        }
-        return 0;
-    }
-
-    function _popToLevel($stateType, $level)
-    {
-        while ($this->_getStateLevel($stateType) > $level) {
-            $this->_pop();
-        }
-    }
-
-    function _pop()
-    {
-        array_pop($this->_stateStack);
-        if (count($this->_stateStack)) {
-            $state = &$this->_stateStack[count($this->_stateStack) - 1];
-            $this->_currentNode = &$state->node;
-        }
-    }
-
-}
-
-/**
- * This class represents a node on the parser's state stack.
- *
- * @package Text_reST
- */
-class Text_reST_Parser_state {
-
-    var $node;
-    var $stateType;
-    var $level;
-
-    /**
-     * Constructor.
-     *
-     * @param object &$node      This is the parse node associated with this
-     *                           state.  Block-level elements parsed in this
-     *                           state will be children of this node.
-     * @param string $stateType  Currently only 'Section'.
-     * @param mixed $level       This is the nesting level of this state type.
-     */
-    function Text_reST_Parser_state(&$node, $stateType, $level)
-    {
-        $this->node = &$node;
-        $this->stateType = $stateType;
-        $this->level = $level;
-    }
-
-}
diff --git a/scripts/rest_render b/scripts/rest_render
deleted file mode 100644
index 78029a6..0000000
--- a/scripts/rest_render
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php /* vim: set noet ts=4 sw=4 ft=php: : */
-// $Id$
-
-// usage: configure files to parse and render out of cvs.php.net
-// uses http://pear.horde.org/index.php?package=Text_reST
-// Formatting guide see also: 
http://docutils.sourceforge.net/docs/user/rst/quickref.html
-
-$path = dirname(__FILE__) . "/../include/";
-$curr = error_reporting();
-error_reporting($curr ^ (E_STRICT|E_DEPRECATED));
-require_once $path.'Text/reST.php';
-require_once $path.'Text/reST/Formatter.php';
-error_reporting($curr);
-
-function pregen_rest_files($rest_dir, $urls) {
-       if (!file_exists($rest_dir)) {
-               if (!mkdir($rest_dir)) {
-                       trigger_error("Cannot create the rest cache directory", 
E_USER_WARNING);
-                       return;
-               }
-       }
-
-       $base_url = 'http://git.php.net/?p=php-src.git;a=blob_plain;f=';
-
-       $curr = error_reporting();
-       error_reporting($curr ^ (E_STRICT|E_DEPRECATED));
-       $filenames = array();
-       foreach ($urls as $rel_path) {
-               $url = $base_url.$rel_path;
-               $string = file_get_contents($url);
-               if (!$string) {
-                       trigger_error("FAIL. Someone mail systems@ and fix 
httpd on y1", E_USER_WARNING);
-                       return;
-               }
-
-               $document = Text_reST::parse($string);
-
-               $formatter = Text_reST_Formatter::factory('html');
-
-               $filenames[] = $filename = $rest_dir.str_replace('/', '_', 
$rel_path).'.rest';
-               file_put_contents($filename, $formatter->format($document));
-       }
-       // Remove old cache files
-       foreach(array_diff(glob($rest_dir."*.rest"), $filenames) as $old) {
-               echo "Removing old reST cache file: $old\n";
-               unlink($old);
-       }
-
-       error_reporting($curr);
-}
-
-- 
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to