[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