Ver código fonte

Rename internal property 'fields' to '__fields' to prevent clashes in dot-replace

shalvah 4 anos atrás
pai
commit
72d530b18a

+ 3 - 3
resources/views/partials/body-parameters.blade.php

@@ -1,6 +1,6 @@
 
 @foreach($parameters as $name => $parameter)
-@if(!empty($parameter['fields']))
+@if(!empty($parameter['__fields']))
 <p>
 <details>
 <summary>
@@ -16,8 +16,8 @@
 @endcomponent
 </summary>
 <br>
-@foreach($parameter['fields'] as $subfieldName => $subfield)
-@if(!empty($subfield['fields']))
+@foreach($parameter['__fields'] as $subfieldName => $subfield)
+@if(!empty($subfield['__fields']))
 @component('scribe::partials.body-parameters', ['parameters' => [$subfieldName => $subfield], 'endpointId' => $endpointId,])
 @endcomponent
 @else

+ 5 - 5
src/Extracting/Generator.php

@@ -397,7 +397,7 @@ class Generator
      * Transform body parameters such that object fields have a `fields` property containing a list of all subfields
      * Subfields will be removed from the main parameter map
      * For instance, if $parameters is ['dad' => [], 'dad.cars' => [], 'dad.age' => []],
-     * normalise this into ['dad' => [..., 'fields' => ['dad.cars' => [], 'dad.age' => []]]
+     * normalise this into ['dad' => [..., '__fields' => ['dad.cars' => [], 'dad.age' => []]]
      */
     public static function nestArrayAndObjectFields(array $parameters)
     {
@@ -409,14 +409,14 @@ class Generator
 
                 $fieldName = array_shift($parts);
 
-                $baseName = join('.fields.', array_reverse($parts));
+                $baseName = join('.__fields.', array_reverse($parts));
                 // The type should be indicated in the source object by now; we don't need it in the name
-                $normalisedBaseName = str_replace('[]', '.fields', $baseName);
+                $normalisedBaseName = str_replace('[]', '.__fields', $baseName);
 
-                $dotPath = preg_replace('/\.fields$/', '', $normalisedBaseName) . '.fields.' . $fieldName;
+                $dotPath = preg_replace('/\.__fields$/', '', $normalisedBaseName) . '.__fields.' . $fieldName;
                 Arr::set($finalParameters, $dotPath, $parameter);
             } else { // A regular field
-                $parameter['fields'] = [];
+                $parameter['__fields'] = [];
                 $finalParameters[$name] = $parameter;
             }
 

+ 3 - 3
src/Writing/OpenAPISpecWriter.php

@@ -460,8 +460,8 @@ class OpenAPISpecWriter
                     : ['type' => $baseType],
             ];
 
-            if ($baseType === 'object' && !empty($field['fields'])) {
-                foreach ($field['fields'] as $subfield) {
+            if ($baseType === 'object' && !empty($field['__fields'])) {
+                foreach ($field['__fields'] as $subfield) {
                     $fieldSimpleName = preg_replace("/^{$field['name']}\\[\]\\./", '', $subfield['name']);
                     $fieldData['items']['properties'][$fieldSimpleName] = $this->generateFieldData($subfield);
                     if ($subfield['required']) {
@@ -476,7 +476,7 @@ class OpenAPISpecWriter
                 'type' => 'object',
                 'description' => $field['description'] ?? '',
                 'example' => $field['value'] ?? null,
-                'properties' => collect($field['fields'])->mapWithKeys(function ($subfield) use ($field) {
+                'properties' => collect($field['__fields'])->mapWithKeys(function ($subfield) use ($field) {
                     return [preg_replace("/^{$field['name']}\\./", '', $subfield['name']) => $this->generateFieldData($subfield)];
                 })->all(),
             ];