cvs: phpdoc /scripts make-partial.php

From: Date: Fri, 28 Jan 2005 15:17:02 +0000
Subject: cvs: phpdoc /scripts make-partial.php
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969366223@lists.php.net to get a copy of this message
sean Fri Jan 28 10:17:02 2005 EDT Added files: /phpdoc/scripts make-partial.php Log: See: http://news.php.net/php.pear.doc/5479 http://news.php.net/php.pear.doc/5481 http://news.php.net/php.pear.doc/5482 (import to phpdoc) http://cvs.php.net/co.php/phpdoc/scripts/make-partial.php?r=1.1&p=1 Index: phpdoc/scripts/make-partial.php +++ phpdoc/scripts/make-partial.php #!/usr/bin/env php <?php /** vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: * Script to trigger partial builds of the PEAR manual * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @author Martin Jansen <mj@php.net> * @copyright 2005 The PEAR Group * @version CVS: $Id: make-partial.php,v 1.1 2005/01/28 15:17:01 sean Exp $ */ // NOTE: originally from peardoc:/make-partial.php ; // these files should be kept in sync require_once "Console/Getopt.php"; $console = new Console_Getopt; $args = $console->getopt($console->readPHPArgv(), array(), array("format=", "include=")); if (!function_exists("readline")) { echo "Error: The readline extension could not be found!"; exit(1); } $file = file("manual.xml.in"); if (!$file) { echo "Error: Unable to read manual.xml.in!"; exit(1); } copy("manual.xml.in", "manual.xml.in.partial-backup"); register_shutdown_function("restoreFile"); // {{{ gather arguments $format = "html"; $sections = array(); foreach ($args[0] as $arg) { if ($arg[0] == "--format") { $format = $arg[1]; } elseif ($arg[0] == '--include') { $sections[] = $arg[1]; } } // }}} $newFile = ""; $partStack = array(); $includePart = true; $notInPart = true; /** * Loop through the file and build a new file depending on the users * choice. */ foreach ($file as $line) { // <part id="foo"> if (preg_match("/<part id=\"([a-z-]+)\">/", $line, $matches)) { $inPart = true; if ($sections) { echo "Including ". $matches[1] ."? "; if ($includePart = in_string($sections, $matches[1])) { echo "YES\n"; } else { echo "NO\n"; } } else { $include = readline("Include " . $matches[1] . "? [NO] "); $includePart = evaluate($include); } if ($includePart == true) { $newFile .= $line; } continue; } // </part> if (preg_match("/<\/part>/", $line)) { if (count($partStack) > 0) { $newFile .= implode("", $partStack); $partStack = array(); } if ($includePart == true) { $newFile .= $line; } $includePart = false; $inPart = false; continue; } // <title> if ($inPart == true && $includePart && preg_match("/<title/", $line)) { $partStack[] = $line; continue; } // the rest if ($inPart == true) { if ($includePart == false) { continue; } if (preg_match("/(\s\t)*&([a-z0-9\.-]+);/", $line, $matches)) { if ($sections) { echo "Including ". $matches[2] ."? "; if ($include = in_string($sections, $matches[2])) { echo "YES\n"; } else { echo "NO\n"; } } else { $include = evaluate(readline("Include " . $matches[2] . "? [NO] ")); } if ($include == true) { $partStack[] = $line; } } } else { $newFile .= $line; } } file_put_contents("manual.xml.in", $newFile); // {{{ Run the build scripts $cmd = "make " . $format; passthru($cmd); // }}} // {{{ Helper functions /** * Restores the original manual.xml.in file */ function restoreFile() { if (!is_file("manual.xml.in.partial-backup")) { return; } rename("manual.xml.in.partial-backup", "manual.xml.in"); } /** * Evaluates the return value of readline() * * If the first parameter is either "y" or "yes" the method will * return true. Otherwise false. */ function evaluate($str) { if ($str == 'y' || $str == "yes") { return true; } return false; } /** * $needle (array) is in $haystack? * */ function in_string($needle, $haystack) { foreach ((array) $needle AS $n) { if (stripos($haystack, $n) !== false) { return true; } } return false; } // }}}

« previous php.doc (#969366223) next »