Skip to content

Commit

Permalink
[TASK] Move FileFormatter to packages
Browse files Browse the repository at this point in the history
  • Loading branch information
sabbelasichon committed May 2, 2021
1 parent fc39e3e commit 4ea0a1f
Show file tree
Hide file tree
Showing 27 changed files with 418 additions and 46 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"rector/rector-phpunit": "^0.10.8",
"rector/rector-symfony": "^0.10.5",
"sebastian/diff": "^4.0.4",
"shanethehat/pretty-xml": "^1.0",
"symfony/console": "^4.4.8|^5.1",
"symfony/dependency-injection": "^5.1",
"symfony/finder": "^4.4.8|^5.1",
Expand Down
4 changes: 3 additions & 1 deletion config/services.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,16 @@
use PHPStan\PhpDocParser\Parser\PhpDocParser;
use PHPStan\PhpDocParser\Parser\TypeParser;
use PHPStan\Reflection\ReflectionProvider;
use PrettyXml\Formatter;
use Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser;
use Rector\BetterPhpDocParser\PhpDocParser\BetterTypeParser;
use Rector\Caching\Cache\NetteCacheFactory;
use Rector\Core\Console\ConsoleApplication;
use Rector\Core\Contract\EditorConfig\EditorConfigParserInterface;
use Rector\Core\EditorConfig\EditorConfigIdiosyncraticParser;
use Rector\Core\NonPhpFile\Rector\RenameClassNonPhpRector;
use Rector\Core\PhpParser\Parser\NikicPhpParserFactory;
use Rector\Core\PhpParser\Parser\PhpParserLexerFactory;
use Rector\FileFormatter\EditorConfig\EditorConfigIdiosyncraticParser;
use Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory;
use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocator\IntermediateSourceLocator;
use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\DynamicSourceLocatorProvider;
Expand Down Expand Up @@ -152,5 +153,6 @@

$services->set(Printer::class);
$services->set(EditorConfig::class);
$services->set(Formatter::class);
$services->alias(EditorConfigParserInterface::class, EditorConfigIdiosyncraticParser::class);
};
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace Rector\Core\Tests\EditorConfig\EditorConfigIdiosyncraticParser;
namespace Rector\Tests\FileFormatter\EditorConfig\EditorConfigIdiosyncraticParser;

use Rector\Core\Contract\EditorConfig\EditorConfigParserInterface;
use Rector\Core\ValueObject\Application\File;
use Rector\Core\ValueObject\EditorConfigConfiguration;
use Rector\Core\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Rector\FileFormatter\ValueObject\EditorConfigConfiguration;
use Rector\FileFormatter\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Rector\Testing\PHPUnit\AbstractTestCase;
use Symplify\SmartFileSystem\SmartFileInfo;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
<?php

declare(strict_types=1);

namespace Rector\Core\Tests\Formatter\JsonFormatter;
namespace Rector\Tests\FileFormatter\Formatter\JsonFileFormatter;

use Iterator;
use Rector\Core\Formatter\JsonFormatter;
use Rector\Core\ValueObject\Application\File;
use Rector\Core\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Rector\FileFormatter\Formatter\JsonFileFormatter;
use Rector\FileFormatter\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Rector\Testing\PHPUnit\AbstractTestCase;
use Symplify\EasyTesting\DataProvider\StaticFixtureFinder;
use Symplify\EasyTesting\StaticFixtureSplitter;
use Symplify\SmartFileSystem\SmartFileInfo;

final class JsonFormatterTest extends AbstractTestCase
final class JsonFileFormatterTest extends AbstractTestCase
{
/**
* @var JsonFormatter
* @var JsonFileFormatter
*/
private $jsonFormatter;

protected function setUp(): void
{
$this->boot();
$this->jsonFormatter = $this->getService(JsonFormatter::class);
$this->jsonFormatter = $this->getService(JsonFileFormatter::class);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pets: [Cat, Dog]
cars: [
Volvo,
Skoda,
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

declare(strict_types=1);

namespace Rector\Tests\FileFormatter\Formatter\NeonFileFormatter;

use Iterator;
use Rector\Core\ValueObject\Application\File;
use Rector\FileFormatter\Formatter\NeonFileFormatter;
use Rector\FileFormatter\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Rector\Testing\PHPUnit\AbstractTestCase;
use Symplify\EasyTesting\DataProvider\StaticFixtureFinder;
use Symplify\EasyTesting\StaticFixtureSplitter;
use Symplify\SmartFileSystem\SmartFileInfo;

final class NeonFileFormatterTest extends AbstractTestCase
{
/**
* @var NeonFileFormatter
*/
private $neonFormatter;

protected function setUp(): void
{
$this->boot();
$this->neonFormatter = $this->getService(NeonFileFormatter::class);
}

/**
* @dataProvider provideData()
*/
public function test(SmartFileInfo $fileInfo): void
{
$this->doTestFileInfo($fileInfo);
}

public function provideData(): Iterator
{
return StaticFixtureFinder::yieldDirectory(__DIR__ . '/Fixture', '*.neon');
}

private function doTestFileInfo(SmartFileInfo $smartFileInfo): void
{
$inputFileInfoAndExpected = StaticFixtureSplitter::splitFileInfoToLocalInputAndExpected($smartFileInfo);

$inputFileInfo = $inputFileInfoAndExpected->getInputFileInfo();
$file = new File($inputFileInfo, $inputFileInfo->getContents());

$editorConfigConfigurationBuilder = EditorConfigConfigurationBuilder::anEditorConfigConfiguration();
$editorConfigConfigurationBuilder->withTab();
$editorConfigConfigurationBuilder->withTabWidth(8);
$editorConfigConfigurationBuilder->withFinalNewline();
$editorConfigConfigurationBuilder->withLineFeed();

$this->neonFormatter->format($file, $editorConfigConfigurationBuilder->build());

$this->assertSame($inputFileInfoAndExpected->getExpected(), $file->getFileContent());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
</catalog>
-----
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
</catalog>
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

declare(strict_types=1);

namespace Rector\Tests\FileFormatter\Formatter\NeonFileFormatter;

use Iterator;
use Rector\Core\ValueObject\Application\File;
use Rector\FileFormatter\Formatter\XmlFileFormatter;
use Rector\FileFormatter\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Rector\Testing\PHPUnit\AbstractTestCase;
use Symplify\EasyTesting\DataProvider\StaticFixtureFinder;
use Symplify\EasyTesting\StaticFixtureSplitter;
use Symplify\SmartFileSystem\SmartFileInfo;

final class XmlFileFormatterTest extends AbstractTestCase
{
/**
* @var XmlFileFormatter
*/
private $xmlFileFormatter;

protected function setUp(): void
{
$this->boot();
$this->xmlFileFormatter = $this->getService(XmlFileFormatter::class);
}

/**
* @dataProvider provideData()
*/
public function test(SmartFileInfo $fileInfo): void
{
$this->doTestFileInfo($fileInfo);
}

public function provideData(): Iterator
{
return StaticFixtureFinder::yieldDirectory(__DIR__ . '/Fixture', '*.xml');
}

private function doTestFileInfo(SmartFileInfo $smartFileInfo): void
{
$inputFileInfoAndExpected = StaticFixtureSplitter::splitFileInfoToLocalInputAndExpected($smartFileInfo);

$inputFileInfo = $inputFileInfoAndExpected->getInputFileInfo();
$file = new File($inputFileInfo, $inputFileInfo->getContents());

$editorConfigConfigurationBuilder = EditorConfigConfigurationBuilder::anEditorConfigConfiguration();
$editorConfigConfigurationBuilder->withTab();
$editorConfigConfigurationBuilder->withTabWidth(1);
$editorConfigConfigurationBuilder->withFinalNewline();
$editorConfigConfigurationBuilder->withLineFeed();

$this->xmlFileFormatter->format($file, $editorConfigConfigurationBuilder->build());

$this->assertSame($inputFileInfoAndExpected->getExpected(), $file->getFileContent());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
martin:
name: Martin
job: Developer
skills:
- python
- perl
- pascal
-----
martin:
name: Martin
job: Developer
skills:
- python
- perl
- pascal
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

declare(strict_types=1);

namespace Rector\Tests\FileFormatter\Formatter\NeonFileFormatter;

use Iterator;
use Rector\Core\ValueObject\Application\File;
use Rector\FileFormatter\Formatter\YamlFileFormatter;
use Rector\FileFormatter\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Rector\Testing\PHPUnit\AbstractTestCase;
use Symplify\EasyTesting\DataProvider\StaticFixtureFinder;
use Symplify\EasyTesting\StaticFixtureSplitter;
use Symplify\SmartFileSystem\SmartFileInfo;

final class YamlFileFormatterTest extends AbstractTestCase
{
/**
* @var YamlFileFormatter
*/
private $yamlFileFormatter;

protected function setUp(): void
{
$this->boot();
$this->yamlFileFormatter = $this->getService(YamlFileFormatter::class);
}

/**
* @dataProvider provideData()
*/
public function test(SmartFileInfo $fileInfo): void
{
$this->doTestFileInfo($fileInfo);
}

public function provideData(): Iterator
{
return StaticFixtureFinder::yieldDirectory(__DIR__ . '/Fixture', '*.yaml');
}

private function doTestFileInfo(SmartFileInfo $smartFileInfo): void
{
$inputFileInfoAndExpected = StaticFixtureSplitter::splitFileInfoToLocalInputAndExpected($smartFileInfo);

$inputFileInfo = $inputFileInfoAndExpected->getInputFileInfo();
$file = new File($inputFileInfo, $inputFileInfo->getContents());

$editorConfigConfigurationBuilder = EditorConfigConfigurationBuilder::anEditorConfigConfiguration();
$editorConfigConfigurationBuilder->withSpace();
$editorConfigConfigurationBuilder->withIndentSize(4);
$editorConfigConfigurationBuilder->withFinalNewline();
$editorConfigConfigurationBuilder->withLineFeed();

$this->yamlFileFormatter->format($file, $editorConfigConfigurationBuilder->build());

$this->assertSame($inputFileInfoAndExpected->getExpected(), $file->getFileContent());
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

namespace Rector\Core\Tests\ValueObject;
namespace Rector\Tests\FileFormatter\ValueObject;

use PHPUnit\Framework\TestCase;
use Rector\Core\Exception\EditorConfigConfigurationException;
use Rector\Core\ValueObject\EditorConfigConfiguration;
use Rector\Core\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Rector\FileFormatter\ValueObject\EditorConfigConfiguration;
use Rector\FileFormatter\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Symplify\PackageBuilder\Configuration\StaticEolConfiguration;

final class EditorConfigConfigurationTest extends TestCase
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
<?php

declare(strict_types=1);

namespace Rector\Core\EditorConfig;
namespace Rector\FileFormatter\EditorConfig;

use Idiosyncratic\EditorConfig\EditorConfig;
use Rector\Core\Contract\EditorConfig\EditorConfigParserInterface;
use Rector\Core\ValueObject\Application\File;
use Rector\Core\ValueObject\EditorConfigConfiguration;
use Rector\Core\ValueObjectFactory\EditorConfigConfigurationBuilder;
use Rector\FileFormatter\ValueObject\EditorConfigConfiguration;
use Rector\FileFormatter\ValueObjectFactory\EditorConfigConfigurationBuilder;

/**
* @see \Rector\Core\Tests\EditorConfig\EditorConfigIdiosyncraticParser\EditorConfigIdiosyncraticParserTest
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<?php

declare(strict_types=1);

namespace Rector\Core\Application;
namespace Rector\FileFormatter;

use Rector\Core\Contract\EditorConfig\EditorConfigParserInterface;
use Rector\Core\Contract\Formatter\FormatterInterface;
use Rector\Core\Contract\Formatter\FileFormatterInterface;
use Rector\Core\ValueObject\Application\File;

final class FileFormatter
Expand All @@ -15,12 +16,12 @@ final class FileFormatter
private $editorConfigParser;

/**
* @var FormatterInterface[]
* @var FileFormatterInterface[]
*/
private $fileFormatters;

/**
* @param FormatterInterface[] $fileFormatters
* @param FileFormatterInterface[] $fileFormatters
*/
public function __construct(EditorConfigParserInterface $editorConfigParser, array $fileFormatters = [])
{
Expand All @@ -34,7 +35,6 @@ public function __construct(EditorConfigParserInterface $editorConfigParser, arr
public function format(array $files): void
{
foreach ($files as $file) {

if (! $file->hasChanged()) {
continue;
}
Expand Down

0 comments on commit 4ea0a1f

Please sign in to comment.