Skip to content

Commit ea7f641

Browse files
authored
Merge pull request #17 from swaggest/symbolized-required
Symbolize "required" definition
2 parents b44d8e4 + 2a305e6 commit ea7f641

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+105
-90
lines changed

composer.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/JsonSchema/SchemaBuilder.php

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ private function copyTo(SchemaBuilder $schemaBuilder)
311311

312312
private function processOther()
313313
{
314-
static $skip = null, $emptySchema = null;
314+
static $skip = null, $emptySchema = null, $names = null;
315315
if ($skip === null) {
316316
$emptySchema = new Schema();
317317
$names = Schema::names();
@@ -332,8 +332,6 @@ private function processOther()
332332
$names->if => 1,
333333
$names->then => 1,
334334
$names->else => 1,
335-
$names->fromRef => 1,
336-
$names->originPath => 1,
337335
);
338336
}
339337
$schemaData = Schema::export($this->schema);
@@ -345,7 +343,24 @@ private function processOther()
345343
continue;
346344
}
347345

348-
if (!property_exists($emptySchema, $key) && $key !== 'const' && $key[0] !== '$') {
346+
if (!property_exists($emptySchema, $key) && $key !== $names->const && $key[0] !== '$') {
347+
continue;
348+
}
349+
350+
if ($names->required == $key && is_array($value)) {
351+
$export = "array(\n";
352+
foreach ($value as $item) {
353+
if (PhpCode::makePhpName($item) === $item) {
354+
$expItem = 'self::names()->' . $item;
355+
} else {
356+
$expItem = PhpCode::varExport($item);
357+
}
358+
$export .= ' ' . $expItem . ",\n";
359+
}
360+
$export .= ")";
361+
$this->result->addSnippet(
362+
"{$this->varName}->{$key} = " . $export . ";\n"
363+
);
349364
continue;
350365
}
351366

tests/src/Tmp/Issue5/Sample.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public static function setUpProperties($properties, Schema $ownerSchema)
3131
$ownerSchema->if = IfClass::schema();
3232
$ownerSchema->then = new Schema();
3333
$ownerSchema->then->required = array(
34-
0 => 'bar',
34+
self::names()->bar,
3535
);
3636
}
3737
}

tests/src/Tmp/Swagger/ApiKeySecurity.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ public static function setUpProperties($properties, Schema $ownerSchema)
6161
$patternProperty = VendorExtension::schema();
6262
$ownerSchema->setPatternProperty('^x-', $patternProperty);
6363
$ownerSchema->required = array(
64-
0 => 'type',
65-
1 => 'name',
66-
2 => 'in',
64+
self::names()->type,
65+
self::names()->name,
66+
self::names()->in,
6767
);
6868
$ownerSchema->setFromRef('#/definitions/apiKeySecurity');
6969
}

tests/src/Tmp/Swagger/BasicAuthenticationSecurity.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public static function setUpProperties($properties, Schema $ownerSchema)
4545
$patternProperty = VendorExtension::schema();
4646
$ownerSchema->setPatternProperty('^x-', $patternProperty);
4747
$ownerSchema->required = array(
48-
0 => 'type',
48+
self::names()->type,
4949
);
5050
$ownerSchema->setFromRef('#/definitions/basicAuthenticationSecurity');
5151
}

tests/src/Tmp/Swagger/BodyParameter.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ public static function setUpProperties($properties, Schema $ownerSchema)
6262
$patternProperty = VendorExtension::schema();
6363
$ownerSchema->setPatternProperty('^x-', $patternProperty);
6464
$ownerSchema->required = array(
65-
0 => 'name',
66-
1 => 'in',
67-
2 => 'schema',
65+
self::names()->name,
66+
self::names()->in,
67+
self::names()->schema,
6868
);
6969
$ownerSchema->setFromRef('#/definitions/bodyParameter');
7070
}

tests/src/Tmp/Swagger/ExternalDocs.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public static function setUpProperties($properties, Schema $ownerSchema)
4343
$ownerSchema->setPatternProperty('^x-', $patternProperty);
4444
$ownerSchema->description = "information about external documentation";
4545
$ownerSchema->required = array(
46-
0 => 'url',
46+
self::names()->url,
4747
);
4848
$ownerSchema->setFromRef('#/definitions/externalDocs');
4949
}

tests/src/Tmp/Swagger/FileSchema.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public static function setUpProperties($properties, Schema $ownerSchema)
8181
$ownerSchema->setPatternProperty('^x-', $patternProperty);
8282
$ownerSchema->description = "A deterministic version of a JSON Schema object.";
8383
$ownerSchema->required = array(
84-
0 => 'type',
84+
self::names()->type,
8585
);
8686
$ownerSchema->setFromRef('#/definitions/fileSchema');
8787
}

tests/src/Tmp/Swagger/Header.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public static function setUpProperties($properties, Schema $ownerSchema)
126126
$patternProperty = VendorExtension::schema();
127127
$ownerSchema->setPatternProperty('^x-', $patternProperty);
128128
$ownerSchema->required = array(
129-
0 => 'type',
129+
self::names()->type,
130130
);
131131
$ownerSchema->setFromRef('#/definitions/header');
132132
}

tests/src/Tmp/Swagger/Info.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ public static function setUpProperties($properties, Schema $ownerSchema)
6262
$ownerSchema->setPatternProperty('^x-', $patternProperty);
6363
$ownerSchema->description = "General information about the API.";
6464
$ownerSchema->required = array(
65-
0 => 'version',
66-
1 => 'title',
65+
self::names()->version,
66+
self::names()->title,
6767
);
6868
$ownerSchema->setFromRef('#/definitions/info');
6969
}

0 commit comments

Comments
 (0)