PHP_CodeSniffer
[ class tree: PHP_CodeSniffer ] [ index: PHP_CodeSniffer ] [ all elements ]

Source for file Hgblame.php

Documentation is available at Hgblame.php

  1. <?php
  2. /**
  3.  * Mercurial blame report for PHP_CodeSniffer.
  4.  *
  5.  * @author    Ben Selby <benmatselby@gmail.com>
  6.  * @author    Greg Sherwood <gsherwood@squiz.net>
  7.  * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
  8.  * @license   https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
  9.  */
  10.  
  11. namespace PHP_CodeSniffer\Reports;
  12.  
  13. use PHP_CodeSniffer\Exceptions\DeepExitException;
  14.  
  15. class Hgblame extends VersionControl
  16. {
  17.  
  18.     /**
  19.      * The name of the report we want in the output
  20.      *
  21.      * @var string 
  22.      */
  23.     protected $reportName 'MERCURIAL';
  24.  
  25.  
  26.     /**
  27.      * Extract the author from a blame line.
  28.      *
  29.      * @param string $line Line to parse.
  30.      *
  31.      * @return mixed string or false if impossible to recover.
  32.      */
  33.     protected function getAuthor($line)
  34.     {
  35.         $blameParts = array();
  36.         $line       preg_replace('|\s+|'' '$line);
  37.  
  38.         preg_match(
  39.             '|(.+[0-9]{2}:[0-9]{2}:[0-9]{2}\s[0-9]{4}\s.[0-9]{4}:)|',
  40.             $line,
  41.             $blameParts
  42.         );
  43.  
  44.         if (isset($blameParts[0]=== false{
  45.             return false;
  46.         }
  47.  
  48.         $parts explode(' '$blameParts[0]);
  49.  
  50.         if (count($parts< 6{
  51.             return false;
  52.         }
  53.  
  54.         $parts array_slice($parts0(count($parts- 6));
  55.  
  56.         return trim(preg_replace('|<.+>|'''implode($parts' ')));
  57.  
  58.     }//end getAuthor()
  59.  
  60.  
  61.     /**
  62.      * Gets the blame output.
  63.      *
  64.      * @param string $filename File to blame.
  65.      *
  66.      * @return array 
  67.      */
  68.     protected function getBlameContent($filename)
  69.     {
  70.         $cwd getcwd();
  71.  
  72.         $fileParts explode(DIRECTORY_SEPARATOR$filename);
  73.         $found     = false;
  74.         $location  '';
  75.         while (empty($fileParts=== false{
  76.             array_pop($fileParts);
  77.             $location implode($filePartsDIRECTORY_SEPARATOR);
  78.             if (is_dir($location.DIRECTORY_SEPARATOR.'.hg'=== true{
  79.                 $found = true;
  80.                 break;
  81.             }
  82.         }
  83.  
  84.         if ($found === true{
  85.             chdir($location);
  86.         else {
  87.             $error 'ERROR: Could not locate .hg directory '.PHP_EOL.PHP_EOL;
  88.             throw new DeepExitException($error3);
  89.         }
  90.  
  91.         $command 'hg blame -u -d -v "'.$filename.'" 2>&1';
  92.         $handle  popen($command'r');
  93.         if ($handle === false{
  94.             $error 'ERROR: Could not execute "'.$command.'"'.PHP_EOL.PHP_EOL;
  95.             throw new DeepExitException($error3);
  96.         }
  97.  
  98.         $rawContent stream_get_contents($handle);
  99.         fclose($handle);
  100.  
  101.         $blames explode("\n"$rawContent);
  102.         chdir($cwd);
  103.  
  104.         return $blames;
  105.  
  106.     }//end getBlameContent()
  107.  
  108.  
  109. }//end class

Documentation generated on Mon, 11 Mar 2019 15:27:33 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.