diff options
author | Ignace Nyamagana Butera <nyamsprod@gmail.com> | 2015-01-29 13:53:04 +0100 |
---|---|---|
committer | Ignace Nyamagana Butera <nyamsprod@gmail.com> | 2015-01-29 13:53:04 +0100 |
commit | fa82d4fa87944b51015682d64acbf3acfc6a8e64 (patch) | |
tree | 53dafaaf2de3d31949837d64994bbb4166f7f27f /src | |
parent | 2fc00482b432aba457bd003543f085e42ea2f353 (diff) | |
download | csv-fa82d4fa87944b51015682d64acbf3acfc6a8e64.zip csv-fa82d4fa87944b51015682d64acbf3acfc6a8e64.tar.gz csv-fa82d4fa87944b51015682d64acbf3acfc6a8e64.tar.bz2 |
adding more flexible output method
Diffstat (limited to 'src')
-rw-r--r-- | src/AbstractCsv.php | 5 | ||||
-rw-r--r-- | src/Config/Output.php | 8 | ||||
-rw-r--r-- | src/Reader.php | 10 |
3 files changed, 19 insertions, 4 deletions
diff --git a/src/AbstractCsv.php b/src/AbstractCsv.php index f3a0e30..a792c4f 100644 --- a/src/AbstractCsv.php +++ b/src/AbstractCsv.php @@ -155,6 +155,11 @@ abstract class AbstractCsv implements JsonSerializable, IteratorAggregate return $obj; } + protected function getOutputIterator() + { + return $this->getIterator(); + } + /** * Create a {@link AbstractCsv} instance from another {@link AbstractCsv} object * diff --git a/src/Config/Output.php b/src/Config/Output.php index 8059eb9..ed84ca0 100644 --- a/src/Config/Output.php +++ b/src/Config/Output.php @@ -44,7 +44,7 @@ trait Output * * @return \SplFileObject */ - abstract public function getIterator(); + abstract protected function getOutputIterator(); /** * JsonSerializable Interface @@ -53,7 +53,7 @@ trait Output */ public function jsonSerialize() { - return iterator_to_array($this->convertToUtf8($this->getIterator()), false); + return iterator_to_array($this->convertToUtf8($this->getOutputIterator()), false); } /** @@ -122,7 +122,7 @@ trait Output */ public function output($filename = null) { - $iterator = $this->getIterator(); + $iterator = $this->getOutputIterator(); $iterator->rewind(); //@codeCoverageIgnoreStart if (! is_null($filename) && self::isValidString($filename)) { @@ -178,7 +178,7 @@ trait Output { $doc = new DomDocument('1.0', 'UTF-8'); $root = $doc->createElement($root_name); - $iterator = $this->convertToUtf8($this->getIterator()); + $iterator = $this->convertToUtf8($this->getOutputIterator()); foreach ($iterator as $row) { $item = $doc->createElement($row_name); array_walk($row, function ($value) use (&$item, $doc, $cell_name) { diff --git a/src/Reader.php b/src/Reader.php index 080cc79..7952875 100644 --- a/src/Reader.php +++ b/src/Reader.php @@ -61,6 +61,16 @@ class Reader extends AbstractCsv return $iterator; } + protected function getOutputIterator() + { + $iterator = $this->getIterator(); + $iterator = $this->applyIteratorFilter($iterator); + $iterator = $this->applyIteratorSortBy($iterator); + $iterator = $this->applyIteratorInterval($iterator); + + return $iterator; + } + /** * Apply a callback function on the CSV * |