Skip to content

Commit 810e56d

Browse files
authored
Code enhancements (#327)
* Code style fixes * Code style tweaks
1 parent 7a53af9 commit 810e56d

File tree

3 files changed

+24
-26
lines changed

3 files changed

+24
-26
lines changed

src/Mpociot/ApiDoc/Commands/GenerateDocumentation.php

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,9 @@ public function handle()
8989

9090
$parsedRoutes = [];
9191

92-
if ($this->option('router') === 'laravel') {
93-
foreach ($routeDomains as $routeDomain) {
94-
foreach ($routePrefixes as $routePrefix) {
95-
$parsedRoutes += $this->processRoutes($generator, $allowedRoutes, $routeDomain, $routePrefix, $middleware);
96-
}
97-
}
98-
} else {
99-
foreach ($routeDomains as $routeDomain) {
100-
foreach ($routePrefixes as $routePrefix) {
101-
$parsedRoutes += $this->processDingoRoutes($generator, $allowedRoutes, $routeDomain, $routePrefix, $middleware);
102-
}
92+
foreach ($routeDomains as $routeDomain) {
93+
foreach ($routePrefixes as $routePrefix) {
94+
$parsedRoutes += $this->processRoutes($generator, $allowedRoutes, $routeDomain, $routePrefix, $middleware);
10395
}
10496
}
10597
$parsedRoutes = collect($parsedRoutes)->groupBy('resource')->sort(function ($a, $b) {

src/Mpociot/ApiDoc/Generators/AbstractGenerator.php

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ protected function getDocblockResponse($tags)
148148
*/
149149
protected function getParameters($routeData, $routeAction, $bindings)
150150
{
151-
$rules = $this->simplifyRules($this->getRouteRules($routeData['methods'], $routeAction['uses'], $bindings));
151+
$validationRules = $this->getRouteValidationRules($routeData['methods'], $routeAction['uses'], $bindings);
152+
$rules = $this->simplifyRules($validationRules);
152153

153154
foreach ($rules as $attribute => $ruleset) {
154155
$attributeData = [
@@ -168,27 +169,32 @@ protected function getParameters($routeData, $routeAction, $bindings)
168169
}
169170

170171
/**
171-
* Format the validation rules as plain array.
172+
* Format the validation rules as a plain array.
172173
*
173174
* @param array $rules
174175
*
175176
* @return array
176177
*/
177178
protected function simplifyRules($rules)
178179
{
179-
$simplifiedRules = Validator::make([], $rules)->getRules();
180+
// this will split all string rules into arrays of strings
181+
$rules = Validator::make([], $rules)->getRules();
180182

181-
if (count($simplifiedRules) === 0) {
182-
return $simplifiedRules;
183+
if (count($rules) === 0) {
184+
return $rules;
183185
}
184186

185-
$values = collect($simplifiedRules)
187+
// Laravel will ignore the nested array rules unless the key referenced exists and is an array
188+
// So we'll to create an empty array for each array attribute
189+
$values = collect($rules)
186190
->filter(function ($values) {
187191
return in_array('array', $values);
188192
})->map(function ($val, $key) {
189193
return [''];
190194
})->all();
191195

196+
// Now this will return the complete ruleset.
197+
// Nested array parameters will be present, with '*' replaced by '0'
192198
return Validator::make($values, $rules)->getRules();
193199
}
194200

@@ -287,10 +293,10 @@ protected function getRouteGroup($route)
287293
*
288294
* @return array
289295
*/
290-
protected function getRouteRules(array $routeMethods, $routeAction, $bindings)
296+
protected function getRouteValidationRules(array $routeMethods, $routeAction, $bindings)
291297
{
292-
list($class, $method) = explode('@', $routeAction);
293-
$reflection = new ReflectionClass($class);
298+
list($controller, $method) = explode('@', $routeAction);
299+
$reflection = new ReflectionClass($controller);
294300
$reflectionMethod = $reflection->getMethod($method);
295301

296302
foreach ($reflectionMethod->getParameters() as $parameter) {
@@ -357,13 +363,13 @@ protected function splitValuePairs($parameters, $first = 'is ', $last = 'or ')
357363

358364
/**
359365
* @param string $rule
360-
* @param string $ruleName
366+
* @param string $attribute
361367
* @param array $attributeData
362368
* @param int $seed
363369
*
364370
* @return void
365371
*/
366-
protected function parseRule($rule, $ruleName, &$attributeData, $seed, $routeData)
372+
protected function parseRule($rule, $attribute, &$attributeData, $seed, $routeData)
367373
{
368374
$faker = Factory::create();
369375
$faker->seed(crc32($seed));
@@ -510,7 +516,7 @@ protected function parseRule($rule, $ruleName, &$attributeData, $seed, $routeDat
510516
$attributeData['value'] = $faker->timezone;
511517
break;
512518
case 'exists':
513-
$fieldName = isset($parameters[1]) ? $parameters[1] : $ruleName;
519+
$fieldName = isset($parameters[1]) ? $parameters[1] : $attribute;
514520
$attributeData['description'][] = Description::parse($rule)->with([Str::singular($parameters[0]), $fieldName])->getDescription();
515521
break;
516522
case 'active_url':
@@ -627,7 +633,7 @@ protected function parseStringRule($rules)
627633

628634
// The format for specifying validation rules and parameters follows an
629635
// easy {rule}:{parameters} formatting convention. For instance the
630-
// rule "Max:3" states that the value may only be three letters.
636+
// rule "max:3" states that the value may only be three letters.
631637
if (strpos($rules, ':') !== false) {
632638
list($rules, $parameter) = explode(':', $rules, 2);
633639

tests/RuleDescriptionParserTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ protected function getPackageProviders($app)
112112
*/
113113
protected function getEnvironmentSetUp($app)
114114
{
115-
$app['config']->set('app.locale', 'es'); // Just to be different to default language.
116-
$app['config']->set('app.fallback_locale', 'ch'); // Just to be different to default language.
115+
$app['config']->set('app.locale', 'es'); // Just to be different from default language.
116+
$app['config']->set('app.fallback_locale', 'ch'); // Just to be different from default language.
117117
}
118118
}

0 commit comments

Comments
 (0)