aboutsummaryrefslogtreecommitdiff
path: root/lib/FormatFactory.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/FormatFactory.php')
-rw-r--r--lib/FormatFactory.php102
1 files changed, 52 insertions, 50 deletions
diff --git a/lib/FormatFactory.php b/lib/FormatFactory.php
index 2044a899..e2ef52fa 100644
--- a/lib/FormatFactory.php
+++ b/lib/FormatFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* This file is part of RSS-Bridge, a PHP project capable of generating RSS and
* Atom feeds for websites that don't have one.
@@ -6,65 +7,66 @@
* For the full license information, please view the UNLICENSE file distributed
* with this source code.
*
- * @package Core
- * @license http://unlicense.org/ UNLICENSE
- * @link https://github.com/rss-bridge/rss-bridge
+ * @package Core
+ * @license http://unlicense.org/ UNLICENSE
+ * @link https://github.com/rss-bridge/rss-bridge
*/
class FormatFactory
{
- private $folder;
- private $formatNames;
+ private $folder;
+ private $formatNames;
- public function __construct(string $folder = PATH_LIB_FORMATS)
- {
- $this->folder = $folder;
+ public function __construct(string $folder = PATH_LIB_FORMATS)
+ {
+ $this->folder = $folder;
- // create format names
- foreach(scandir($this->folder) as $file) {
- if(preg_match('/^([^.]+)Format\.php$/U', $file, $m)) {
- $this->formatNames[] = $m[1];
- }
- }
- }
+ // create format names
+ foreach (scandir($this->folder) as $file) {
+ if (preg_match('/^([^.]+)Format\.php$/U', $file, $m)) {
+ $this->formatNames[] = $m[1];
+ }
+ }
+ }
- /**
- * @throws \InvalidArgumentException
- * @param string $name The name of the format e.g. "Atom", "Mrss" or "Json"
- */
- public function create(string $name): FormatInterface
- {
- if (! preg_match('/^[a-zA-Z0-9-]*$/', $name)) {
- throw new \InvalidArgumentException('Format name invalid!');
- }
- $name = $this->sanitizeFormatName($name);
- if ($name === null) {
- throw new \InvalidArgumentException('Unknown format given!');
- }
- $className = '\\' . $name . 'Format';
- return new $className;
- }
+ /**
+ * @throws \InvalidArgumentException
+ * @param string $name The name of the format e.g. "Atom", "Mrss" or "Json"
+ */
+ public function create(string $name): FormatInterface
+ {
+ if (! preg_match('/^[a-zA-Z0-9-]*$/', $name)) {
+ throw new \InvalidArgumentException('Format name invalid!');
+ }
+ $name = $this->sanitizeFormatName($name);
+ if ($name === null) {
+ throw new \InvalidArgumentException('Unknown format given!');
+ }
+ $className = '\\' . $name . 'Format';
+ return new $className();
+ }
- public function getFormatNames(): array
- {
- return $this->formatNames;
- }
+ public function getFormatNames(): array
+ {
+ return $this->formatNames;
+ }
- protected function sanitizeFormatName(string $name) {
- $name = ucfirst(strtolower($name));
+ protected function sanitizeFormatName(string $name)
+ {
+ $name = ucfirst(strtolower($name));
- // Trim trailing '.php' if exists
- if (preg_match('/(.+)(?:\.php)/', $name, $matches)) {
- $name = $matches[1];
- }
+ // Trim trailing '.php' if exists
+ if (preg_match('/(.+)(?:\.php)/', $name, $matches)) {
+ $name = $matches[1];
+ }
- // Trim trailing 'Format' if exists
- if (preg_match('/(.+)(?:Format)/i', $name, $matches)) {
- $name = $matches[1];
- }
- if (in_array($name, $this->formatNames)) {
- return $name;
- }
- return null;
- }
+ // Trim trailing 'Format' if exists
+ if (preg_match('/(.+)(?:Format)/i', $name, $matches)) {
+ $name = $matches[1];
+ }
+ if (in_array($name, $this->formatNames)) {
+ return $name;
+ }
+ return null;
+ }
}