Skip to content

Commit 173bb64

Browse files
Merge pull request #104 from TheDragonCode/1.x
Refactored converters and added `ConverterHelper` to simplify usage
2 parents a984594 + 20db895 commit 173bb64

File tree

6 files changed

+41
-16
lines changed

6 files changed

+41
-16
lines changed

src/Converters/ConvertToJson.php renamed to src/Converters/JsonConverter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use function mb_substr;
1515
use function sprintf;
1616

17-
class ConvertToJson extends Converter
17+
class JsonConverter extends Converter
1818
{
1919
public function __construct(
2020
#[Config('feeds.converters.json.options')]

src/Converters/ConvertToJsonLines.php renamed to src/Converters/JsonLinesConverter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
use function is_array;
1313
use function json_encode;
1414

15-
class ConvertToJsonLines extends Converter
15+
class JsonLinesConverter extends Converter
1616
{
1717
public function __construct(
1818
#[Config('feeds.converters.json.options')]

src/Converters/ConvertToXml.php renamed to src/Converters/XmlConverter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
use function str_starts_with;
2222
use function trim;
2323

24-
class ConvertToXml extends Converter
24+
class XmlConverter extends Converter
2525
{
2626
protected DOMDocument $document;
2727

src/Helpers/ConverterHelper.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace DragonCode\LaravelFeed\Helpers;
6+
7+
use DragonCode\LaravelFeed\Converters\Converter;
8+
use DragonCode\LaravelFeed\Converters\JsonConverter;
9+
use DragonCode\LaravelFeed\Converters\JsonLinesConverter;
10+
use DragonCode\LaravelFeed\Converters\XmlConverter;
11+
use DragonCode\LaravelFeed\Enums\FeedFormatEnum;
12+
13+
use function app;
14+
15+
class ConverterHelper
16+
{
17+
public function get(FeedFormatEnum $format): Converter
18+
{
19+
return match ($format) {
20+
FeedFormatEnum::Xml => app(XmlConverter::class),
21+
FeedFormatEnum::Json => app(JsonConverter::class),
22+
FeedFormatEnum::JsonLines => app(JsonLinesConverter::class),
23+
};
24+
}
25+
}

src/Services/GeneratorService.php

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@
55
namespace DragonCode\LaravelFeed\Services;
66

77
use DragonCode\LaravelFeed\Converters\Converter;
8-
use DragonCode\LaravelFeed\Converters\ConvertToJson;
9-
use DragonCode\LaravelFeed\Converters\ConvertToJsonLines;
10-
use DragonCode\LaravelFeed\Converters\ConvertToXml;
11-
use DragonCode\LaravelFeed\Enums\FeedFormatEnum;
128
use DragonCode\LaravelFeed\Feeds\Feed;
9+
use DragonCode\LaravelFeed\Helpers\ConverterHelper;
1310
use DragonCode\LaravelFeed\Queries\FeedQuery;
1411
use Illuminate\Console\OutputStyle;
1512
use Illuminate\Database\Eloquent\Collection;
@@ -23,9 +20,7 @@ class GeneratorService
2320
{
2421
public function __construct(
2522
protected FilesystemService $filesystem,
26-
protected ConvertToXml $xmlConverter,
27-
protected ConvertToJson $jsonConverter,
28-
protected ConvertToJsonLines $jsonLinesConverter,
23+
protected ConverterHelper $converter,
2924
protected FeedQuery $query,
3025
) {}
3126

@@ -64,7 +59,7 @@ function (Collection $models) use ($file, $feed, $bar, &$progress) {
6459

6560
foreach ($models as $model) {
6661
$content[] = $this->converter($feed)->item(
67-
item : $feed->item($model),
62+
item: $feed->item($model),
6863
isLast: $progress <= 1
6964
);
7065

@@ -148,11 +143,9 @@ protected function setLastActivity(Feed $feed): void
148143

149144
protected function converter(Feed $feed): Converter
150145
{
151-
return match ($feed->format()) {
152-
FeedFormatEnum::Xml => $this->xmlConverter,
153-
FeedFormatEnum::Json => $this->jsonConverter,
154-
FeedFormatEnum::JsonLines => $this->jsonLinesConverter,
155-
};
146+
return $this->converter->get(
147+
$feed->format()
148+
);
156149
}
157150

158151
protected function progressBar(int $count, ?OutputStyle $output): ?ProgressBar
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
arch()
6+
->expect('DragonCode\LaravelFeed\Converters')
7+
->toHaveSuffix('Converter');

0 commit comments

Comments
 (0)