コード例 #1
0
ファイル: RawString.php プロジェクト: agpmedia/artifex
 public function execute(Runtime $vm)
 {
     $text = preg_replace_callback("/__(@?[a-z][a-z0-9_]*?)__/i", function ($var) use($vm) {
         if ($var[1][0] == '@') {
             $var[1] = substr($var[1], 1);
             $varValue = true;
         }
         $value = $vm->get($var[1]);
         if (is_null($value)) {
             /* variable is not found, we ignore it */
             return $var[0];
         }
         $result = $vm->getValue($value);
         if (!empty($varValue)) {
             $result = var_export($result, true);
         }
         if (is_object($result) && is_callable(array($result, '__toString'))) {
             $result = (string) $result;
         }
         if (!is_scalar($result)) {
             throw new \RuntimeException("Only scalar values may be replaced. Use @ to get the string representation.");
         }
         return $result;
     }, $this->args);
     if ($this->isString()) {
         return $vm->printIndented($text, $this);
     }
     return $vm->doPrint($text);
 }
コード例 #2
0
ファイル: Exec.php プロジェクト: agpmedia/artifex
 public function functionPrint(array $args, Runtime $vm)
 {
     return $vm->doPrint($args[0]);
 }