public function SchemataSchemaNormalizer::normalize in Schemata 8
Same name in this branch
- 8 schemata_json_schema/src/Normalizer/jsonapi/SchemataSchemaNormalizer.php \Drupal\schemata_json_schema\Normalizer\jsonapi\SchemataSchemaNormalizer::normalize()
- 8 schemata_json_schema/src/Normalizer/json/SchemataSchemaNormalizer.php \Drupal\schemata_json_schema\Normalizer\json\SchemataSchemaNormalizer::normalize()
- 8 schemata_json_schema/src/Normalizer/hal/SchemataSchemaNormalizer.php \Drupal\schemata_json_schema\Normalizer\hal\SchemataSchemaNormalizer::normalize()
Overrides SchemataSchemaNormalizer::normalize
File
- schemata_json_schema/
src/ Normalizer/ hal/ SchemataSchemaNormalizer.php, line 35
Class
- SchemataSchemaNormalizer
- Extends the base SchemataSchema normalizer for JSON with HAL+JSON elements.
Namespace
Drupal\schemata_json_schema\Normalizer\halCode
public function normalize($entity, $format = NULL, array $context = []) {
// Create the array of normalized fields, starting with the URI.
/* @var $entity \Drupal\schemata\Schema\SchemaInterface */
$normalized = parent::normalize($entity, $format, $context);
// HAL link schema definitions based on HyperSchema.org.
// @see http://hyperschema.org/mediatypes/hal
$items = [];
if (!empty($normalized['properties']['_links'])) {
$items = $normalized['properties']['_links'];
}
$items['self'] = [
'$ref' => '#/definitions/linkObject',
];
$items['type'] = [
'$ref' => '#/definitions/linkObject',
];
$normalized['properties']['_links'] = [
'title' => 'HAL Links',
'description' => 'Object of links with the rels as the keys',
'type' => 'object',
'properties' => $items,
];
if (!empty($normalized['properties']['_embedded'])) {
$items = $normalized['properties']['_embedded'];
$normalized['properties']['_embedded'] = [
'title' => 'HAL Embedded Resource',
'description' => 'An embedded HAL resource',
'type' => 'object',
'properties' => $items,
];
}
$normalized['definitions']['linkArray'] = [
'title' => 'HAL Link Array',
'description' => 'An array of linkObjects of the same link relation',
'type' => 'array',
'items' => [
'$ref' => '#/definitions/linkObject',
],
];
// Drupal core does not currently use several HAL link attributes.
// If they are added entries should be added here.
$normalized['definitions']['linkObject'] = [
'title' => 'HAL Link Object',
'description' => 'An object with link information.',
'type' => 'object',
'properties' => [
'name' => [
'title' => 'Name',
'description' => 'Name of a resource, link, action, etc.',
'type' => 'string',
],
'title' => [
'title' => 'Title',
'description' => 'A title for a resource, link, action, etc.',
'type' => 'string',
],
'href' => [
'title' => 'HREF',
'description' => 'A hyperlink URL.',
'type' => 'string',
'format' => 'uri',
],
],
'required' => [
'href',
],
];
return $normalized;
}