浏览代码

More changes

ahwelp 5 年之前
父节点
当前提交
5840d1338b

+ 1 - 0
.gitignore

@@ -1,5 +1,6 @@
 .idea
 nbproject/
+tags
 
 config/database.db
 config/modules.ini

+ 115 - 70
app/core/generator/GeneratorController.php

@@ -1,6 +1,6 @@
 <?php
 
-use Routes\RouteCollection as RouteCollection;
+namespace App\Core\Generator;
 
 class GeneratorController {
     
@@ -42,89 +42,110 @@ class GeneratorController {
             <<<EOL
             <?php
 
-                \$plugin->name = '{{PLUGIN_NAME}}';
-                \$plugin->version = '0.0.1';
+            \$plugin->name = '{{PLUGIN_NAME}}';
+            \$plugin->version = '0.0.1';
             
-                //\$plugin->require = Array( ["name" => "plugin_name", "version" => 'x.x.x'] );
+            //\$plugin->require = Array( ["name" => "plugin_name", "version" => 'x.x.x'] );
             EOL;
     
     private $controllerBase = 
             <<<EOL
             <?php
-                class {{CONTROLLER}} {
-            
-                    function index(){
-            
-                    }
-            
-                    function create(){
-            
-                    }
-            
-                    function Store(){
-            
-                    }
-            
-                    function show({{OBJECT}} \$instance){
-            
-                    }
+
+            namespace {{NAMESPACE}};
+
+            use \{{NAMESPACE}}\Classes\{{OBJECT}} as {{OBJECT}};
+
+            class {{CONTROLLER}} {
             
-                    function edit({{OBJECT}} \$instance){
+                function index(){
+                    
+                }
             
-                    }
+                function create(){
+                     
+                }
             
-                    function update({{OBJECT}} \$instance){
+                function Store(){
+                    
+                }
             
-                    }
+                function show({{OBJECT}} \{{OBJECT_LOWER}}){
+                    
+                }
             
-                    function destroy({{OBJECT}} \$instance){
+                function edit({{OBJECT}} \{{OBJECT_LOWER}}){
+                    
+                }
             
-                    }
+                function update({{OBJECT}} \{{OBJECT_LOWER}}){
+                    
+                }
             
-                    function purge({{OBJECT}} \$instance){
+                function destroy({{OBJECT}} \{{OBJECT_LOWER}}){
+                    
+                }
             
-                    }
+                function purge({{OBJECT}} \{{OBJECT_LOWER}}){
+                    
                 }
+            }
             EOL;
     
     
     private $objectBase = 
             <<<EOL
             <?php
-                use ORM\Entity as Entity;
 
-                class {{OBJECT}} extends Entity {
-                    
-                    //const _idPolice = Array('type' => '', 'min' => 0, 'max' => 100000, 'step' => 2);
-                    
-                    const _tableName = '{{TABLE_NAME}}';
-                    //const _properties = Array('id', 'name');
+            namespace {{NAMESPACE}};
+
+            use ORM\Entity as Entity;
+
+            class {{OBJECT}} extends Entity {
+                
+                //const _idPolice = Array('type' => '', 'min' => 0, 'max' => 100000, 'step' => 2);
+                
+                const _tableName = '{{TABLE_NAME}}';
+                //const _properties = Array('id', 'name');
             
-                    //const _timestamps = true;
-                    //const _softdelete = true;
+                //const _timestamps = true;
+                //const _softdelete = true;
             
-                    //const _connectionName = '';
-                }
+                //const _connectionName = '';
+            }
             EOL;
     
     private $routeBase = 
             <<<EOL
             <?php
 
-                use Routes\RouteCollection as RouteCollection;
-
-                RouteCollection::group('/{{PLUGIN_NAME}}', function(){
-                    RouteCollection::get   ('/',            '{{CONTROLLER}}@index');
-                    RouteCollection::get   ('/',            '{{CONTROLLER}}@create');
-                    RouteCollection::post  ('/',            '{{CONTROLLER}}@store');
-                    RouteCollection::get   ('/[i:id]',      '{{CONTROLLER}}@show');
-                    RouteCollection::get   ('/[i:id]/edit', '{{CONTROLLER}}@edit');
-                    RouteCollection::put   ('/[i:id]/edit', '{{CONTROLLER}}@update');
-                    RouteCollection::delete('/[i:id]',      '{{CONTROLLER}}@destroy');
-                });
+            use Routes\RouteCollection as RouteCollection;
+
+            RouteCollection::group('/{{PLUGIN_NAME}}', function(){
+                RouteCollection::get   ('/',            '\{{NAMESPACE}}\{{CONTROLLER}}@index');
+                RouteCollection::get   ('/',            '\{{NAMESPACE}}\{{CONTROLLER}}@create');
+                RouteCollection::post  ('/',            '\{{NAMESPACE}}\{{CONTROLLER}}@store');
+                RouteCollection::get   ('/[i:id]',      '\{{NAMESPACE}}\{{CONTROLLER}}@show');
+                RouteCollection::get   ('/[i:id]/edit', '\{{NAMESPACE}}\{{CONTROLLER}}@edit');
+                RouteCollection::put   ('/[i:id]/edit', '\{{NAMESPACE}}\{{CONTROLLER}}@update');
+                RouteCollection::delete('/[i:id]',      '\{{NAMESPACE}}\{{CONTROLLER}}@destroy');
+            });
             EOL;
     
+    private $ctagsHeader = 
+        <<<EOL
+        !_TAG_FILE_FORMAT	2	/extended format; --format=1 will not append ;" to lines/
+        !_TAG_FILE_SORTED	1	/0=unsorted, 1=sorted, 2=foldcase/
+        !_TAG_OUTPUT_FILESEP	slash	/slash or backslash/
+        !_TAG_OUTPUT_MODE	u-ctags	/u-ctags or e-ctags/
+        !_TAG_PROGRAM_AUTHOR	Universal Ctags Team	//
+        !_TAG_PROGRAM_NAME	Universal Ctags	/Derived from Exuberant Ctags/
+        !_TAG_PROGRAM_URL	https://ctags.io/	/official site/
+        !_TAG_PROGRAM_VERSION	0.0.0	/a3c87ab5/
+        EOL;
+
     function createPluginFromTemplate($subname, $name){
+
         if (is_dir( DIR_APP.$subname . '/' . $name )){
             echo 'Treco ja existe';
             return;
@@ -135,8 +156,9 @@ class GeneratorController {
             mkdir(DIR_APP.$subname . '/' . $name . '/db',      0755, true);
             mkdir(DIR_APP.$subname . '/' . $name . '/views',   0755, true);            
         }
-        
+
         $plugin_name = $name;
+        $namespace = "App\\".ucfirst($subname).'\\'.ucfirst($name);
         $plugin_name_pretty = ucwords(str_replace('_', ' ', $name));
         $object      = ucfirst( $name );
         $controller  = $object.'Controller';
@@ -146,39 +168,62 @@ class GeneratorController {
         file_put_contents(DIR_APP.$subname . '/' . $name . '/lang/en.php',           $this->langBase);
         file_put_contents(DIR_APP.$subname . '/' . $name . '/lang/'.APP_LANG.'.php', $this->langBase);
         
-        $this->migrationBase = str_replace("{{PLUGIN_NAME}}", $plugin_name, $this->migrationBase);
+        $this->migrationBase = str_replace("{{PLUGIN_NAME}}", $plugin_name,   $this->migrationBase);
         file_put_contents(DIR_APP.$subname . '/' . $name . '/db/Migrate.php', $this->migrationBase);
         
-        $this->routeBase = str_replace("{{PLUGIN_NAME}}", $plugin_name, $this->routeBase);
-        $this->routeBase = str_replace("{{CONTROLLER}}",  $controller,  $this->routeBase);
+        $this->routeBase = str_replace("{{NAMESPACE}}",   $namespace,     $this->routeBase);
+        $this->routeBase = str_replace("{{PLUGIN_NAME}}", $plugin_name,   $this->routeBase);
+        $this->routeBase = str_replace("{{CONTROLLER}}",  $controller,    $this->routeBase);
         file_put_contents(DIR_APP.$subname . '/' . $name . '/Routes.php', $this->routeBase);
        
-        $this->objectBase = str_replace("{{OBJECT}}",      $object,  $this->objectBase);
-        $this->objectBase = str_replace("{{TABLE_NAME}}",  $name,    $this->objectBase);
-        file_put_contents(DIR_APP.$subname . '/' . $name . "/classes/$object.php", $this->objectBase);
+        $this->objectBase = str_replace("{{NAMESPACE}}",   $namespace.'\Classes',   $this->objectBase);
+        $this->objectBase = str_replace("{{OBJECT}}",      $object,                 $this->objectBase);
+        $this->objectBase = str_replace("{{TABLE_NAME}}",  $name,                   $this->objectBase);
+        file_put_contents(DIR_APP.$subname . '/' . $name . "/classes/$object.php",  $this->objectBase);
         
-        $this->controllerBase = str_replace("{{OBJECT}}",      $object,     $this->controllerBase);
-        $this->controllerBase = str_replace("{{CONTROLLER}}",  $controller, $this->controllerBase);
-        file_put_contents(DIR_APP.$subname . '/' . $name . "/$controller.php", $this->controllerBase);
-       
+        $this->controllerBase = str_replace("{{NAMESPACE}}",   $namespace,            $this->controllerBase);
+        $this->controllerBase = str_replace("{{OBJECT}}",      $object,               $this->controllerBase);
+        $this->controllerBase = str_replace("{{OBJECT_LOWER}}",strlower($object),     $this->controllerBase);
+        $this->controllerBase = str_replace("{{CONTROLLER}}",  $controller,           $this->controllerBase);
+        file_put_contents(DIR_APP.$subname . '/' . $name . "/$controller.php",        $this->controllerBase);
         
     }
     
     function listRoutes(){
-        foreach(RouteCollection::returnRoutes() as $route){
-            //var_dump($route->_callback);continue;//die();
-            echo implode($route->_verb , ', ') ." || $route->_uri || $route->_weight||";
+        echo str_pad('VERB',     10, ' ', STR_PAD_BOTH) .  "||";
+        echo str_pad('URI' ,     35, ' ', STR_PAD_BOTH) .  "||";
+        echo str_pad('W',        5,  ' ', STR_PAD_BOTH) .  "||";
+        echo str_pad('FUNCTION', 60, ' ', STR_PAD_BOTH) .  "\n";
+        echo str_pad('', 120, '-') . "\n";
+        foreach(\Routes\RouteCollection::returnRoutes() as $route){
+            echo str_pad(implode($route->_verb , ', '), 10, ' ', STR_PAD_BOTH) . "||";
+            echo str_pad($route->_uri, 35, ' ', STR_PAD_RIGHT) . "||";
+            echo str_pad($route->_weight, 5, ' ', STR_PAD_BOTH). "||";
             if( gettype($route->_callback[0]) == 'object' ){
-                echo 'Clousure ||';
+                echo str_pad('Clousure', 60, ' ', STR_PAD_RIGHT);
             }else{
-                echo $route->_callback[0];
+                echo str_pad($route->_callback[0], 30, ' ', STR_PAD_RIGHT);
             }
             echo "\n";
         }
-        //file_put_contents('/tmp/Route.php', $this->routeBase);
-        //echo $this->objectBase;
-        echo APP_LANG;
     }
+
+    function createTags(){
+        $outputs = shell_exec("grep -Rnsi '@ctag' . | sed s/\ //g | sed s/*@ctag/\ /g");
+        $outputs = preg_split('/\R/', $outputs);
+        $return  = $this->ctagsHeader . "\n";
+        foreach($outputs as $output){
+            $line = explode(' ', str_replace('\\t', '', $output) );
+            @$line = $line[1] . "\t " . str_replace('./', '', explode(':', $line[0])[0]) . "\t ".$line[1] . "\n";
+            if( strpos($line, 'app/core/generator/GeneratorController.php') ){
+                continue;
+            }
+            $return .= $line;
+            //echo "Generating: ".$line."\n";
+        }
+
+        file_put_contents(DIR_ROOT.'tags', $return);
+    } 
     
 }
 

+ 9 - 10
app/core/generator/Routes.php

@@ -2,14 +2,15 @@
 
 use Routes\RouteCollection as RouteCollection;
 
-RouteCollection::group('/core', function(){
-    
-    include_once 'GeneratorController.php';
-    
-    RouteCollection::cli('/routes', function(){
-        last_class()->listRoutes();    
-    });
+RouteCollection::cli('/', function(){
+    echo "/core/create/[h:subname]/[h:name]\n";
+});
 
+RouteCollection::cli('/routes',                      '\App\Core\Generator\GeneratorController@listRoutes');
+RouteCollection::cli('/create/tags',                 '\App\Core\Generator\GeneratorController@createTags');
+RouteCollection::cli('/create/[h:subname]/[h:name]', '\App\Core\Generator\GeneratorController@createPluginFromTemplate');
+
+RouteCollection::group('/core', function(){
     
     RouteCollection::cli('/purge/[h:module]', function($module){
         echo "Purgin $module\n";
@@ -19,6 +20,4 @@ RouteCollection::group('/core', function(){
         echo "Purging Everything\n";
     });
 
-    RouteCollection::cli('/create/[h:subname]/[h:name]', 'GeneratorController@createPluginFromTemplate');
-    
-});
+});

+ 3 - 4
app/core/wellcome/Routes.php → app/core/welcome/Routes.php

@@ -3,15 +3,14 @@
 use Routes\RouteCollection as RouteCollection;
 use App\Core\Template\Output as Output;
 
-include_once 'WellcomeController.php';
-
 RouteCollection::add('GET','/', function(){
 
     Output::setTemplate('');
-    Output::setView('wellcome');
+    Output::setView('welcome');
     Output::addValue('string', Array('welcome' => 'Bem vindo'));
     Output::addValue('palavrinha', 'Oi');
     Output::render();
 });
 
-RouteCollection::add('get', '/welcome', 'WellcomeController@welcome');
+RouteCollection::get('/welcome', '\App\Core\Welcome\WelcomeController@welcome');
+

+ 13 - 0
app/core/welcome/WelcomeController.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Core\Welcome;
+
+use RR\Response as R;
+
+class WelcomeController{
+
+    function welcome(){
+        R::json(Array('message' => \Lang::getString('welcome', 'welcome')))->send()->done();
+    }
+
+}

+ 0 - 0
app/core/wellcome/lang/en.php → app/core/welcome/lang/en.php


+ 0 - 0
app/core/wellcome/lang/fr.php → app/core/welcome/lang/fr.php


+ 0 - 0
app/core/wellcome/lang/pt_br.php → app/core/welcome/lang/pt_br.php


+ 0 - 0
app/core/wellcome/views/wellcome.mustache → app/core/welcome/views/welcome.mustache


+ 0 - 11
app/core/wellcome/WellcomeController.php

@@ -1,11 +0,0 @@
-<?php
-
-use RR\Response as R;
-
-class WellcomeController{
-
-    function welcome(){
-        R::json(Array('message' => Lang::getString('welcome', 'welcome')))->send()->done();
-    }
-
-}

+ 1 - 1
publiclib.php

@@ -6,7 +6,7 @@ spl_autoload_register(function ($class_name) {
 
     $path[sizeof($path)-1] = '';
 
-    $path = strtolower(implode(DIRECTORY_SEPARATOR, $path));
+    $path = strtolower(DIR_ROOT. implode(DIRECTORY_SEPARATOR, $path));
 
     if(is_file($path . $fileName . '.php')){
         return include $path . $fileName . '.php';