/** * @inheritdoc */ public function parse(string $element) : FlagBag { foreach ($this->parsers as $parser) { if ($parser->canParse($element)) { return $parser->parse($element); } } throw FlagParserExceptionFactory::createForNoParserFoundForElement($element); }
/** * @inheritdoc */ public function denormalize(FixtureBag $builtFixtures, string $className, string $unparsedFixtureId, array $specs, FlagBag $flags) : FixtureBag { if (null === $this->flagParser) { throw FlagParserExceptionFactory::createForExpectedMethodToBeCalledIfHasAParser(__METHOD__); } $idFlags = $this->flagParser->parse($unparsedFixtureId); $fixture = new SimpleFixture($idFlags->getKey(), $className, new SpecificationBag(null, new PropertyBag(), new MethodCallBag())); $fixture = $fixture->withSpecs($this->specsDenormalizer->denormalize($fixture, $this->flagParser, $specs)); return $builtFixtures->with(new TemplatingFixture(new SimpleFixtureWithFlags($fixture, $idFlags->mergeWith($flags)))); }
/** * @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; }
/** * @inheritdoc */ public function denormalize(FixtureBag $builtFixtures, string $className, string $fixtureId, array $specs, FlagBag $flags) : FixtureBag { try { return $this->collectionDenormalizer->denormalize($builtFixtures, $className, $fixtureId, $specs, $flags); } catch (InvalidScopeException $exception) { // Continue to fallback on a more conventional way } 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(); $fixtureIds = $this->buildIds($fixtureId); foreach ($fixtureIds as $fixtureId => $valueForCurrent) { $builtFixtures = $this->denormalizeFixture($builtFixtures, $className, $fixtureId, $specs, $flags, (string) $valueForCurrent); } return $builtFixtures; }