[prev in list] [next in list] [prev in thread] [next in thread]
List: php-doc-cvs
Subject: [DOC-CVS] =?utf-8?q?svn:_/phd/trunk/_phpdotnet/phd/Autoloader.php_phpdotnet/phd/BuildOptionsParser.p
From: Hannes_Magnusson <bjori () php ! net>
Date: 2010-04-29 19:16:10
Message-ID: svn-bjori-1272568570-298784-763069685 () svn ! php ! net
[Download RAW message or body]
bjori Thu, 29 Apr 2010 19:16:10 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=298784
Log:
- Add a new verbose level 'messages' (enabled by default)
- Add the possibility to generate a 'phd.config.php' config file (--saveconfig).
If that file exists in cwd then it will be read and used
(command line arguments will overwrite the config file though)
- Add a new config option, 'package_dirs'. Used to specify the directory locations to use for autoloading
Changed paths:
U phd/trunk/phpdotnet/phd/Autoloader.php
U phd/trunk/phpdotnet/phd/BuildOptionsParser.php
U phd/trunk/phpdotnet/phd/Config.php
U phd/trunk/phpdotnet/phd/functions.php
U phd/trunk/render.php
["svn-diffs-298784.txt" (text/x-diff)]
Modified: phd/trunk/phpdotnet/phd/Autoloader.php
===================================================================
--- phd/trunk/phpdotnet/phd/Autoloader.php 2010-04-29 17:56:38 UTC (rev 298783)
+++ phd/trunk/phpdotnet/phd/Autoloader.php 2010-04-29 19:16:10 UTC (rev 298784)
@@ -1,24 +1,27 @@
<?php
namespace phpdotnet\phd;
-if (!defined("__INSTALLDIR__")) {
- define("__INSTALLDIR__", "@php_dir@" == "@"."php_dir@" ? \
dirname(dirname(__DIR__)) : "@php_dir@");
-}
-
class Autoloader
{
public static function autoload($name)
{
// Only try autoloading classes we know about (i.e. from our own namespace)
if (strncmp('phpdotnet\phd\\', $name, 14) === 0) {
- $file = __INSTALLDIR__ . DIRECTORY_SEPARATOR . str_replace(array('\\', \
'_'), DIRECTORY_SEPARATOR, $name) . '.php'; + $filename = \
DIRECTORY_SEPARATOR . str_replace(array('\\', '_'), DIRECTORY_SEPARATOR, $name) . \
'.php'; + foreach(Config::package_dirs() as $dir) {
+ $file = $dir . $filename;
- // Using fopen() because it has use_include_path parameter.
- if (!$fp = @fopen($file, 'r', true)) {
- v('Cannot find file for %s: %s', $name, $file, E_USER_ERROR);
+ // Using fopen() because it has use_include_path parameter.
+ if (!$fp = @fopen($file, 'r', true)) {
+ continue;
+ }
+
+ fclose($fp);
+ require $file;
+
+ return false;
}
- fclose($fp);
- require $file;
+ v('Cannot find file for %s: %s', $name, $file, E_USER_ERROR);
}
return false;
Modified: phd/trunk/phpdotnet/phd/BuildOptionsParser.php
===================================================================
--- phd/trunk/phpdotnet/phd/BuildOptionsParser.php 2010-04-29 17:56:38 UTC (rev \
298783)
+++ phd/trunk/phpdotnet/phd/BuildOptionsParser.php 2010-04-29 19:16:10 UTC (rev \
298784) @@ -35,6 +35,7 @@
'css:' => 'C:', // External CSS
'xinclude' => 'x', // Automatically process xinclude \
directives
'ext:' => 'e:', // The file-format extension to use, \
including the dot + 'saveconfig::' => 'S::', // Save the generated \
config ? );
}
@@ -169,6 +170,9 @@
public function option_s($k, $v)
{
+ if ($k == "S") {
+ return $this->option_saveconfig($k, $v);
+ }
$this->option_skip($k, $v);
}
public function option_skip($k, $v)
@@ -188,7 +192,25 @@
}
Config::set_skip_ids($skip_ids);
}
+ public function option_saveconfig($k, $v)
+ {
+ if (is_array($v)) {
+ trigger_error(sprintf("You cannot pass %s more than once", $k), \
E_USER_ERROR); + }
+ // No arguments passed, default to 'true'
+ if (is_bool($v)) {
+ $v = "true";
+ }
+
+ $val = self::boolval($v);
+ if (is_bool($val)) {
+ Config::set_saveconfig($v);
+ } else {
+ trigger_error("yes/no || on/off || true/false || 1/0 expected", \
E_USER_ERROR); + }
+ }
+
public function option_v($k, $v)
{
if ($k[0] === 'V') {
@@ -350,6 +372,8 @@
-e <extension>
--ext <extension> The alternative filename extension to use, including
the dot. Use 'false' for no extension.
+ -S <bool>
+ --saveconfig <bool> Save the generated config (default: false).
Most options can be passed multiple times for greater effect.
";
Modified: phd/trunk/phpdotnet/phd/Config.php
===================================================================
--- phd/trunk/phpdotnet/phd/Config.php 2010-04-29 17:56:38 UTC (rev 298783)
+++ phd/trunk/phpdotnet/phd/Config.php 2010-04-29 19:16:10 UTC (rev 298784)
@@ -2,6 +2,10 @@
namespace phpdotnet\phd;
/* $Id$ */
+if (!defined("__INSTALLDIR__")) {
+ define("__INSTALLDIR__", "@php_dir@" == "@"."php_dir@" ? \
dirname(dirname(__DIR__)) : "@php_dir@"); +}
+
class Config
{
const VERSION = 'phd-from-svn';
@@ -42,12 +46,30 @@
'css' => array(),
'process_xincludes' => false,
'ext' => null,
+ 'package_dirs' => array(__INSTALLDIR__),
+ 'saveconfig' => false,
);
public static function init(array $a) {
self::$optionArray = array_merge(self::$optionArray, (array)$a);
}
+ public static function getAllFiltered() {
+ $retval = self::$optionArray;
+ return self::exportable($retval);
+ }
+ public static function exportable($val) {
+ foreach($val as $k => &$opt) {
+ if (is_array($opt)) {
+ $opt = self::exportable($opt);
+ continue;
+ }
+ if (is_resource($opt)) {
+ unset($val[$k]);
+ }
+ }
+ return $val;
+ }
/**
* Maps static function calls to config option setter/getters.
*
@@ -119,6 +141,7 @@
{
trigger_error('Use setColor_output()', E_USER_DEPRECATED);
}
+
}
/*
Modified: phd/trunk/phpdotnet/phd/functions.php
===================================================================
--- phd/trunk/phpdotnet/phd/functions.php 2010-04-29 17:56:38 UTC (rev 298783)
+++ phd/trunk/phpdotnet/phd/functions.php 2010-04-29 19:16:10 UTC (rev 298784)
@@ -16,12 +16,13 @@
define('VERBOSE_PARTIAL_CHILD_READING', VERBOSE_PARTIAL_READING << 1);
define('VERBOSE_TOC_WRITING', VERBOSE_PARTIAL_CHILD_READING << 1);
define('VERBOSE_CHUNK_WRITING', VERBOSE_TOC_WRITING << 1);
+define('VERBOSE_MESSAGES', VERBOSE_CHUNK_WRITING << 1);
-define('VERBOSE_INFO', ((VERBOSE_CHUNK_WRITING << 1) - 1) & \
~VERBOSE_ERRORS); +define('VERBOSE_INFO', ((VERBOSE_MESSAGES \
<< 1) - 1) & ~VERBOSE_ERRORS);
// Warnings
-define('VERBOSE_NOVERSION', VERBOSE_CHUNK_WRITING << 1);
+define('VERBOSE_NOVERSION', VERBOSE_MESSAGES << 1);
define('VERBOSE_BROKEN_LINKS', VERBOSE_NOVERSION << 1);
define('VERBOSE_MISSING_ATTRIBUTES', VERBOSE_BROKEN_LINKS << 1);
@@ -79,6 +80,7 @@
VERBOSE_PARTIAL_CHILD_READING => 'Partial Child Reading ',
VERBOSE_TOC_WRITING => 'Writing TOC ',
VERBOSE_CHUNK_WRITING => 'Writing Chunk ',
+ VERBOSE_MESSAGES => 'Heads up ',
// PhD warnings
VERBOSE_NOVERSION => 'No version information',
@@ -111,6 +113,7 @@
case VERBOSE_PARTIAL_CHILD_READING:
case VERBOSE_TOC_WRITING:
case VERBOSE_CHUNK_WRITING:
+ case VERBOSE_MESSAGES:
$color = Config::phd_info_color();
$output = Config::phd_info_output();
$data = $msg;
Modified: phd/trunk/render.php
===================================================================
--- phd/trunk/render.php 2010-04-29 17:56:38 UTC (rev 298783)
+++ phd/trunk/render.php 2010-04-29 19:16:10 UTC (rev 298784)
@@ -8,10 +8,19 @@
define("__INSTALLDIR__", "@php_dir@" == "@"."php_dir@" ? __DIR__ : "@php_dir@");
require __INSTALLDIR__ . '/phpdotnet/phd/Autoloader.php';
+require __INSTALLDIR__ . '/phpdotnet/phd/Config.php';
require __INSTALLDIR__ . '/phpdotnet/phd/functions.php';
spl_autoload_register(array(__NAMESPACE__ . "\\Autoloader", "autoload"));
+
+$conf = array();
+if (file_exists("phd.config.php")) {
+ v("Loading config from existing file", VERBOSE_MESSAGES);
+ $conf = include "phd.config.php";
+ Config::init($conf);
+}
+
BuildOptionsParser::getopt();
/* If no docbook file was passed, die */
@@ -27,14 +36,22 @@
v("Output directory is not a file?", E_USER_ERROR);
}
-Config::init(array(
- "lang_dir" => __INSTALLDIR__ . DIRECTORY_SEPARATOR . "phpdotnet" . \
DIRECTORY_SEPARATOR
- . "phd" . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR
- . "langs" . DIRECTORY_SEPARATOR,
- "phpweb_version_filename" => Config::xml_root() . DIRECTORY_SEPARATOR . \
'version.xml',
- "phpweb_acronym_filename" => Config::xml_root() . DIRECTORY_SEPARATOR . \
'entities' . DIRECTORY_SEPARATOR . 'acronyms.xml',
-));
+// This needs to be moved. Preferably into the PHP package.
+if (!$conf) {
+ Config::init(array(
+ "lang_dir" => __INSTALLDIR__ . DIRECTORY_SEPARATOR . "phpdotnet" . \
DIRECTORY_SEPARATOR + . "phd" . DIRECTORY_SEPARATOR . "data" . \
DIRECTORY_SEPARATOR + . "langs" . DIRECTORY_SEPARATOR,
+ "phpweb_version_filename" => Config::xml_root() . DIRECTORY_SEPARATOR . \
'version.xml', + "phpweb_acronym_filename" => Config::xml_root() . \
DIRECTORY_SEPARATOR . 'entities' . DIRECTORY_SEPARATOR . 'acronyms.xml', + ));
+}
+if (Config::saveconfig()) {
+ v("Writing the config file", VERBOSE_MESSAGES);
+ file_put_contents("phd.config.php", "<?php\nreturn " . \
var_export(Config::getAllFiltered(), 1) . ";"); +}
+
$render = new Render();
$reader = new Reader();
--
PHP Documentation Commits Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic