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)"; } }