| 
				
			 | 
			
			
				
				@@ -12,15 +12,16 @@ use Exception; 
			 | 
		
		
	
		
			
			| 
				12
			 | 
			
				12
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				13
			 | 
			
				13
			 | 
			
			
				
				 class DocBlock { 
			 | 
		
		
	
		
			
			| 
				14
			 | 
			
				14
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				15
			 | 
			
				
			 | 
			
			
				
				-    public $docblock, 
			 | 
		
		
	
		
			
			| 
				16
			 | 
			
				
			 | 
			
			
				
				-        $description = null, 
			 | 
		
		
	
		
			
			| 
				17
			 | 
			
				
			 | 
			
			
				
				-        $all_params = array(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				15
			 | 
			
			
				
				+    public $docblock; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				16
			 | 
			
			
				
				+    public $description = null; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				17
			 | 
			
			
				
				+    public $all_params = array(); 
			 | 
		
		
	
		
			
			| 
				18
			 | 
			
				18
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				19
			 | 
			
				19
			 | 
			
			
				
				     /** 
			 | 
		
		
	
		
			
			| 
				20
			 | 
			
				20
			 | 
			
			
				
				      * Parses a docblock; 
			 | 
		
		
	
		
			
			| 
				21
			 | 
			
				21
			 | 
			
			
				
				      */ 
			 | 
		
		
	
		
			
			| 
				22
			 | 
			
				
			 | 
			
			
				
				-    function __construct($docblock) { 
			 | 
		
		
	
		
			
			| 
				23
			 | 
			
				
			 | 
			
			
				
				-        if( !is_string($docblock) ) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				22
			 | 
			
			
				
				+    function __construct($docblock) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				23
			 | 
			
			
				
				+    { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				24
			 | 
			
			
				
				+        if (!is_string($docblock)) { 
			 | 
		
		
	
		
			
			| 
				24
			 | 
			
				25
			 | 
			
			
				
				             throw new Exception("DocBlock expects first parameter to be a string"); 
			 | 
		
		
	
		
			
			| 
				25
			 | 
			
				26
			 | 
			
			
				
				         } 
			 | 
		
		
	
		
			
			| 
				26
			 | 
			
				27
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -45,19 +46,21 @@ class DocBlock { 
			 | 
		
		
	
		
			
			| 
				45
			 | 
			
				46
			 | 
			
			
				
				      * @param string $param_name 
			 | 
		
		
	
		
			
			| 
				46
			 | 
			
				47
			 | 
			
			
				
				      * @return mixed 
			 | 
		
		
	
		
			
			| 
				47
			 | 
			
				48
			 | 
			
			
				
				      */ 
			 | 
		
		
	
		
			
			| 
				48
			 | 
			
				
			 | 
			
			
				
				-    public function __call($param_name, $values = null) { 
			 | 
		
		
	
		
			
			| 
				49
			 | 
			
				
			 | 
			
			
				
				-        if( $param_name == "description" ) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				49
			 | 
			
			
				
				+    public function __call($param_name, $values = null) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				50
			 | 
			
			
				
				+    { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				51
			 | 
			
			
				
				+        if ($param_name == "description") { 
			 | 
		
		
	
		
			
			| 
				50
			 | 
			
				52
			 | 
			
			
				
				             return $this->description; 
			 | 
		
		
	
		
			
			| 
				51
			 | 
			
				
			 | 
			
			
				
				-        }else if( isset($this->all_params[$param_name]) ) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				53
			 | 
			
			
				
				+        } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				54
			 | 
			
			
				
				+        else if (isset($this->all_params[$param_name])) { 
			 | 
		
		
	
		
			
			| 
				52
			 | 
			
				55
			 | 
			
			
				
				             $params = $this->all_params[$param_name]; 
			 | 
		
		
	
		
			
			| 
				53
			 | 
			
				56
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				54
			 | 
			
				
			 | 
			
			
				
				-            if( count($params) == 1 ) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				57
			 | 
			
			
				
				+            if (count($params) == 1) { 
			 | 
		
		
	
		
			
			| 
				55
			 | 
			
				58
			 | 
			
			
				
				                 return $params[0]; 
			 | 
		
		
	
		
			
			| 
				56
			 | 
			
				
			 | 
			
			
				
				-            }else { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				59
			 | 
			
			
				
				+            } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				60
			 | 
			
			
				
				+            else { 
			 | 
		
		
	
		
			
			| 
				57
			 | 
			
				61
			 | 
			
			
				
				                 return $params; 
			 | 
		
		
	
		
			
			| 
				58
			 | 
			
				62
			 | 
			
			
				
				             } 
			 | 
		
		
	
		
			
			| 
				59
			 | 
			
				63
			 | 
			
			
				
				         } 
			 | 
		
		
	
		
			
			| 
				60
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				61
			 | 
			
				64
			 | 
			
			
				
				         return null; 
			 | 
		
		
	
		
			
			| 
				62
			 | 
			
				65
			 | 
			
			
				
				     } 
			 | 
		
		
	
		
			
			| 
				63
			 | 
			
				66
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -67,42 +70,34 @@ class DocBlock { 
			 | 
		
		
	
		
			
			| 
				67
			 | 
			
				70
			 | 
			
			
				
				      * and the rest in `$this->description` 
			 | 
		
		
	
		
			
			| 
				68
			 | 
			
				71
			 | 
			
			
				
				      */ 
			 | 
		
		
	
		
			
			| 
				69
			 | 
			
				72
			 | 
			
			
				
				     private function parse_block() { 
			 | 
		
		
	
		
			
			| 
				70
			 | 
			
				
			 | 
			
			
				
				-        // split at each line 
			 | 
		
		
	
		
			
			| 
				71
			 | 
			
				
			 | 
			
			
				
				-        foreach(preg_split("/(\r?\n)/", $this->docblock) as $line){ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				73
			 | 
			
			
				
				+        foreach(preg_split("/(\r?\n)/", $this->docblock) as $line) { 
			 | 
		
		
	
		
			
			| 
				72
			 | 
			
				74
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				73
			 | 
			
				
			 | 
			
			
				
				-            // if starts with an asterisk 
			 | 
		
		
	
		
			
			| 
				74
			 | 
			
				
			 | 
			
			
				
				-            if( preg_match('/^(?=\s+?\*[^\/])(.+)/', $line, $matches) ) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				75
			 | 
			
			
				
				+            if (preg_match('/^(?=\s+?\*[^\/])(.+)/', $line, $matches)) { 
			 | 
		
		
	
		
			
			| 
				75
			 | 
			
				76
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				76
			 | 
			
				77
			 | 
			
			
				
				                 $info = $matches[1]; 
			 | 
		
		
	
		
			
			| 
				77
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				78
			 | 
			
				
			 | 
			
			
				
				-                // remove wrapping whitespace 
			 | 
		
		
	
		
			
			| 
				79
			 | 
			
				78
			 | 
			
			
				
				                 $info = trim($info); 
			 | 
		
		
	
		
			
			| 
				80
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				81
			 | 
			
				
			 | 
			
			
				
				-                // remove leading asterisk 
			 | 
		
		
	
		
			
			| 
				82
			 | 
			
				79
			 | 
			
			
				
				                 $info = preg_replace('/^(\*\s+?)/', '', $info); 
			 | 
		
		
	
		
			
			| 
				83
			 | 
			
				80
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				84
			 | 
			
				
			 | 
			
			
				
				-                // if it doesn't start with an "@" symbol 
			 | 
		
		
	
		
			
			| 
				85
			 | 
			
				
			 | 
			
			
				
				-                // then add to the description 
			 | 
		
		
	
		
			
			| 
				86
			 | 
			
				
			 | 
			
			
				
				-                if( $info[0] !== "@" ) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				81
			 | 
			
			
				
				+                if ($info[0] !== "@") { 
			 | 
		
		
	
		
			
			| 
				87
			 | 
			
				82
			 | 
			
			
				
				                     $this->description .= "\n$info"; 
			 | 
		
		
	
		
			
			| 
				88
			 | 
			
				
			 | 
			
			
				
				-                    continue; 
			 | 
		
		
	
		
			
			| 
				89
			 | 
			
				
			 | 
			
			
				
				-                }else { 
			 | 
		
		
	
		
			
			| 
				90
			 | 
			
				
			 | 
			
			
				
				-                    // get the name of the param 
			 | 
		
		
	
		
			
			| 
				91
			 | 
			
				
			 | 
			
			
				
				-                    if (preg_match('/@param +\\$([^ ]+) +([^ ]+) +(.*)$/', $info, $matches) == 1) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				83
			 | 
			
			
				
				+                } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				84
			 | 
			
			
				
				+                else if (preg_match('/@param +([^ ]+) +([^ ]+) +(.*)$/', $info, $matches) == 1) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				85
			 | 
			
			
				
				+                    if ($matches[1][0] == "$") { 
			 | 
		
		
	
		
			
			| 
				92
			 | 
			
				86
			 | 
			
			
				
				                         $param_name = $matches[1]; 
			 | 
		
		
	
		
			
			| 
				93
			 | 
			
				87
			 | 
			
			
				
				                         $param_type = $matches[2]; 
			 | 
		
		
	
		
			
			| 
				94
			 | 
			
				
			 | 
			
			
				
				-                        $value = $matches[3]; 
			 | 
		
		
	
		
			
			| 
				95
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				96
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				97
			 | 
			
				
			 | 
			
			
				
				-                        // push the param value into place 
			 | 
		
		
	
		
			
			| 
				98
			 | 
			
				
			 | 
			
			
				
				-                        $this->all_params[$param_name] = [ 
			 | 
		
		
	
		
			
			| 
				99
			 | 
			
				
			 | 
			
			
				
				-                            "name" => $param_name, 
			 | 
		
		
	
		
			
			| 
				100
			 | 
			
				
			 | 
			
			
				
				-                            "type" => $param_type, 
			 | 
		
		
	
		
			
			| 
				101
			 | 
			
				
			 | 
			
			
				
				-                            "description" => $value 
			 | 
		
		
	
		
			
			| 
				102
			 | 
			
				
			 | 
			
			
				
				-                        ]; 
			 | 
		
		
	
		
			
			| 
				103
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				104
			 | 
			
				
			 | 
			
			
				
				-                        continue; 
			 | 
		
		
	
		
			
			| 
				105
			 | 
			
				88
			 | 
			
			
				
				                     } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				89
			 | 
			
			
				
				+                    else { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				90
			 | 
			
			
				
				+                        $param_name = $matches[2]; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				91
			 | 
			
			
				
				+                        $param_type = $matches[1]; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				92
			 | 
			
			
				
				+                    } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				93
			 | 
			
			
				
				+                    $value = $matches[3]; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				94
			 | 
			
			
				
				+                    $param_name = substr($param_name, 1); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				95
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				96
			 | 
			
			
				
				+                    $this->all_params[$param_name] = [ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				97
			 | 
			
			
				
				+                        "name" => $param_name, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				98
			 | 
			
			
				
				+                        "type" => $param_type, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				99
			 | 
			
			
				
				+                        "description" => $value 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				100
			 | 
			
			
				
				+                    ]; 
			 | 
		
		
	
		
			
			| 
				106
			 | 
			
				101
			 | 
			
			
				
				                 } 
			 | 
		
		
	
		
			
			| 
				107
			 | 
			
				102
			 | 
			
			
				
				             } 
			 | 
		
		
	
		
			
			| 
				108
			 | 
			
				103
			 | 
			
			
				
				         } 
			 |