/** * Compile partials into procedure. * * @access public * @param \JonnyW\PhantomJs\Procedure\ProcedureInterface $procedure * @param \JonnyW\PhantomJs\Procedure\InputInterface $input * @return void */ public function compile(ProcedureInterface $procedure, InputInterface $input) { $cacheKey = sprintf('phantomjs_%s_%s', $input->getType(), md5($procedure->getTemplate())); if ($this->cacheEnabled && $this->cacheHandler->exists($cacheKey)) { $template = $this->cacheHandler->fetch($cacheKey); } if (empty($template)) { $template = $this->renderer->render($procedure->getTemplate(), array('engine' => $this, 'procedure_type' => $input->getType())); $test = clone $procedure; $test->setTemplate($template); $compiled = $test->compile($input); $this->procedureValidator->validate($compiled); if ($this->cacheEnabled) { $this->cacheHandler->save($cacheKey, $template); } } $procedure->setTemplate($template); }