protected function _make_internal_message(\Reflector $reflection) {
		$type = false;
		$name = false;
		$location = false;
		
		if($reflection instanceof \ReflectionFunction) {
			$type = 'function';
			$name = $reflection->name;
		}
		elseif($reflection instanceof \ReflectionClass) {
			$type = 'class';
			$name = $reflection->name;
		}
		elseif($reflection instanceof \ReflectionMethod) {
			$type = 'method';
			$name = $reflection->getDeclaringClass()->name . '::' . $reflection->name;
		}
		
		$location = $reflection->getFileName() . ':' . $reflection->getStartLine();
		
		Ev\Evaluer::make_internal_from(
			Ev\Evaluer::SOURCE_OUTPUT,
			sprintf("Source Code for %s '%s' (%s)", $type, $name, $location)
		);
	}
Exemple #2
0
 /**
  * Constructor
  *
  * @param Reflector|string $commentOrReflector
  */
 public function __construct($commentOrReflector)
 {
     if ($commentOrReflector instanceof Reflector) {
         $this->_reflector = $commentOrReflector;
         if (!method_exists($commentOrReflector, 'getDocComment')) {
             // require_once 'Zend/Reflection/Exception.php';
             throw new Zend_Reflection_Exception('Reflector must contain method "getDocComment"');
         }
         $docComment = $commentOrReflector->getDocComment();
         $lineCount = substr_count($docComment, "\n");
         $this->_startLine = $this->_reflector->getStartLine() - $lineCount - 1;
         $this->_endLine = $this->_reflector->getStartLine() - 1;
     } elseif (is_string($commentOrReflector)) {
         $docComment = $commentOrReflector;
     } else {
         // require_once 'Zend/Reflection/Exception.php';
         throw new Zend_Reflection_Exception(get_class($this) . ' must have a (string) DocComment or a Reflector in the constructor');
     }
     if ($docComment == '') {
         // require_once 'Zend/Reflection/Exception.php';
         throw new Zend_Reflection_Exception('DocComment cannot be empty');
     }
     $this->_docComment = $docComment;
     $this->_parse();
 }
Exemple #3
0
    /**
     * Constructor
     *
     * @param Reflector|string $commentOrReflector
     * @param AnnotationManager|null $annotationManager
     * @return \Zend\Code\Reflection\DocBlockReflection
     */
    public function __construct($commentOrReflector, AnnotationManager $annotationManager = null)
    {
        if ($commentOrReflector instanceof \Reflector) {
            $this->reflector = $commentOrReflector;
            if (!method_exists($commentOrReflector, 'getDocComment')) {
                throw new Exception\InvalidArgumentException('Reflector must contain method "getDocComment"');
            }
            $this->docComment = $commentOrReflector->getDocComment();

            $lineCount = substr_count($this->docComment, "\n");

            $this->startLine = $this->reflector->getStartLine() - $lineCount - 1;
            $this->endLine   = $this->reflector->getStartLine() - 1;
        } elseif (is_string($commentOrReflector)) {
            $this->docComment = $commentOrReflector;
        } else {
            throw new Exception\InvalidArgumentException(get_class($this) . ' must have a (string) DocComment or a Reflector in the constructor');
        }

        if ($this->docComment == '') {
            throw new Exception\InvalidArgumentException('DocComment cannot be empty');
        }

        $this->annotationManager = $annotationManager;
    }
Exemple #4
0
 /**
  * Format the code represented by $reflector.
  *
  * @param \Reflector $reflector
  *
  * @return string formatted code
  */
 public static function format(\Reflector $reflector)
 {
     if ($fileName = $reflector->getFileName()) {
         if (!is_file($fileName)) {
             throw new RuntimeException('Source code unavailable.');
         }
         $file = file_get_contents($fileName);
         $lines = preg_split('/\\r?\\n/', $file);
         $start = $reflector->getStartLine() - 1;
         $end = $reflector->getEndLine() - $start;
         $code = array_slice($lines, $start, $end);
         // no need to escape this bad boy, since (for now) it's being output raw.
         // return OutputFormatter::escape(implode(PHP_EOL, $code));
         return implode(PHP_EOL, $code);
     } else {
         throw new RuntimeException('Source code unavailable.');
     }
 }
 /**
  * Format the code represented by $reflector.
  *
  * @param \Reflector $reflector
  *
  * @return string formatted code
  */
 public static function format(\Reflector $reflector)
 {
     if ($fileName = $reflector->getFileName()) {
         if (!is_file($fileName)) {
             throw new RuntimeException('Source code unavailable.');
         }
         $file = file_get_contents($fileName);
         $start = $reflector->getStartLine();
         $end = $reflector->getEndLine() - $start;
         $colors = new ConsoleColor();
         $colors->addTheme('line_number', array('blue'));
         $highlighter = new Highlighter($colors);
         return $highlighter->getCodeSnippet($file, $start, 0, $end);
         // no need to escape this bad boy, since (for now) it's being output raw.
         // return OutputFormatter::escape(implode(PHP_EOL, $code));
         return implode(PHP_EOL, $code);
     } else {
         throw new RuntimeException('Source code unavailable.');
     }
 }
 /**
  * Format the code represented by $reflector.
  *
  * @param \Reflector  $reflector
  * @param null|string $colorMode (default: null)
  *
  * @return string formatted code
  */
 public static function format(\Reflector $reflector, $colorMode = null)
 {
     $colorMode = $colorMode ?: Configuration::COLOR_MODE_AUTO;
     if ($fileName = $reflector->getFileName()) {
         if (!is_file($fileName)) {
             throw new RuntimeException('Source code unavailable.');
         }
         $file = file_get_contents($fileName);
         $start = $reflector->getStartLine();
         $end = $reflector->getEndLine() - $start;
         $factory = new ConsoleColorFactory($colorMode);
         $colors = $factory->getConsoleColor();
         $highlighter = new Highlighter($colors);
         return $highlighter->getCodeSnippet($file, $start, 0, $end);
         // no need to escape this bad boy, since (for now) it's being output raw.
         // return OutputFormatter::escape(implode(PHP_EOL, $code));
         return implode(PHP_EOL, $code);
     } else {
         throw new RuntimeException('Source code unavailable.');
     }
 }
 /**
  * Constructor
  *
  * @param Reflector|string $commentOrReflector
  * @return \Zend\Code\Reflection\DocBlockReflection
  */
 public function __construct($commentOrReflector, DocBlock\TagManager $tagManager = null)
 {
     $this->tagManager = $tagManager ?: new DocBlock\TagManager(DocBlock\TagManager::USE_DEFAULT_PROTOTYPES);
     if ($commentOrReflector instanceof \Reflector) {
         $this->reflector = $commentOrReflector;
         if (!method_exists($commentOrReflector, 'getDocComment')) {
             throw new Exception\InvalidArgumentException('Reflector must contain method "getDocComment"');
         }
         /* @var MethodReflection $commentOrReflector */
         $this->docComment = $commentOrReflector->getDocComment();
         // determine line numbers
         $lineCount = substr_count($this->docComment, "\n");
         $this->startLine = $this->reflector->getStartLine() - $lineCount - 1;
         $this->endLine = $this->reflector->getStartLine() - 1;
     } elseif (is_string($commentOrReflector)) {
         $this->docComment = $commentOrReflector;
     } else {
         throw new Exception\InvalidArgumentException(get_class($this) . ' must have a (string) DocComment or a Reflector in the constructor');
     }
     if ($this->docComment == '') {
         throw new Exception\InvalidArgumentException('DocComment cannot be empty');
     }
     $this->reflect();
 }
Exemple #8
0
 protected function reflectFile(Reflector $ref, SimpleXMLElement $element, $omitFileName = false)
 {
     $file = $element->addChild('file');
     if (!$omitFileName) {
         $file->fileName = substr($ref->getFileName(), strlen($this->docRoot));
     }
     $file->startLine = $ref->getStartLine();
     $file->endLine = $ref->getEndLine();
 }
Exemple #9
0
 /**
  * @param \Reflector|\Nette\Reflection\ClassType|\Nette\Reflection\Method $refl
  * @param \Exception|\Throwable $e
  * @param int $startLine
  *
  * @return int|string
  */
 public static function calculateErrorLine(\Reflector $refl, $e, $startLine = NULL)
 {
     if ($startLine === NULL) {
         $startLine = $refl->getStartLine();
     }
     if ($pos = Strings::match($e->getMessage(), '~position\\s*(\\d+)~')) {
         $targetLine = self::calculateAffectedLine($refl, $pos[1]);
     } elseif ($notImported = Strings::match($e->getMessage(), '~^\\[Semantical Error\\]\\s+The annotation "([^"]*?)"~i')) {
         $parts = explode(self::findRenamed($refl, $notImported[1]), self::cleanedPhpDoc($refl), 2);
         $targetLine = self::calculateAffectedLine($refl, strlen($parts[0]));
     } elseif ($notFound = Strings::match($e->getMessage(), '~^\\[Semantical Error\\]\\s+Couldn\'t find\\s+(.*?)\\s+(.*?),\\s+~')) {
         // this is just a guess
         $parts = explode(self::findRenamed($refl, $notFound[2]), self::cleanedPhpDoc($refl), 2);
         $targetLine = self::calculateAffectedLine($refl, strlen($parts[0]));
     } else {
         $targetLine = self::calculateAffectedLine($refl, 1);
     }
     $phpDocLines = count(Strings::split($refl->getDocComment(), '~[\\n\\r]+~'));
     return $startLine - ($phpDocLines - ($targetLine - 1));
 }
Exemple #10
0
function annotateLocation(\Reflector $refl)
{
    return array('file' => $refl->getFileName(), 'line' => $refl->getStartLine());
}
 public function locateEmptyTestFailureSource()
 {
     return FailureSourceLocator::formatFileAndLine($this->reflection->getFileName(), $this->reflection->getStartLine());
 }