Joli\Jane\Guesser\Guess\PatternMultipleType::createNormalizationStatement PHP Method

createNormalizationStatement() public method

(@inheritDoc}
public createNormalizationStatement ( Joli\Jane\Generator\Context\Context $context, PhpParser\Node\Expr $input )
$context Joli\Jane\Generator\Context\Context
$input PhpParser\Node\Expr
    public function createNormalizationStatement(Context $context, Expr $input)
    {
        $valuesVar = new Expr\Variable($context->getUniqueVariableName('values'));
        $statements = [new Expr\Assign($valuesVar, $this->createNormalizationArrayValueStatement())];
        $loopValueVar = new Expr\Variable($context->getUniqueVariableName('value'));
        $loopKeyVar = $this->createLoopKeyStatement($context);
        $loopStatements = [];
        foreach ($this->types as $pattern => $type) {
            list($typeStatements, $typeOutput) = $type->createNormalizationStatement($context, $loopValueVar);
            $loopStatements = array_merge($loopStatements, [new Stmt\If_(new Expr\BinaryOp\BooleanAnd(new Expr\FuncCall(new Name('preg_match'), [new Arg(new Expr\ConstFetch(new Name("'/" . str_replace('/', '\\/', $pattern) . "/'"))), new Arg($loopKeyVar)]), $type->createNormalizationConditionStatement($loopValueVar)), ['stmts' => array_merge($typeStatements, [new Expr\Assign(new Expr\PropertyFetch($valuesVar, $loopKeyVar), $typeOutput), new Stmt\Continue_()])])]);
        }
        $statements[] = new Stmt\Foreach_($input, $loopValueVar, ['keyVar' => $loopKeyVar, 'stmts' => $loopStatements]);
        return [$statements, $valuesVar];
    }