コード例 #1
0
 /**
  * @param ParserInterface $parser
  * @param string          $value
  *
  * @return mixed|ValueInterface
  */
 private function parseValue(ParserInterface $parser, string $value)
 {
     try {
         return $parser->parse($value);
     } catch (ParseThrowable $throwable) {
         throw DenormalizerExceptionFactory::createForUnparsableValue($value, 0, $throwable);
     }
 }
コード例 #2
0
ファイル: StringMergerParser.php プロジェクト: nelmio/alice
 /**
  * Uses the decorated parser to parse the value and then walk through the list of values to merge two successive
  * strings.
  *
  * {@inheritdoc}
  */
 public function parse(string $value)
 {
     $parsedValue = $this->parser->parse($value);
     if (false === $parsedValue instanceof ListValue) {
         return $parsedValue;
     }
     $mergedValues = array_reduce($parsedValue->getValue(), [$this, 'mergeStrings'], $initial = []);
     return 1 === count($mergedValues) ? $mergedValues[0] : new ListValue($mergedValues);
 }
コード例 #3
0
 private function parseElements(ParserInterface $parser, string $elements)
 {
     if ('' === $elements) {
         return [];
     }
     $elements = preg_split('/\\s*,\\s*/', $elements);
     foreach ($elements as $index => $argument) {
         $elements[$index] = $parser->parse(trim($argument));
     }
     return $elements;
 }
コード例 #4
0
ファイル: FunctionTokenParser.php プロジェクト: nelmio/alice
 private function parseArguments(ParserInterface $parser, string $arguments) : array
 {
     if ('' === $arguments) {
         return [];
     }
     $arguments = preg_split('/\\s*,\\s*/', $arguments);
     foreach ($arguments as $index => $argument) {
         $argument = trim($argument);
         if (is_string($argument) && preg_match('/^\'(.*)\'$|^"(.*)"$/', $argument, $match)) {
             $argument = array_key_exists(2, $match) ? $match[2] : $match[1];
         }
         $argument = $parser->parse($argument);
         $arguments[$index] = $argument;
     }
     return $arguments;
 }
コード例 #5
0
 /**
  * @dataProvider provideValues
  */
 public function testTestParseValues(string $value, $expected)
 {
     try {
         $actual = $this->parser->parse($value);
         if (null === $expected) {
             $this->fail(sprintf('Expected exception to be thrown for "%s", got "%s" instead.', $value, var_export($actual, true)));
         }
     } catch (\InvalidArgumentException $exception) {
         if (null === $expected) {
             return;
         }
         throw $exception;
     } catch (ExpressionLanguageParseThrowable $exception) {
         if (null === $expected) {
             return;
         }
         throw $exception;
     }
     $this->assertEquals($expected, $actual, var_export($actual, true));
 }