Example #1
0
 /**
  *
  * @param array $stackFrame
  * @return TokenStream
  */
 public function parseStackFrame(array $stackFrame, VarParser $varParser)
 {
     $builder = new TokenStreamBuilder();
     if (isset($stackFrame['class'])) {
         $reflect = new \ReflectionClass($stackFrame['class']);
         $builder->addKeyword($reflect->getShortName(), $stackFrame['class'])->addPunctuation($stackFrame['type']);
     }
     if (isset($stackFrame['function'])) {
         $args = array();
         foreach ($stackFrame['args'] as $arg) {
             $args[] = $varParser->parse($arg, -1);
         }
         $builder->addKeyword($stackFrame['function'])->addBrace('(');
         if (count($args)) {
             $builder->addStream(array_shift($args));
             while (count($args)) {
                 $builder->addPunctuation(',')->addWhitespece()->addStream(array_shift($args));
             }
         }
         $builder->addBrace(')');
     }
     if (isset($stackFrame['file'])) {
         if (isset($stackFrame['class']) or isset($stackFrame['function'])) {
             $builder->addWhitespece()->addPlainText('in')->addWhitespece();
         }
         $builder->addKeyword(basename($stackFrame['file']), $stackFrame['file']);
         if (isset($stackFrame['line'])) {
             $builder->addWhitespece()->addPlainText('line')->addWhitespece()->addKeyword($stackFrame['line']);
         }
     }
     return $builder->getStream();
 }
Example #2
0
 protected function tokenizeProps(TokenStreamBuilder $builder, $var, $props, $deep, VarParser $parser)
 {
     $keyLen = array_reduce($props, function ($maxLen, $prop) {
         $len = strlen($prop->getName());
         return $len > $maxLen ? $len : $maxLen;
     });
     $builder->addNewLine();
     foreach ($props as $prop) {
         $propName = $prop->getName();
         $propValue = $prop->getValue($var);
         $modifiers = $this->getPropModifiers($prop);
         $diff = $keyLen - strlen($propName . '');
         $builder->addIndention()->addType(implode('', $modifiers))->addWhitespece()->addBrace('[')->addString('"' . $propName . '"')->addBrace(']')->addWhitespece($diff + 1)->addPunctuation('=>')->addWhitespece();
         $stream = $parser->parse($propValue, $deep - 1);
         $builder->addStream($stream);
         $builder->addNewLine();
     }
 }
Example #3
0
 protected function tokenizeItems(TokenStreamBuilder $builder, $var, $deep, VarParser $parser)
 {
     $keyLen = array_reduce(array_keys($var), function ($maxLen, $key) {
         $len = strlen($key . '') + (is_string($key) ? 2 : 0);
         return $len > $maxLen ? $len : $maxLen;
     });
     $builder->addWhitespece()->addBrace('{')->addNewLine();
     foreach ($var as $key => $value) {
         $builder->addIndention();
         //            $builder->addBrace('[');
         if (is_string($key)) {
             $builder->addString('"' . $key . '"');
         } else {
             $builder->addNumber($key);
         }
         //            $builder->addBrace(']');
         $diff = $keyLen - strlen($key . '') - (is_string($key) ? 2 : 0);
         $builder->addWhitespece($diff + 1)->addPunctuation('=>')->addWhitespece();
         $stream = $parser->parse($value, $deep - 1);
         $builder->addStream($stream);
         $builder->addNewLine();
     }
     $builder->addBrace('}');
 }