/** * @param $textLine */ private function addLineInternal($textLine) { if ($this->activeBlock !== null) { $this->activeBlock[] = $textLine; } else { $this->parsedTemplate->addTextLine($textLine); } }
public function testGlobalNamespaceClassName() { $classname = 'Foo'; $fqcn = \Jig\Converter\ParsedTemplate::getFQCN('', $classname); $this->assertEquals($classname, $fqcn); $result = \Jig\Converter\ParsedTemplate::getClassName($classname); $this->assertEquals($classname, $result); }
/** * @param ParsedTemplate $parsedTemplate * @param array $extraFilters * @return string * @throws JigException */ public function getCodeString(ParsedTemplate $parsedTemplate, $flags = 0) { $filters = $this->filters; if (($flags & self::NO_FILTER) !== 0) { $filters[] = JigConverter::FILTER_NONE; } if (count($filters) === 0) { $filters[] = JigConverter::FILTER_HTML; } $code = "<?php "; if (($flags & self::REMOVE_IF) !== 0) { $code .= substr($this->text, 3); } else { $code .= $this->text; } $code .= " ?>"; $parser = new PHPParser_Parser(new PHPParser_Lexer()); try { $this->statements = $parser->parse($code); } catch (PHPParser_Error $parserError) { $message = sprintf("Failed to parse code: [%s] error is %s", $parserError->getRawLine(), $parserError->getRawMessage()); throw new JigException($message, 0, $parserError); } $printer = new TemplatePrinter($parsedTemplate); $segmentText = $printer->prettyPrint($this->statements); $segmentText = substr($segmentText, 0, strrpos($segmentText, ';')); $filters = array_merge($filters, $printer->getFilters()); if ($printer->hasAssignment() === true) { $this->hasAssignment = true; return $segmentText . "; "; } $this->hasAssignment = false; foreach ($filters as $filterName) { switch ($filterName) { case JigConverter::FILTER_NONE: break 2; case JigConverter::FILTER_HTML: $segmentText = '$this->escaper->escapeHTML(' . $segmentText . ')'; break 2; case JigConverter::FILTER_HTML_ATTR: $segmentText = '$this->escaper->escapeHTMLAttribute(' . $segmentText . ')'; break 2; case JigConverter::FILTER_JS: $segmentText = '$this->escaper->escapeJavascript(' . $segmentText . ')'; break 2; case JigConverter::FILTER_CSS: $segmentText = '$this->escaper->escapeCSS(' . $segmentText . ')'; break 2; case JigConverter::FILTER_URL: $segmentText = '$this->escaper->escapeURLComponent(' . $segmentText . ')'; break 2; } foreach ($parsedTemplate->getPlugins() as $pluginClasname) { $filterList = $pluginClasname::getFilterList(); if (in_array($filterName, $filterList, true) === true) { $filterParam = JigConverter::convertClassnameToParam($pluginClasname); $segmentText = sprintf("\$this->%s->callFilter('%s', %s)", $filterParam, $filterName, $segmentText); continue 2; } } throw new JigException("Template is trying to use filter '{$filterName}', which is not known.", JigException::UNKNOWN_FILTER); } if (($flags & self::NO_OUTPUT) === 0) { $segmentText = "echo " . $segmentText . ""; } if (($flags & self::NO_PHP) === 0) { $segmentText = $segmentText . "; "; } return $segmentText; }