diff --git a/src/Converters/CsvConverter.php b/src/Converters/CsvConverter.php index 1729f54..0753c3c 100644 --- a/src/Converters/CsvConverter.php +++ b/src/Converters/CsvConverter.php @@ -41,14 +41,14 @@ public function item(FeedItem $item, bool $isLast): string { $data = $this->performItem($item->toArray()); - return $this->toCsv($data); + return $this->encode($data); } public function info(array $info, bool $afterRoot): string { $data = $this->performItem($info); - return $this->toCsv($data); + return $this->encode($data); } protected function performItem(array $data): array @@ -66,7 +66,7 @@ protected function performItem(array $data): array return $data; } - protected function toCsv(array $data): string + protected function encode(array $data): string { return implode($this->delimiter, $data); } diff --git a/src/Converters/JsonConverter.php b/src/Converters/JsonConverter.php index d8349a6..7764e12 100644 --- a/src/Converters/JsonConverter.php +++ b/src/Converters/JsonConverter.php @@ -47,14 +47,14 @@ public function item(FeedItem $item, bool $isLast): string $suffix = $isLast ? '' : ','; - return $this->toJson($data) . $suffix; + return $this->encode($data) . $suffix; } public function info(array $info, bool $afterRoot): string { $data = $this->performItem($info); - $json = $this->toJson($data); + $json = $this->encode($data); if (! $afterRoot) { $json = mb_substr($json, 1, -1); @@ -78,7 +78,7 @@ protected function performItem(array $data): array return $data; } - protected function toJson(array $data): string + protected function encode(array $data): string { return json_encode($data, $this->jsonOptions()); } diff --git a/src/Converters/JsonLinesConverter.php b/src/Converters/JsonLinesConverter.php index 036a479..6af90af 100644 --- a/src/Converters/JsonLinesConverter.php +++ b/src/Converters/JsonLinesConverter.php @@ -43,14 +43,14 @@ public function item(FeedItem $item, bool $isLast): string { $data = $this->performItem($item->toArray()); - return $this->toJson($data); + return $this->encode($data); } public function info(array $info, bool $afterRoot): string { $data = $this->performItem($info); - return $this->toJson($data); + return $this->encode($data); } protected function performItem(array $data): array @@ -68,7 +68,7 @@ protected function performItem(array $data): array return $data; } - protected function toJson(array $data): string + protected function encode(array $data): string { return json_encode($data, $this->options); } diff --git a/src/Converters/XmlConverter.php b/src/Converters/XmlConverter.php index b84639e..659a27c 100644 --- a/src/Converters/XmlConverter.php +++ b/src/Converters/XmlConverter.php @@ -75,7 +75,7 @@ public function item(FeedItem $item, bool $isLast): string $this->performItem($box, $item->toArray()); - return $this->toXml($box); + return $this->encode($box); } public function info(array $info, bool $afterRoot): string @@ -84,7 +84,7 @@ public function info(array $info, bool $afterRoot): string $this->performItem($box, $info); - return $this->toXml($box); + return $this->encode($box); } protected function performBox(FeedItem $item): DOMNode @@ -198,7 +198,7 @@ protected function rootAttributes(ElementData $item): string ->implode(' '); } - protected function toXml(DOMNode $item): string + protected function encode(DOMNode $item): string { return $this->document->saveXML($item, LIBXML_COMPACT); } diff --git a/stubs/converter.stub b/stubs/converter.stub new file mode 100644 index 0000000..f593e23 --- /dev/null +++ b/stubs/converter.stub @@ -0,0 +1,74 @@ +performItem($item->toArray()); + + return $this->encode($data); + } + + public function info(array $info, bool $afterRoot): string + { + $data = $this->performItem($info); + + return $this->encode($data); + } + + protected function performItem(array $data): array + { + foreach ($data as &$value) { + if (is_array($value)) { + $value = $this->performItem($value); + + continue; + } + + $value = $this->transformValue($value); + } + + return $data; + } + + protected function encode(array $data): string + { + return json_encode($data, $this->options); + } +}