[limb-svn] r6365 - 3.x/trunk/cli

svn at limb-project.com svn at limb-project.com
Wed Oct 3 01:01:37 MSD 2007


Author: pachanga
Date: 2007-10-03 01:01:37 +0400 (Wed, 03 Oct 2007)
New Revision: 6365
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6365

Modified:
   3.x/trunk/cli/bundle_classes.php
Log:
-- non-root classes are listed first by bundle_classes.php

Modified: 3.x/trunk/cli/bundle_classes.php
===================================================================
--- 3.x/trunk/cli/bundle_classes.php	2007-10-02 19:49:06 UTC (rev 6364)
+++ 3.x/trunk/cli/bundle_classes.php	2007-10-02 21:01:37 UTC (rev 6365)
@@ -2,8 +2,32 @@
 set_time_limit(0);
 
 $files = array();
-$classes = array();
+$root_classes = array();
+$nonroot_classes = array();
 
+function make_bundle($files, $filter_regex)
+{
+  $bundle = '';
+  foreach($files as $file)
+  {
+    $lines = file($file);
+    //removing <?php stuff
+    array_shift($lines); 
+    if(strpos($lines[count($lines)-1], '?>'))
+      array_pop($lines);
+    
+    //filter unneccessary lmb_require's
+    for($i=0;$i<count($lines);$i++)
+    {
+      if(preg_match($filter_regex, $lines[$i]))
+        unset($lines[$i]);
+    }
+
+    $bundle .= implode("", $lines);
+  }
+  return $bundle;
+}
+
 array_shift($argv);
 foreach($argv as $dir)
 {
@@ -24,28 +48,23 @@
 $files = array_filter($files);
 $files = array_unique($files);
 
+$classes = array();
 foreach($files as $file)
-  $classes[] = reset(explode('.', basename($file))); 
+{
+  $class = reset(explode('.', basename($file))); 
+  if(preg_match("~class\s+$class\s+.*(extends|implements)~", file_get_contents($file)))
+    $nonroot_classes[] = $file;
+  else
+    $root_classes[] = $file;
 
+  $classes[] = $class;
+}
+
 $filter_regex = '~lmb_require.+(' . implode('|', $classes) . ')~';
 
 $bundle = '';
-foreach($files as $file)
-{
-  $lines = file($file);
-  //removing <?php stuff
-  array_shift($lines); 
-  if(strpos($lines[count($lines)-1], '?>'))
-    array_pop($lines);
-  
-  //filter unneccessary lmb_require's
-  for($i=0;$i<count($lines);$i++)
-  {
-    if(preg_match($filter_regex, $lines[$i]))
-      unset($lines[$i]);
-  }
 
-  $bundle .= implode("", $lines);
-}
+$bundle .= make_bundle($root_classes, $filter_regex);
+$bundle .= make_bundle($nonroot_classes, $filter_regex);
 
 echo "<?php\n" . $bundle;



More information about the limb-svn mailing list