summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIgnace Nyamagana Butera <nyamsprod@gmail.com>2015-01-29 13:53:04 +0100
committerIgnace Nyamagana Butera <nyamsprod@gmail.com>2015-01-29 13:53:04 +0100
commitfa82d4fa87944b51015682d64acbf3acfc6a8e64 (patch)
tree53dafaaf2de3d31949837d64994bbb4166f7f27f /src
parent2fc00482b432aba457bd003543f085e42ea2f353 (diff)
downloadcsv-fa82d4fa87944b51015682d64acbf3acfc6a8e64.zip
csv-fa82d4fa87944b51015682d64acbf3acfc6a8e64.tar.gz
csv-fa82d4fa87944b51015682d64acbf3acfc6a8e64.tar.bz2
adding more flexible output method
Diffstat (limited to 'src')
-rw-r--r--src/AbstractCsv.php5
-rw-r--r--src/Config/Output.php8
-rw-r--r--src/Reader.php10
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
*