name: YamlFileLoader
class_comment: "# * YAML File Loader.\n# *\n# * @author K\xE9vin Dunglas <dunglas@gmail.com>"
dependencies:
- name: InvalidPropertyPathException
  type: class
  source: Symfony\Component\PropertyAccess\Exception\InvalidPropertyPathException
- name: PropertyPath
  type: class
  source: Symfony\Component\PropertyAccess\PropertyPath
- name: MappingException
  type: class
  source: Symfony\Component\Serializer\Exception\MappingException
- name: AttributeMetadata
  type: class
  source: Symfony\Component\Serializer\Mapping\AttributeMetadata
- name: ClassDiscriminatorMapping
  type: class
  source: Symfony\Component\Serializer\Mapping\ClassDiscriminatorMapping
- name: ClassMetadataInterface
  type: class
  source: Symfony\Component\Serializer\Mapping\ClassMetadataInterface
- name: Parser
  type: class
  source: Symfony\Component\Yaml\Parser
- name: Yaml
  type: class
  source: Symfony\Component\Yaml\Yaml
properties: []
methods:
- name: getMappedClasses
  visibility: public
  parameters: []
  comment: "# * YAML File Loader.\n# *\n# * @author K\xE9vin Dunglas <dunglas@gmail.com>\n\
    # */\n# class YamlFileLoader extends FileLoader\n# {\n# private ?Parser $yamlParser\
    \ = null;\n# \n# /**\n# * An array of YAML class descriptions.\n# */\n# private\
    \ ?array $classes = null;\n# \n# public function loadClassMetadata(ClassMetadataInterface\
    \ $classMetadata): bool\n# {\n# if (!$this->classes ??= $this->getClassesFromYaml())\
    \ {\n# return false;\n# }\n# \n# if (!isset($this->classes[$classMetadata->getName()]))\
    \ {\n# return false;\n# }\n# \n# $yaml = $this->classes[$classMetadata->getName()];\n\
    # \n# if (isset($yaml['attributes']) && \\is_array($yaml['attributes'])) {\n#\
    \ $attributesMetadata = $classMetadata->getAttributesMetadata();\n# \n# foreach\
    \ ($yaml['attributes'] as $attribute => $data) {\n# if (isset($attributesMetadata[$attribute]))\
    \ {\n# $attributeMetadata = $attributesMetadata[$attribute];\n# } else {\n# $attributeMetadata\
    \ = new AttributeMetadata($attribute);\n# $classMetadata->addAttributeMetadata($attributeMetadata);\n\
    # }\n# \n# if (isset($data['groups'])) {\n# if (!\\is_array($data['groups']))\
    \ {\n# throw new MappingException(\\sprintf('The \"groups\" key must be an array\
    \ of strings in \"%s\" for the attribute \"%s\" of the class \"%s\".', $this->file,\
    \ $attribute, $classMetadata->getName()));\n# }\n# \n# foreach ($data['groups']\
    \ as $group) {\n# if (!\\is_string($group)) {\n# throw new MappingException(\\\
    sprintf('Group names must be strings in \"%s\" for the attribute \"%s\" of the\
    \ class \"%s\".', $this->file, $attribute, $classMetadata->getName()));\n# }\n\
    # \n# $attributeMetadata->addGroup($group);\n# }\n# }\n# \n# if (isset($data['max_depth']))\
    \ {\n# if (!\\is_int($data['max_depth'])) {\n# throw new MappingException(\\sprintf('The\
    \ \"max_depth\" value must be an integer in \"%s\" for the attribute \"%s\" of\
    \ the class \"%s\".', $this->file, $attribute, $classMetadata->getName()));\n\
    # }\n# \n# $attributeMetadata->setMaxDepth($data['max_depth']);\n# }\n# \n# if\
    \ (isset($data['serialized_name'])) {\n# if (!\\is_string($data['serialized_name'])\
    \ || '' === $data['serialized_name']) {\n# throw new MappingException(\\sprintf('The\
    \ \"serialized_name\" value must be a non-empty string in \"%s\" for the attribute\
    \ \"%s\" of the class \"%s\".', $this->file, $attribute, $classMetadata->getName()));\n\
    # }\n# \n# $attributeMetadata->setSerializedName($data['serialized_name']);\n\
    # }\n# \n# if (isset($data['serialized_path'])) {\n# try {\n# $attributeMetadata->setSerializedPath(new\
    \ PropertyPath((string) $data['serialized_path']));\n# } catch (InvalidPropertyPathException)\
    \ {\n# throw new MappingException(\\sprintf('The \"serialized_path\" value must\
    \ be a valid property path in \"%s\" for the attribute \"%s\" of the class \"\
    %s\".', $this->file, $attribute, $classMetadata->getName()));\n# }\n# }\n# \n\
    # if (isset($data['ignore'])) {\n# if (!\\is_bool($data['ignore'])) {\n# throw\
    \ new MappingException(\\sprintf('The \"ignore\" value must be a boolean in \"\
    %s\" for the attribute \"%s\" of the class \"%s\".', $this->file, $attribute,\
    \ $classMetadata->getName()));\n# }\n# \n# $attributeMetadata->setIgnore($data['ignore']);\n\
    # }\n# \n# foreach ($data['contexts'] ?? [] as $line) {\n# $groups = $line['groups']\
    \ ?? [];\n# \n# if ($context = $line['context'] ?? false) {\n# $attributeMetadata->setNormalizationContextForGroups($context,\
    \ $groups);\n# $attributeMetadata->setDenormalizationContextForGroups($context,\
    \ $groups);\n# }\n# \n# if ($context = $line['normalization_context'] ?? false)\
    \ {\n# $attributeMetadata->setNormalizationContextForGroups($context, $groups);\n\
    # }\n# \n# if ($context = $line['denormalization_context'] ?? false) {\n# $attributeMetadata->setDenormalizationContextForGroups($context,\
    \ $groups);\n# }\n# }\n# }\n# }\n# \n# if (isset($yaml['discriminator_map']))\
    \ {\n# if (!isset($yaml['discriminator_map']['type_property'])) {\n# throw new\
    \ MappingException(\\sprintf('The \"type_property\" key must be set for the discriminator\
    \ map of the class \"%s\" in \"%s\".', $classMetadata->getName(), $this->file));\n\
    # }\n# \n# if (!isset($yaml['discriminator_map']['mapping'])) {\n# throw new MappingException(\\\
    sprintf('The \"mapping\" key must be set for the discriminator map of the class\
    \ \"%s\" in \"%s\".', $classMetadata->getName(), $this->file));\n# }\n# \n# $classMetadata->setClassDiscriminatorMapping(new\
    \ ClassDiscriminatorMapping(\n# $yaml['discriminator_map']['type_property'],\n\
    # $yaml['discriminator_map']['mapping']\n# ));\n# }\n# \n# return true;\n# }\n\
    # \n# /**\n# * Return the names of the classes mapped in this file.\n# *\n# *\
    \ @return string[]"
- name: getClassesFromYaml
  visibility: private
  parameters: []
  comment: null
traits:
- Symfony\Component\PropertyAccess\Exception\InvalidPropertyPathException
- Symfony\Component\PropertyAccess\PropertyPath
- Symfony\Component\Serializer\Exception\MappingException
- Symfony\Component\Serializer\Mapping\AttributeMetadata
- Symfony\Component\Serializer\Mapping\ClassDiscriminatorMapping
- Symfony\Component\Serializer\Mapping\ClassMetadataInterface
- Symfony\Component\Yaml\Parser
- Symfony\Component\Yaml\Yaml
interfaces: []