Missing dependancies
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Differ;
|
||||
|
||||
use PhpCsFixer\Preg;
|
||||
use Symfony\Component\Console\Formatter\OutputFormatter;
|
||||
|
||||
/**
|
||||
* @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
final class DiffConsoleFormatter
|
||||
{
|
||||
private bool $isDecoratedOutput;
|
||||
|
||||
private string $template;
|
||||
|
||||
public function __construct(bool $isDecoratedOutput, string $template = '%s')
|
||||
{
|
||||
$this->isDecoratedOutput = $isDecoratedOutput;
|
||||
$this->template = $template;
|
||||
}
|
||||
|
||||
public function format(string $diff, string $lineTemplate = '%s'): string
|
||||
{
|
||||
$isDecorated = $this->isDecoratedOutput;
|
||||
|
||||
$template = $isDecorated
|
||||
? $this->template
|
||||
: Preg::replace('/<[^<>]+>/', '', $this->template)
|
||||
;
|
||||
|
||||
return sprintf(
|
||||
$template,
|
||||
implode(
|
||||
PHP_EOL,
|
||||
array_map(
|
||||
static function (string $line) use ($isDecorated, $lineTemplate): string {
|
||||
if ($isDecorated) {
|
||||
$count = 0;
|
||||
$line = Preg::replaceCallback(
|
||||
'/^([+\-@].*)/',
|
||||
static function (array $matches): string {
|
||||
if ('+' === $matches[0][0]) {
|
||||
$colour = 'green';
|
||||
} elseif ('-' === $matches[0][0]) {
|
||||
$colour = 'red';
|
||||
} else {
|
||||
$colour = 'cyan';
|
||||
}
|
||||
|
||||
return sprintf('<fg=%s>%s</fg=%s>', $colour, OutputFormatter::escape($matches[0]), $colour);
|
||||
},
|
||||
$line,
|
||||
1,
|
||||
$count
|
||||
);
|
||||
|
||||
if (0 === $count) {
|
||||
$line = OutputFormatter::escape($line);
|
||||
}
|
||||
}
|
||||
|
||||
return sprintf($lineTemplate, $line);
|
||||
},
|
||||
Preg::split('#\R#u', $diff)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Differ;
|
||||
|
||||
/**
|
||||
* @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*/
|
||||
interface DifferInterface
|
||||
{
|
||||
/**
|
||||
* Create diff.
|
||||
*/
|
||||
public function diff(string $old, string $new, ?\SplFileInfo $file = null): string;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Differ;
|
||||
|
||||
use SebastianBergmann\Diff\Differ;
|
||||
use SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder;
|
||||
|
||||
/**
|
||||
* @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
final class FullDiffer implements DifferInterface
|
||||
{
|
||||
private Differ $differ;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->differ = new Differ(new StrictUnifiedDiffOutputBuilder([
|
||||
'collapseRanges' => false,
|
||||
'commonLineThreshold' => 100,
|
||||
'contextLines' => 100,
|
||||
'fromFile' => 'Original',
|
||||
'toFile' => 'New',
|
||||
]));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function diff(string $old, string $new, ?\SplFileInfo $file = null): string
|
||||
{
|
||||
return $this->differ->diff($old, $new);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Differ;
|
||||
|
||||
/**
|
||||
* @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*/
|
||||
final class NullDiffer implements DifferInterface
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function diff(string $old, string $new, ?\SplFileInfo $file = null): string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of PHP CS Fixer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace PhpCsFixer\Differ;
|
||||
|
||||
use PhpCsFixer\Preg;
|
||||
use SebastianBergmann\Diff\Differ;
|
||||
use SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder;
|
||||
|
||||
final class UnifiedDiffer implements DifferInterface
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function diff(string $old, string $new, ?\SplFileInfo $file = null): string
|
||||
{
|
||||
if (null === $file) {
|
||||
$options = [
|
||||
'fromFile' => 'Original',
|
||||
'toFile' => 'New',
|
||||
];
|
||||
} else {
|
||||
$filePath = $file->getRealPath();
|
||||
|
||||
if (1 === Preg::match('/\s/', $filePath)) {
|
||||
$filePath = '"'.$filePath.'"';
|
||||
}
|
||||
|
||||
$options = [
|
||||
'fromFile' => $filePath,
|
||||
'toFile' => $filePath,
|
||||
];
|
||||
}
|
||||
|
||||
$differ = new Differ(new StrictUnifiedDiffOutputBuilder($options));
|
||||
|
||||
return $differ->diff($old, $new);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user