forked from kevinowino869/mitrobill
update PEAR
This commit is contained in:
@ -11,20 +11,24 @@
|
||||
* through the world-wide-web at the following URI:
|
||||
* http://opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* @category Console
|
||||
* @category Console
|
||||
* @package PEAR2\Console\CommandLine
|
||||
* @author David JEAN LOUIS <izimobil@gmail.com>
|
||||
* @copyright 2007-2009 David JEAN LOUIS
|
||||
* @license http://opensource.org/licenses/mit-license.php MIT License
|
||||
* @version 0.2.1
|
||||
* @license http://opensource.org/licenses/mit-license.php MIT License
|
||||
* @version 0.2.3
|
||||
* @link http://pear2.php.net/PEAR2_Console_CommandLine
|
||||
* @since File available since release 0.1.0
|
||||
*
|
||||
* @filesource
|
||||
*/
|
||||
|
||||
namespace PEAR2\Console\CommandLine;
|
||||
|
||||
use PEAR2\Console\CommandLine;
|
||||
use DOMDocument;
|
||||
use DOMNode;
|
||||
use Phar;
|
||||
|
||||
/**
|
||||
* Parser for command line xml definitions.
|
||||
@ -49,7 +53,7 @@ class XmlParser
|
||||
*
|
||||
* @return PEAR2\Console\CommandLine A parser instance
|
||||
*/
|
||||
public static function parse($xmlfile)
|
||||
public static function parse($xmlfile)
|
||||
{
|
||||
if (!is_readable($xmlfile)) {
|
||||
CommandLine::triggerError(
|
||||
@ -58,7 +62,7 @@ class XmlParser
|
||||
array('{$file}' => $xmlfile)
|
||||
);
|
||||
}
|
||||
$doc = new \DomDocument();
|
||||
$doc = new DOMDocument();
|
||||
$doc->load($xmlfile);
|
||||
self::validate($doc);
|
||||
$nodes = $doc->getElementsByTagName('command');
|
||||
@ -77,9 +81,9 @@ class XmlParser
|
||||
*
|
||||
* @return PEAR2\Console\CommandLine A parser instance
|
||||
*/
|
||||
public static function parseString($xmlstr)
|
||||
public static function parseString($xmlstr)
|
||||
{
|
||||
$doc = new \DomDocument();
|
||||
$doc = new DOMDocument();
|
||||
$doc->loadXml($xmlstr);
|
||||
self::validate($doc);
|
||||
$nodes = $doc->getElementsByTagName('command');
|
||||
@ -93,27 +97,48 @@ class XmlParser
|
||||
/**
|
||||
* Validates the xml definition using Relax NG.
|
||||
*
|
||||
* @param DomDocument $doc The document to validate
|
||||
* @param DOMDocument $doc The document to validate
|
||||
*
|
||||
* @return boolean Whether the xml data is valid or not.
|
||||
* @throws PEAR2\Console\CommandLine\Exception
|
||||
*
|
||||
* @todo use exceptions only
|
||||
*/
|
||||
public static function validate($doc)
|
||||
public static function validate(DOMDocument $doc)
|
||||
{
|
||||
$rngfile = __DIR__
|
||||
. '/../../../../data/pear2.php.net/PEAR2_Console_CommandLine/xmlschema.rng';
|
||||
if (!is_file($rngfile)) {
|
||||
$rngfile = __DIR__ . '/../../../../data/xmlschema.rng';
|
||||
$paths = array();
|
||||
if (!class_exists('Phar', false) || !Phar::running()) {
|
||||
// Pyrus
|
||||
$paths[]
|
||||
= 'D:\Vasko\WEB\PHP\_shared\PEAR2\data/pear2.php.net/PEAR2_Console_CommandLine/xmlschema.rng';
|
||||
// PEAR
|
||||
$pearDataDirEnv = getenv('PHP_PEAR_DATA_DIR');
|
||||
if ($pearDataDirEnv) {
|
||||
$paths[] = $pearDataDirEnv .
|
||||
'/PEAR2_Console_CommandLine/xmlschema.rng';
|
||||
}
|
||||
$paths[] = 'D:\Vasko\WEB\PHP\_shared\PEAR2\data/PEAR2_Console_CommandLine/xmlschema.rng';
|
||||
}
|
||||
if (!is_readable($rngfile)) {
|
||||
CommandLine::triggerError(
|
||||
'invalid_xml_file',
|
||||
E_USER_ERROR,
|
||||
array('{$file}' => $rngfile)
|
||||
);
|
||||
$pkgData = __DIR__ . '/../../../../data/';
|
||||
// PHAR dep
|
||||
$paths[] = $pkgData .
|
||||
'pear2.php.net/PEAR2_Console_CommandLine/xmlschema.rng';
|
||||
$paths[] = $pkgData . 'PEAR2_Console_CommandLine/xmlschema.rng';
|
||||
$paths[] = $pkgData . 'pear2/console_commandline/xmlschema.rng';
|
||||
// Git/Composer
|
||||
$paths[] = $pkgData . 'xmlschema.rng';
|
||||
$paths[] = 'xmlschema.rng';
|
||||
|
||||
foreach ($paths as $path) {
|
||||
if (is_readable($path)) {
|
||||
return $doc->relaxNGValidate($path);
|
||||
}
|
||||
}
|
||||
return $doc->relaxNGValidate($rngfile);
|
||||
CommandLine::triggerError(
|
||||
'invalid_xml_file',
|
||||
E_USER_ERROR,
|
||||
array('{$file}' => $path)
|
||||
);
|
||||
}
|
||||
|
||||
// }}}
|
||||
@ -124,14 +149,15 @@ class XmlParser
|
||||
* constructed PEAR2\Console\CommandLine or PEAR2\Console\CommandLine_Command
|
||||
* instance.
|
||||
*
|
||||
* @param DomDocumentNode $node The node to parse
|
||||
* @param bool $isRootNode Whether it is a root node or not
|
||||
* @param DOMNode $node The node to parse
|
||||
* @param bool $isRootNode Whether it is a root node or not
|
||||
*
|
||||
* @return mixed PEAR2\Console\CommandLine or PEAR2\Console\CommandLine_Command
|
||||
* @return CommandLine|CommandLine\Command An instance of CommandLine for
|
||||
* root node, CommandLine\Command otherwise.
|
||||
*/
|
||||
private static function _parseCommandNode($node, $isRootNode = false)
|
||||
private static function _parseCommandNode(DOMNode $node, $isRootNode = false)
|
||||
{
|
||||
if ($isRootNode) {
|
||||
if ($isRootNode) {
|
||||
$obj = new CommandLine();
|
||||
} else {
|
||||
$obj = new CommandLine\Command();
|
||||
@ -184,11 +210,11 @@ class XmlParser
|
||||
* Parses an option node and returns the constructed
|
||||
* PEAR2\Console\CommandLine_Option instance.
|
||||
*
|
||||
* @param DomDocumentNode $node The node to parse
|
||||
* @param DOMNode $node The node to parse
|
||||
*
|
||||
* @return PEAR2\Console\CommandLine\Option The built option
|
||||
*/
|
||||
private static function _parseOptionNode($node)
|
||||
private static function _parseOptionNode(DOMNode $node)
|
||||
{
|
||||
$obj = new CommandLine\Option($node->getAttribute('name'));
|
||||
foreach ($node->childNodes as $cNode) {
|
||||
@ -221,14 +247,14 @@ class XmlParser
|
||||
// _parseArgumentNode() {{{
|
||||
|
||||
/**
|
||||
* Parses an argument node and returns the constructed
|
||||
* Parses an argument node and returns the constructed
|
||||
* PEAR2\Console\CommandLine_Argument instance.
|
||||
*
|
||||
* @param DomDocumentNode $node The node to parse
|
||||
* @param DOMNode $node The node to parse
|
||||
*
|
||||
* @return PEAR2\Console\CommandLine\Argument The built argument
|
||||
*/
|
||||
private static function _parseArgumentNode($node)
|
||||
private static function _parseArgumentNode(DOMNode $node)
|
||||
{
|
||||
$obj = new CommandLine\Argument($node->getAttribute('name'));
|
||||
foreach ($node->childNodes as $cNode) {
|
||||
@ -260,7 +286,7 @@ class XmlParser
|
||||
|
||||
/**
|
||||
* Returns a boolean according to true/false possible strings.
|
||||
*
|
||||
*
|
||||
* @param string $str The string to process
|
||||
*
|
||||
* @return boolean
|
||||
|
Reference in New Issue
Block a user