/** * * @param mixed $var * @param integer $deep * @param VarParser $parser * @return TokenStream */ public function tokenize($var, $deep, VarParser $parser) { $builder = new TokenStreamBuilder(); if ($var == '' or $deep >= $this->maxDeep) { $builder->addString('"' . $var . '"'); return $builder->getStream(); } $lines = $lines = array_map('trim', explode("\n", $var)); $firstLine = array_shift($lines); if ($this->maxLen and strlen($firstLine) > $this->maxLen) { $firstLine = substr($firstLine, 0, $this->maxLen) . '…'; } $builder->addString('"' . $firstLine . '"', implode("\n", $lines)); return $builder->getStream(); }
/** * * @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(); }
/** * * @param mixed $var * @param integer $deep * @param VarParser $parser * @return TokenStream */ public function tokenize($var, $deep, VarParser $parser) { $builder = new TokenStreamBuilder(); switch (gettype($var)) { case 'object': if ($deep >= 0) { $builder->addKeyword(get_class($var))->addWhitespece()->addBrace('{}'); } else { $reflect = new \ReflectionClass($var); $builder->addKeyword($reflect->getShortName())->addWhitespece()->addBrace('{}'); } break; case 'array': $builder->addType('array')->addBrace('(')->addNumber(count($var))->addBrace(')')->addWhitespece()->addBrace('{'); if (count($var)) { $builder->addKeyword('…'); } $builder->addBrace('{}'); break; case 'NULL': $builder->addKeyword('null'); break; case 'boolean': $builder->addKeyword($var ? 'true' : 'false'); break; case 'integer': case 'double': $builder->addNumber($var); break; case 'string': $builder->addString('"' . $var . '"'); break; } return $builder->getStream(); }
/** * * @param mixed $var * @param integer $deep * @param VarParser $parser * @return TokenStream */ public function tokenize($var, $deep, VarParser $parser) { $builder = new TokenStreamBuilder(); $count = count($var); $builder->addType('array')->addBrace('(')->addNumber($count)->addBrace(')'); // if ($deep < 0) { // return $builder->getStream(); // } if (!$count or $deep < 0) { $builder->addWhitespece()->addBrace('{'); if ($count) { $builder->addKeyword('…'); } $builder->addBrace('}'); return $builder->getStream(); } $this->tokenizeItems($builder, $var, $deep, $parser); return $builder->getStream(); }
/** * * @param mixed $var * @param integer $deep * @param VarParser $parser * @return TokenStream */ public function tokenize($var, $deep, VarParser $parser) { $builder = new TokenStreamBuilder(); $props = $this->getProps($var); $reflect = new \ReflectionClass($var); $builder->addKeyword($reflect->getShortName(), get_class($var)); if (false !== ($asString = $this->getAsString($var, $deep))) { $builder->addBrace('(')->addStream($parser->parse($asString, -1))->addBrace(')'); } if ($deep < 0) { return $builder->getStream(); } $builder->addWhitespece()->addBrace('{'); if ($deep > 0) { $this->tokenizeProps($builder, $var, $props, $deep, $parser); } elseif (count($props)) { $builder->addKeyword('…'); } $builder->addBrace('}'); return $builder->getStream(); }