Esempio n. 1
0
	public function escape($s)
	{
		switch ($this->compiler->getContentType()) {
			case NLatteCompiler::CONTENT_XHTML:
			case NLatteCompiler::CONTENT_HTML:
				$context = $this->compiler->getContext();
				switch ($context[0]) {
					case NLatteCompiler::CONTEXT_SINGLE_QUOTED:
					case NLatteCompiler::CONTEXT_DOUBLE_QUOTED:
						if ($context[1] === NLatteCompiler::CONTENT_JS) {
							$s = "NTemplateHelpers::escapeJs($s)";
						} elseif ($context[1] === NLatteCompiler::CONTENT_CSS) {
							$s = "NTemplateHelpers::escapeCss($s)";
						}
						$quote = $context[0] === NLatteCompiler::CONTEXT_DOUBLE_QUOTED ? '' : ', ENT_QUOTES';
						return "htmlSpecialChars($s$quote)";
					case NLatteCompiler::CONTEXT_COMMENT:
						return "NTemplateHelpers::escapeHtmlComment($s)";
					case NLatteCompiler::CONTENT_JS:
					case NLatteCompiler::CONTENT_CSS:
						return 'NTemplateHelpers::escape' . ucfirst($context[0]) . "($s)";
					default:
						return "NTemplateHelpers::escapeHtml($s, ENT_NOQUOTES)";
				}
			case NLatteCompiler::CONTENT_XML:
			case NLatteCompiler::CONTENT_JS:
			case NLatteCompiler::CONTENT_CSS:
			case NLatteCompiler::CONTENT_ICAL:
				return 'NTemplateHelpers::escape' . ucfirst($this->compiler->getContentType()) . "($s)";
			case NLatteCompiler::CONTENT_TEXT:
				return $s;
			default:
				return "\$template->escape($s)";
		}
	}
Esempio n. 2
0
	/**
	 * New node is found.
	 * @return bool
	 */
	public function nodeOpened(NMacroNode $node)
	{
		if ($this->macros[$node->name][2] && $node->htmlNode) {
			$node->isEmpty = TRUE;
			$this->compiler->setContext(NLatteCompiler::CONTEXT_DOUBLE_QUOTED);
			$res = $this->compile($node, $this->macros[$node->name][2]);
			$this->compiler->setContext(NULL);
			if (!$node->attrCode) {
				$node->attrCode = "<?php $res ?>";
			}
		} else {
			$node->isEmpty = !isset($this->macros[$node->name][1]);
			$res = $this->compile($node, $this->macros[$node->name][0]);
			if (!$node->openingCode) {
				$node->openingCode = "<?php $res ?>";
			}
		}
		return $res !== FALSE;
	}
Esempio n. 3
0
	/**
	 * Invokes filter.
	 * @param  string
	 * @return string
	 */
	public function __invoke($s)
	{
		return $this->compiler->compile($this->parser->parse($s));
	}