/**
* @inheritdoc
*/
public function denormalize(FixtureBag $builtFixtures, string $className, string $fixtureId, array $specs, FlagBag $flags) : FixtureBag
{
if (null === $this->denormalizer) {
throw DenormalizerExceptionFactory::createDenormalizerNotFoundUnexpectedCall(__METHOD__);
}
if (null === $this->parser) {
throw FlagParserExceptionFactory::createForExpectedMethodToBeCalledIfHasAParser(__METHOD__);
}
$flags = $this->parser->parse($fixtureId)->mergeWith($flags, false);
$fixtureId = $flags->getKey();
/**
* @var FixtureInterface $tempFixture
* @var FixtureBag $builtFixtures
*/
list($tempFixture, $builtFixtures) = $this->denormalizeTemporaryFixture($builtFixtures, $className, $specs, $flags);
$fixtureIds = $this->buildIds($fixtureId);
foreach ($fixtureIds as $fixtureId => $valueForCurrent) {
$builtFixtures = $builtFixtures->with(new TemplatingFixture(new SimpleFixtureWithFlags(new SimpleFixture($fixtureId, $tempFixture->getClassName(), $tempFixture->getSpecs(), (string) $valueForCurrent), $flags->withKey($fixtureId))));
}
return $builtFixtures;
}