php Latte-PhpWriter类(方法)实例源码

下面列出了php Latte-PhpWriter 类(方法)源码代码实例,从而了解它的用法。

作者:TomasVotrub    项目:applicatio   
/**
  * {ifCurrent destination [,] [params]}
  */
 public function macroIfCurrent(MacroNode $node, PhpWriter $writer)
 {
     if ($node->modifiers) {
         throw new CompileException('Modifiers are not allowed here.');
     }
     return $writer->write($node->args ? 'if ($_presenter->isLinkCurrent(%node.word, %node.array?)) {' : 'if ($_presenter->getLastCreatedRequestFlag("current")) {');
 }

作者:zaxcm    项目:framewor   
public function macroSecured(Latte\MacroNode $node, Latte\PhpWriter $writer)
 {
     if ($node->prefix === $node::PREFIX_TAG) {
         return $writer->write($node->htmlNode->closing ? 'if(array_pop($_l->secured)){' : 'if($_l->secured[] = $acl->isUserAllowedTo(%node.args)) {');
     }
     return $writer->write('if ($acl->isUserAllowedTo(%node.args)) {');
 }

作者:webchemistr    项目:component-macr   
/**
  * @param MacroNode $node
  * @param PhpWriter $writer
  * @param string $else
  * @param bool $comma
  * @return string
  */
 private function modify(MacroNode $node, PhpWriter $writer, $else = '', $comma = TRUE)
 {
     if (!$node->modifiers) {
         return $else;
     }
     return $writer->write(($comma ? ', ' : '') . 'function ($s, $type) { $_fi = new LR\\FilterInfo($type); return %modifyContent($s); }');
 }

作者:lawondys    项目:image   
public function macroSrc(PhpWriter $writer)
 {
     $code = self::getCode('%node.array');
     // in macro must go result on output
     $code[] = 'echo %escape(%modify($link));';
     return $writer->write(implode('', $code));
 }

作者:tomasstrejce    项目:Translatio   
/**
  * Extracts translation messages from a file to the catalogue.
  *
  * @param string           $file The path to look into
  * @param MessageCatalogue $catalogue The catalogue
  */
 public function extractFile($file, MessageCatalogue $catalogue)
 {
     $buffer = NULL;
     $parser = new Parser();
     $parser->shortNoEscape = TRUE;
     foreach ($tokens = $parser->parse(file_get_contents($file)) as $token) {
         if ($token->type !== $token::MACRO_TAG || !in_array($token->name, array('_', '/_'), TRUE)) {
             if ($buffer !== NULL) {
                 $buffer .= $token->text;
             }
             continue;
         }
         if ($token->name === '/_') {
             $catalogue->set(($this->prefix ? $this->prefix . '.' : '') . $buffer, $buffer);
             $buffer = NULL;
         } elseif ($token->name === '_' && empty($token->value)) {
             $buffer = '';
         } else {
             $args = new MacroTokens($token->value);
             $writer = new PhpWriter($args, $token->modifiers);
             $message = $writer->write('%node.word');
             if (in_array(substr(trim($message), 0, 1), array('"', '\''), TRUE)) {
                 $message = substr(trim($message), 1, -1);
             }
             $catalogue->set(($this->prefix ? $this->prefix . '.' : '') . $message, $message);
         }
     }
 }

作者:iPubliku    项目:phon   
/**
  * @param MacroNode $node
  * @param PhpWriter $writer
  *
  * @return string
  *
  * @throws Latte\CompileException
  */
 public function macroPhone(MacroNode $node, PhpWriter $writer)
 {
     $arguments = self::prepareMacroArguments($node->args);
     if ($arguments['phone'] === NULL) {
         throw new Latte\CompileException("Please provide phone number.");
     }
     return $writer->write('echo %escape($template->getPhoneNumberService()->format("' . $arguments['phone'] . '", "' . $arguments['country'] . '", ' . $arguments['format'] . '))');
 }

作者:manGowe    项目:MangoPressTemplatin   
public function macroSet(MacroNode $node, PhpWriter $writer)
 {
     $parts = Strings::replace($node->args, '~(\\s*(=>|=)\\s*|\\s+)~', '~~~', 1);
     $parts = Strings::split($parts, '/~~~/');
     $variable = $parts[0];
     $rest = $parts[1];
     return $writer->write($variable . ' = %modify(' . $rest . ')');
 }

作者:harmi    项目:image   
/**
     * {imgLink $img [type]}
     * @param Latte\MacroNode $node
     * @param Latte\PhpWriter $writer
     * @return string
     */
    public function macroImgLink(Latte\MacroNode $node, Latte\PhpWriter $writer)
    {
        list($img, $type) = $this->getImageFromNode($node);
        return '
			$args = [' . ($type ? "'type' => '{$type}', " : NULL) . "'storage' => " . '$imageStorage' . ($node->args ? ', ' . $writer->formatArgs() : NULL) . '];
			echo ' . get_class($this) . '::imgLink(' . $img . ', $args);
		';
    }

作者:blitzi    项目:CM   
public function macroRowCol(MacroNode $node, PhpWriter $writer)
 {
     $name = $node->tokenizer->fetchWord();
     if ($name === false) {
         throw new CompileException("Missing Column name in {{$node->name}}.");
     }
     $node->tokenizer->reset();
     return $writer->write("\n            \$rowClassName = 'row';\n            \$args = %node.array;\n            if (array_key_exists('row', \$args)) {\n                \$rowClassName = \$args['row'];\n            }\n            \n            echo '<div class=\"' . \$rowClassName . '\">';\n            echo '<div class=\"' .%node.word. '\">';\n        ");
 }

作者:webchemistr    项目:image   
/**
  * @param Latte\MacroNode $node
  * @param Latte\PhpWriter $writer
  * @return string
  */
 public function attrImg(Latte\MacroNode $node, Latte\PhpWriter $writer)
 {
     if ($node->htmlNode->name === 'a') {
         $attr = 'href=';
     } else {
         $attr = 'src=';
     }
     return $writer->write('echo \' ' . $attr . '"\' . $imageStorage->get(%node.args)->getLink() . \'"\'');
 }

作者:nedrys    项目:latte-template-macrose   
/**
  * Add support of placeholder replacement into the standart translator macro
  *
  * @param MacroNode $node
  * @param PhpWriter $writer
  * @return strings
  */
 public function macroTranslate(MacroNode $node, PhpWriter $writer)
 {
     if ($node->closing) {
         return $writer->write('echo %modify($template->translate(ob_get_clean()))');
     } elseif ($node->isEmpty = $node->args !== '') {
         return $writer->write('echo %modify(Nedryse\\Latte\\Macros\\TemplateMacroSet::template(call_user_func_array(array($template, \'translate\'), array_merge(array(%node.word), $_args = ((is_array(current($_args = %node.array)) === TRUE) ? current($_args) : $_args))), array_merge($template->getParameters(), get_defined_vars(), $_args)))');
     } else {
         return 'ob_start()';
     }
 }

作者:baz    项目:nette-features-extensio   
/**
  * {ifEnabled ...}
  */
 public function macroIfNotEnabled(MacroNode $node, PhpWriter $writer)
 {
     if ($node->data->capture = $node->args === '') {
         return 'ob_start()';
     }
     if ($node->prefix === $node::PREFIX_TAG) {
         return $writer->write($node->htmlNode->closing ? 'if (array_pop($_l->ifs)) {' : 'if ($_l->ifs[] = (%node.args)) {');
     }
     return $writer->write('if (!call_user_func($this->filters->enabled, %node.word, %node.array?)) {');
 }

作者:racinma    项目:form   
/**
  * {input ...}
  */
 public function macroInput(MacroNode $node, PhpWriter $writer)
 {
     $class = get_class($this);
     $words = $node->tokenizer->fetchWords();
     if (!$words) {
         throw new CompileException("Missing name in {{$node->name}}.");
     }
     $name = array_shift($words);
     return $writer->write(($name[0] === '$' ? '$_input = is_object(%0.word) ? %0.word : $_form[%0.word];' : '$_input = $_form[%0.word];') . 'echo ' . $class . '::input($_input->%1.raw->addAttributes(%node.array), $_input)', $name, $words ? 'getControlPart(' . implode(', ', array_map(array($writer, 'formatWord'), $words)) . ')' : 'getControl()');
 }

作者:mike22    项目:n-form   
/**
  * Render button caption
  * @author Pavel Železný <info@pavelzelezny.cz>
  * @param \Latte\MacroNode $node
  * @param \Latte\PhpWriter $writer
  * @return string
  */
 public function macroCaption(MacroNode $node, PhpWriter $writer)
 {
     if ($node->args !== '') {
         $code = '$_input = (is_object(%node.word) ? %node.word : $_form[%node.word]);';
         $code .= 'echo $_input->getControl()->caption;';
         $code .= 'unset($_input);';
     } else {
         $code = 'echo isset($_buttonCaption) ? $_buttonCaption : NULL;';
     }
     return $writer->write($code);
 }

作者:FreezyBe    项目:Editroubl   
/**
  * @param MacroNode $node
  * @param PhpWriter $writer
  * @throws CompileException
  */
 public function macroEditrouble(MacroNode $node, PhpWriter $writer)
 {
     $name = $node->tokenizer->fetchWord();
     if ($name === false) {
         throw new CompileException("Missing editrouble name in {{$node->name}}.");
     }
     $args = $writer->write('%node.args');
     $attrs = " data-editrouble='\" . json_encode([" . ($args ? $args . ',' : '') . "'name' => \"" . $name . "\"]) . \"'";
     preg_match('#(^.*?>)(.*)(<.*\\z)#s', $node->content, $parts);
     $node->content = '<?php echo \'' . substr($parts[1], 0, -1) . '\' . ' . '($_presenter->editroubleConnector->checkPermission() ? ' . '"' . $attrs . '" : \'\') . \'>\'; ' . $writer->write('echo $_presenter->editroubleConnector->getContent("' . $name . '", [%node.args])') . ' ?>' . $parts[3];
 }

作者:venn    项目:asset   
public function filter(MacroNode $node, PhpWriter $writer)
 {
     $files = array();
     while ($file = $node->tokenizer->fetchWord()) {
         $files[] = $this->wwwDir . '/' . ($this->pathResolver ? $this->pathResolver->expandResource($file) : $file);
     }
     if (!count($files)) {
         throw new CompileException('Missing file name in {js}');
     }
     eval('$args = ' . $writer->formatArray() . ';');
     return '$_control[\'js\']->render(\'' . join('\', \'', $files) . '\', array(\'config\' => ' . var_export($args, true) . '));';
 }

作者:librett    项目:link-builde   
/**
     * overwritten default link macro, added fallback to link generator when neither control or presenter is available
     *
     * @param MacroNode
     * @param PhpWriter
     * @return string
     */
    public function macroLink(MacroNode $node, PhpWriter $writer)
    {
        return $writer->write('
		$_currentLinkBuilder = NULL;
		if(isset(' . ($node->name === 'plink' ? '$_presenter' : '$_control') . ')) {
			$_currentLinkBuilder = ' . ($node->name === 'plink' ? '$_presenter' : '$_control') . ';
		} else {
			$_currentLinkBuilder = $template->global->linkBuilder;
		}
		echo %escape(%modify($_currentLinkBuilder->link(%node.word, %node.array?)));
		');
    }

作者:Kalive    项目:gettext-latt   
public function ettext(MacroNode $node, PhpWriter $writer)
 {
     $this->setFunction($node->name);
     $args = self::stringToArgs($node->args);
     $argsGettext = $this->getGettextArgs($args);
     $out = $this->function . '(' . implode(', ', $argsGettext) . ')';
     $key = (int) (substr($this->function, 0, 1) == 'd');
     $diff = $this->foundReplace($args[$key]);
     if ($diff) {
         $out = 'sprintf(' . $out . ', ' . implode(', ', array_slice($args, $diff)) . ')';
     }
     $this->function = NULL;
     return $writer->write('echo %modify(' . $out . ')');
 }

作者:h4kun    项目:gettext-latt   
public function ettext(\Latte\MacroNode $node, \Latte\PhpWriter $writer)
 {
     $this->setFunction($node->name);
     $args = h4kuna\Template\LattePhpTokenizer::toArray($node);
     $argsGettext = $this->getGettextArgs($args);
     $out = $this->function . '(' . implode(', ', $argsGettext) . ')';
     $key = (int) (substr($this->function, 0, 1) == 'd');
     $diff = $this->foundReplace($args[$key]);
     if ($diff) {
         $out = 'sprintf(' . $out . ', ' . implode(', ', array_slice($args, $diff)) . ')';
     }
     $this->function = NULL;
     return $writer->write('echo %modify(' . $out . ')');
 }

作者:webchemistr    项目:forms-wizar   
/**
  * @param MacroNode $node
  * @param PhpWriter $writer
  * @return string
  * @throws CompileException
  */
 public function wizardStart(MacroNode $node, PhpWriter $writer)
 {
     $words = $node->tokenizer->fetchWords();
     if (!$words) {
         throw new CompileException('Missing control name in {wizard}');
     }
     $name = $writer->formatWord($words[0]);
     $method = isset($words[1]) ? ucfirst($words[1]) : '';
     $method = Strings::match($method, '#^\\w*\\z#') ? "render{$method}" : "{\"render{$method}\"}";
     $param = $writer->formatArray();
     if (!Strings::contains($node->args, '=>')) {
         $param = substr($param, $param[0] === '[' ? 1 : 6, -1);
         // removes array() or []
     }
     return ($name[0] === '$' ? "if (is_object({$name})) \$_l->tmp = {$name}; else " : '') . '$_l->tmp = $_control->getComponent(' . $name . '); ' . 'if (!$_l->tmp instanceof WebChemistry\\Forms\\Controls\\IWizard) throw new \\Exception(\'Wizard must be instance of WebChemistry\\Forms\\Controls\\IWizard\');' . '$wizard = new WebChemistry\\Forms\\Controls\\Wizard\\Facade($_l->tmp);';
 }


问题


面经


文章

微信
公众号

扫码关注公众号