From a36066fc1c7376fda76022715d058d7d067fe12c Mon Sep 17 00:00:00 2001 From: Christopher Eklund Date: Mon, 8 May 2017 10:28:53 +0200 Subject: [PATCH] Better way to utilise sources --- README.md | 11 ++++------- src/Exporter.php | 32 ++++++++++++++++---------------- src/Parsers/XMLSource.php | 17 ++++++++++++++--- 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index e1af806..be05b22 100644 --- a/README.md +++ b/README.md @@ -196,15 +196,12 @@ Parsers are what decides how to parse a certain file, and how to structure its r If you have a string containing XML, you may also parse that using the following setup. ```php - use pandaac\Exporter\Parsers; - use pandaac\Exporter\Exporter; + use pandaac\Exporter\Parsers\XMLSource; use pandaac\Exporter\Sources\StringContent; - $exporter = new Exporter( - new StringContent('') - ); - - $response = $exporter->parse(new Parsers\XMLSource); + $exporter->parse(new XMLSource( + new StringContent('') + )); ``` ### OTBM Parsers diff --git a/src/Exporter.php b/src/Exporter.php index 6925c10..1e9ea67 100644 --- a/src/Exporter.php +++ b/src/Exporter.php @@ -26,11 +26,11 @@ class Exporter const ISSUES = 'https://github.com/pandaac/exporter/issues'; /** - * Holds the source. + * Holds the directory path. * - * @var \pandaac\Exporter\Contracts\Source|string + * @var string */ - protected $source; + protected $directory; /** * Holds the output implementation. @@ -42,14 +42,14 @@ class Exporter /** * Instantiate a new exporter object. * - * @param \pandaac\Exporter\Contracts\Source|string $source + * @param string $directory * @return void */ - public function __construct($source) + public function __construct($directory) { - $this->source = $source; + $this->directory = $directory; - if (! $source instanceof Source and ! file_exists($source)) { + if (! file_exists($directory)) { throw new InvalidArgumentException('The first argument must be a valid directory.'); } } @@ -57,23 +57,23 @@ public function __construct($source) /** * Get the absolute file path. * - * @param string $path - * @param string $custom null + * @param \pandaac\Exporter\Contracts\Source|string $source + * @param string $file null * @return \pandaac\Exporter\Contracts\Source|string */ - public function getAbsolutePath($path, $custom = null) + public function getAbsolutePath($source, $file = null) { - if ($this->source instanceof Source) { - return $this->source; + if ($source instanceof Source) { + return $source; } - $path = ltrim($path, DIRECTORY_SEPARATOR); + $source = ltrim($source, DIRECTORY_SEPARATOR); - if (substr($path, -1, 1) === DIRECTORY_SEPARATOR) { - $custom = $path.$custom; + if (substr($source, -1, 1) === DIRECTORY_SEPARATOR) { + $file = $source.$file; } - return $this->source.DIRECTORY_SEPARATOR.($custom ?: $path); + return $this->directory.DIRECTORY_SEPARATOR.($file ?: $source); } /** diff --git a/src/Parsers/XMLSource.php b/src/Parsers/XMLSource.php index 2e5063f..dcb090d 100644 --- a/src/Parsers/XMLSource.php +++ b/src/Parsers/XMLSource.php @@ -6,18 +6,29 @@ use pandaac\Exporter\Exporter; use pandaac\Exporter\Engines\XML; use Illuminate\Support\Collection; +use pandaac\Exporter\Contracts\Source; use pandaac\Exporter\Contracts\Parser as Contract; class XMLSource implements Contract { + /** + * Instantiate a new XML Source parser. + * + * @param \pandaac\Exporter\Contracts\Source $source + */ + public function __construct(Source $source) + { + $this->source = $source; + } + /** * Get the relative file path. * - * @return string + * @return \pandaac\Exporter\Contracts\Source */ public function filePath() { - return null; + return $this->source; } /** @@ -41,6 +52,6 @@ public function engine(array $attributes) */ public function parse(Exporter $exporter, Output $output, array $attributes) { - return $output->all(); + return $output; } }