Merge pull request #124 from itexia/new-enums-for-docu

New Enum class for file processing (save + unparse) + Documentation
This commit is contained in:
Fonata
2018-03-07 09:35:01 +01:00
committed by GitHub
3 changed files with 40 additions and 4 deletions

View File

@@ -2,6 +2,7 @@
namespace ParseCsv; namespace ParseCsv;
use ParseCsv\enums\FileProcessingModeEnum;
use ParseCsv\extensions\DatatypeTrait; use ParseCsv\extensions\DatatypeTrait;
class Csv { class Csv {
@@ -379,16 +380,16 @@ class Csv {
* @param string $file File location to save to * @param string $file File location to save to
* @param array $data 2D array of data * @param array $data 2D array of data
* @param bool $append Append current data to end of target CSV, if file exists * @param bool $append Append current data to end of target CSV, if file exists
* @param array $fields Field names * @param array $fields Field names. Sets the header. If it is not set $this->titles would be used instead.
* *
* @return bool * @return bool
*/ */
public function save($file = '', $data = array(), $append = false, $fields = array()) { public function save($file = '', $data = array(), $append = FileProcessingModeEnum::MODE_FILE_OVERWRITE, $fields = array()) {
if (empty($file)) { if (empty($file)) {
$file = &$this->file; $file = &$this->file;
} }
$mode = $append ? 'ab' : 'wb'; $mode = FileProcessingModeEnum::getAppendMode($append);
$is_php = preg_match('/\.php$/i', $file) ? true : false; $is_php = preg_match('/\.php$/i', $file) ? true : false;
return $this->_wfile($file, $this->unparse($data, $fields, $append, $is_php), $mode); return $this->_wfile($file, $this->unparse($data, $fields, $append, $is_php), $mode);
@@ -766,7 +767,7 @@ class Csv {
* *
* @return string CSV data * @return string CSV data
*/ */
public function unparse($data = array(), $fields = array(), $append = false, $is_php = false, $delimiter = null) { public function unparse($data = array(), $fields = array(), $append = FileProcessingModeEnum::MODE_FILE_OVERWRITE, $is_php = false, $delimiter = null) {
if (!is_array($data) || empty($data)) { if (!is_array($data) || empty($data)) {
$data = &$this->data; $data = &$this->data;
} }

View File

@@ -0,0 +1,28 @@
<?php
namespace ParseCsv\enums;
/**
* Class FileProcessingEnum
*
* @package ParseCsv\enums
*
* todo extends a basic enum class after merging #121
*/
class FileProcessingModeEnum {
const __default = self::MODE_FILE_OVERWRITE;
const MODE_FILE_APPEND = true;
const MODE_FILE_OVERWRITE = false;
public static function getAppendMode($mode) {
if ($mode == self::MODE_FILE_APPEND){
return 'ab';
}
return 'wb';
}
}

View File

@@ -49,6 +49,13 @@ class SaveTest extends TestCase
$this->saveAndCompare($expected); $this->saveAndCompare($expected);
} }
public function testSaveWithNewHeader() {
$this->csv->linefeed = "\n";
$this->csv->titles = array("NewTitle");
$expected = "NewTitle\n0444\n5555\n";
$this->saveAndCompare($expected);
}
public function testSaveWithoutHeader() { public function testSaveWithoutHeader() {
$this->csv->linefeed = "\n"; $this->csv->linefeed = "\n";
$this->csv->heading = false; $this->csv->heading = false;