Esempio n. 1
0
 public function escape($s)
 {
     switch ($this->compiler->getContentType()) {
         case LatteCompiler::CONTENT_XHTML:
         case LatteCompiler::CONTENT_HTML:
             $context = $this->compiler->getContext();
             switch ($context[0]) {
                 case LatteCompiler::CONTEXT_SINGLE_QUOTED:
                 case LatteCompiler::CONTEXT_DOUBLE_QUOTED:
                     if ($context[1] === LatteCompiler::CONTENT_JS) {
                         $s = "TemplateHelpers::escapeJs({$s})";
                     } elseif ($context[1] === LatteCompiler::CONTENT_CSS) {
                         $s = "TemplateHelpers::escapeCss({$s})";
                     }
                     $quote = $context[0] === LatteCompiler::CONTEXT_DOUBLE_QUOTED ? '' : ', ENT_QUOTES';
                     return "htmlSpecialChars({$s}{$quote})";
                 case LatteCompiler::CONTEXT_COMMENT:
                     return "TemplateHelpers::escapeHtmlComment({$s})";
                 case LatteCompiler::CONTENT_JS:
                 case LatteCompiler::CONTENT_CSS:
                     return 'TemplateHelpers::escape' . ucfirst($context[0]) . "({$s})";
                 default:
                     return "TemplateHelpers::escapeHtml({$s}, ENT_NOQUOTES)";
             }
         case LatteCompiler::CONTENT_XML:
         case LatteCompiler::CONTENT_JS:
         case LatteCompiler::CONTENT_CSS:
         case LatteCompiler::CONTENT_ICAL:
             return 'TemplateHelpers::escape' . ucfirst($this->compiler->getContentType()) . "({$s})";
         case LatteCompiler::CONTENT_TEXT:
             return $s;
         default:
             return "\$template->escape({$s})";
     }
 }
Esempio n. 2
0
 /**
  * New node is found.
  * @return bool
  */
 public function nodeOpened(MacroNode $node)
 {
     if ($this->macros[$node->name][2] && $node->htmlNode) {
         $node->isEmpty = TRUE;
         $this->compiler->setContext(LatteCompiler::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));
 }