/** * * @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 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(); }
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('}'); }