diff src/Replacer/Replacer.php @ 21:f0b0d014e448 main-dev

Cleaning up code based on AI overlord review
author Luka Sitas <sitas.luka.97@gmail.com>
date Wed, 26 Feb 2025 19:45:08 -0500
parents 19b7a8de0019
children 827efbf4d73c
line wrap: on
line diff
--- a/src/Replacer/Replacer.php	Wed Feb 26 19:29:55 2025 -0500
+++ b/src/Replacer/Replacer.php	Wed Feb 26 19:45:08 2025 -0500
@@ -12,7 +12,7 @@
      *
      * @var string
      */
-    protected $controller_prefix = '';
+    protected string $controller_prefix = '';
 
     /**
      * Prefix and Suffix for controller.
@@ -20,16 +20,18 @@
      *
      * @var string
      */
-    protected $controller_suffix = 'Controller';
+    protected string $controller_suffix = 'Controller';
 
     /**
      * Finds all places in a string that could be replaced.
-     * Returns an array of all potential replacements as they
-     * appear in the target.
+     * Returns an array of all potential replacements as they appear in the target.
+     *
+     * @param string $target
+     * @return array
      */
     public function get_all_keywords(string $target): array
     {
-        // find all the matches to our expected syntax
+        // find all matches to our expected syntax
         $matches = [];
         preg_match_all('/{{[\sa-zA-Z\-_]+}}/', $target, $matches);
         // sort the array and return unique values
@@ -38,46 +40,55 @@
         return array_values(array_unique($matches[0]));
     }
 
+    /**
+     * Apply replacements to the target string.
+     *
+     * @param string $target
+     * @return string
+     */
     public function apply_replacements(string $target): string
     {
         $inserts = $this->get_all_keywords($target);
         $available_replacements = $this->get_available_replacements();
 
-        $target = str_replace(
+        return str_replace(
             array_keys($available_replacements),
             $available_replacements,
             $target
         );
-
-        return $target;
     }
 
+    /**
+     * Get available replacements for string replacements.
+     *
+     * @return array
+     */
     public function get_available_replacements(): array
     {
         $table_name = $this->getTableInput();
-        $replacements = [
-                    '{{ class }}' => $this->getClassName($table_name),
-                    '{{ controllerName }}' => $this->controller_name($table_name),
-                    '{{ model }}' => $this->model_name($table_name),
-                    '{{ modelVariable }}' => $this->model_variable($table_name),
-                    '{{ namespace }}' => $this->{'get'.$this->type.'Namespace'}($table_name),
-                    '{{ namespacedModel }}' => $this->getNamespacedModel($table_name),
-                    '{{ requestUses }}' => $this->getRequestUses($table_name),
-                    '{{ rootNamespace }}' => $this->getRootNamespace(),
-                    '{{ storeRequest }}' => $this->store_request_name($table_name),
-                    '{{ tableName }}' => $table_name,
-                    '{{ updateRequest }}' => $this->update_request_name($table_name),
+
+        return [
+            '{{ class }}' => $this->getClassName($table_name),
+            '{{ controllerName }}' => $this->controller_name($table_name),
+            '{{ model }}' => $this->model_name($table_name),
+            '{{ modelVariable }}' => $this->model_variable($table_name),
+            '{{ namespace }}' => $this->{'get' . $this->type . 'Namespace'}($table_name),
+            '{{ namespacedModel }}' => $this->getNamespacedModel($table_name),
+            '{{ requestUses }}' => $this->getRequestUses($table_name),
+            '{{ rootNamespace }}' => $this->getRootNamespace(),
+            '{{ storeRequest }}' => $this->store_request_name($table_name),
+            '{{ tableName }}' => $table_name,
+            '{{ updateRequest }}' => $this->update_request_name($table_name),
         ];
-
-        return $replacements;
     }
 
-    // //////////////////////////////////////////
-    //				Internals and Classes   				//
-    // //////////////////////////////////////////
+    // Model and Controller Naming
 
     /**
-     * Model names are generated in uppercase first Camel case.
+     * Generate model name in Studly case.
+     *
+     * @param string $name
+     * @return string
      */
     public function model_name(string $name): string
     {
@@ -85,95 +96,152 @@
     }
 
     /**
-     * Model variable is standardly just a singular version of the table name.
+     * Generate singular model variable name.
+     *
+     * @param string $name
+     * @return string
      */
     public function model_variable(string $name): string
     {
         return Str::singular($name);
-        /* return 'item'; */
     }
 
     /**
-     * Controller names are generated in uppercase first Camel case
-     * and wrapped in the prefix and suffix.
+     * Generate controller name using prefix/suffix and studly case.
+     *
+     * @param string $name
+     * @return string
      */
     public function controller_name(string $name): string
     {
-        return $this->controller_prefix.
-            $this->model_name($name).
+        return $this->controller_prefix .
+            $this->model_name($name) .
             $this->controller_suffix;
     }
 
+    /**
+     * Generate the store request name.
+     *
+     * @param string $name
+     * @return string
+     */
     public function store_request_name(string $name): string
     {
-        return 'Store'.$this->model_name($name).'Request';
+        return 'Store' . $this->model_name($name) . 'Request';
     }
 
+    /**
+     * Generate the update request name.
+     *
+     * @param string $name
+     * @return string
+     */
     public function update_request_name(string $name): string
     {
-        return 'Update'.$this->model_name($name).'Request';
+        return 'Update' . $this->model_name($name) . 'Request';
     }
 
-    // //////////////////////////////////////////
-    //							Namespaces			   				//
-    // //////////////////////////////////////////
+    // Namespace Methods
+    // These methods handle the formation of various namespaces used within the replacements.
 
+    /**
+     * Get the root namespace for the application.
+     *
+     * @return string
+     */
     public function getRootNamespace(): string
     {
         return $this->laravel->getNamespace();
     }
 
+    /**
+     * Get the model namespace.
+     *
+     * @param string $name
+     * @return string
+     */
     public function getModelNamespace(string $name = ''): string
     {
-        return $this->getRootNamespace().'Models';
+        return $this->getRootNamespace() . 'Models';
     }
 
+    /**
+     * Get the fully-qualified namespaced model class.
+     *
+     * @param string $name
+     * @return string
+     */
     public function getNamespacedModel(string $name = ''): string
     {
-        return $this->getModelNamespace().'\\'.$this->model_name($name);
+        return $this->getModelNamespace() . '\\' . $this->model_name($name);
     }
 
+    /**
+     * Get the controller namespace.
+     *
+     * @param string $name
+     * @return string
+     */
     public function getControllerNamespace(string $name = ''): string
     {
-        return $this->getRootNamespace().'Http\\Controllers';
+        return $this->getRootNamespace() . 'Http\\Controllers';
     }
 
+    /**
+     * Get the request namespace.
+     *
+     * @param string $name
+     * @return string
+     */
     public function getRequestNamespace(string $name): string
     {
-        return $this->getRootNamespace().'Http\\Requests\\'.$this->model_name($name);
+        return $this->getRootNamespace() . 'Http\\Requests\\' . $this->model_name($name);
     }
 
+    /**
+     * Get the store request namespace.
+     *
+     * @param string $name
+     * @return string
+     */
     public function getStoreRequestNamespace(string $name): string
     {
         return $this->getRequestNamespace($name);
     }
 
+    /**
+     * Get the update request namespace.
+     *
+     * @param string $name
+     * @return string
+     */
     public function getUpdateRequestNamespace(string $name): string
     {
         return $this->getRequestNamespace($name);
     }
 
+    /**
+     * Get the request uses string for replacement.
+     *
+     * @param string $name
+     * @return string
+     */
     public function getRequestUses(string $name): string
     {
         return implode("\n", [
-            'use '.$this->getRequestNamespace($name).'\\'.$this->store_request_name($name).';',
-            'use '.$this->getRequestNamespace($name).'\\'.$this->update_request_name($name).';',
+            'use ' . $this->getRequestNamespace($name) . '\\' . $this->store_request_name($name) . ';',
+            'use ' . $this->getRequestNamespace($name) . '\\' . $this->update_request_name($name) . ';',
         ]);
     }
 
-    public function getRouteNamespace(string $name = ''): string
-    {
-        return $this->getRootNamespace().'Http\\Controllers';
-    }
-
-    // //////////////////////////////////////////
-    //				Language and Presentables				//
-    // //////////////////////////////////////////
+    // Text Manipulation
 
     /**
-     * Breaks up a string and makes it human readable.
+     * Convert a string to a human-readable format.
+     * Assumes camel case input.
      *
-     * This function assumes that the inputted name is camel case
+     * @param string $name
+     * @return string
      */
     public function human_readable(string $name): string
     {
@@ -181,9 +249,11 @@
     }
 
     /**
-     * Breaks up a string and makes it human readable and lowecase.
+     * Convert a string to a lowercase human-readable format.
+     * Assumes camel case input.
      *
-     * This function assumes that the inputted name is camel case
+     * @param string $name
+     * @return string
      */
     public function human_readable_lc(string $name): string
     {