betz Mon Feb 10 08:18:18 2003 EDT Added files: /phpdoc/scripts test_missing-entities.php.in Log: test script for creating missings through xmllint
Index: phpdoc/scripts/test_missing-entities.php.in +++ phpdoc/scripts/test_missing-entities.php.in <?php /* ATTENTION: don't use this script!!! its only meant to test the creation of missings together with xmllint. For testing you must change following lines from manual.xml.in <!-- Autogenerated missing entites and IDs to make build work --> <!ENTITY % missing-entities SYSTEM "entities/missing-entities.ent"> %missing-entities; <!ENTITY missing-ids SYSTEM "entities/missing-ids.xml"> ]> to: <!-- Autogenerated missing entites and IDs to make build work --> <!ENTITY % missing-entities SYSTEM "entities/test_missing-entities.ent"> %missing-entities; <!ENTITY missing-ids SYSTEM "entities/test_missing-ids.xml"> ]> The results are _only_ usefull, if all entities are valid, this means any entitie must have the trailing ; */ ########################## # Function declacarions # ########################## function test_manual ($XMLLINT) { // Execute a test of the manual exec( "$XMLLINT --noout --noent --valid manual.xml 2>&1", $results, $retcode ); return $results; } // end test_manual function catch_output ($results, $what="") { // catch the output from xmllint $missings = array(); switch ($what) { case "entities": foreach ($results as $line) { // missing entitiy found, replace each with "???" if (strpos($line, "not defined") !== FALSE) { $line = preg_replace('!^.[^\']*\'!', '<!ENTITY ', $line); $line = preg_replace('!\'.*!', ' "???">', $line); $missings[] = $line; } } break; case "ids": foreach ($results as $line) { // missing ID found if (strpos($line, "an unknown ID") !== FALSE) { $missings[] = preg_replace("!^.* ID !", " <para id=", $line) . "></para>\n"; } } break; } // Sort elements (just to make handwork easier, if needed) $missings = array_unique($missings); sort($missings); return $missings; } // catch_output function write_file ($missings, $what="") { // Try to open file for rewriting if ($what === "entities") { $handle = fopen(MISSING_ENT, "w"); // Exit if we cannot rewrite the files if (!$handle) { exit ("ERROR: Cannot open ".MISSING_ENT." for writing\n"); } // Write out XML declaration fwrite($handle, XML_DECL); // Write out missings to file foreach ($missings as $ent) { fwrite($handle, $ent."\n"); } fclose($handle); // print out success info echo MISSING_ENT." created\n"; } if ($what === "ids") { $handle = fopen(MISSING_ID, "w"); // Exit if we cannot rewrite the files if (!$handle) { exit ("ERROR: Cannot open ".MISSING_ID." for writing\n"); } // Write out XML declaration and appendix part fwrite($handle, XML_DECL); fwrite($handle, APPENDIX_START); foreach ($missings as $idpara) { fwrite($handle, $idpara); } fwrite($handle, APPENDIX_END); fclose($handle); // print out success info echo MISSING_ID." created\n"; } } //end write_file ###################################################################### # # # main part # # # ###################################################################### // define some constants define ('XML_DECL', "<" . "?xml version='1.0' encoding='iso-8859-1'?>\n\n"); define ('APPENDIX_START', "<appendix id=\"missing-stuff\"><title>&MissingStuff;</title>\n"); define ('APPENDIX_END', "</appendix>\n"); define ('MISSING_ENT', "entities/test_missing-entities.ent"); define ('MISSING_ID', "entities/test_missing-ids.xml"); set_time_limit(0); // Print out info for the viewer and log files echo "\ntesting the manual for missing elements...\n"; // If we are in a scripts dir, go one dir up $wrkdir = getcwd(); if (strpos($wrkdir, "scripts") !== FALSE) { chdir(".."); } $XMLLINT = "@XMLLINT@"; // Support for Windows systems if (substr(PHP_OS, 0, 3) == 'WIN') { $XMLLINT = str_replace("/", "\\", "$XMLLINT"); } $results = test_manual($XMLLINT); $missings = catch_output ($results,"entities"); write_file ($missings, "entities"); unset ($results, $missings); $results = test_manual($XMLLINT); $missings = catch_output ($results,"ids"); write_file ($missings, "ids"); ?> -- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php