]> git.mxchange.org Git - core.git/blobdiff - framework/main/classes/file_directories/text/input/csv/class_CsvInputFile.php
Continued:
[core.git] / framework / main / classes / file_directories / text / input / csv / class_CsvInputFile.php
index 3343c6dd6fe11b5551578752e877be333d54b0d9..66fe6ed1dc0e7ac71a83f688c88b20d83c2bd228 100644 (file)
@@ -6,12 +6,15 @@ namespace Org\Mxchange\CoreFramework\Filesystem\Input\Csv;
 use Org\Mxchange\CoreFramework\Filesystem\Text\BaseInputTextFile;
 use Org\Mxchange\CoreFramework\Stream\Filesystem\CsvInputStreamer;
 
+// Import SPL stuff
+use \SplFileInfo;
+
 /**
  * A CSV file input class for writing CSV files
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2020 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.ship-simu.org
  *
@@ -42,15 +45,15 @@ class CsvInputFile extends BaseInputTextFile implements CsvInputStreamer {
        /**
         * Creates an instance of this File class and prepares it for usage
         *
-        * @param       $fileName               Name of the index file
+        * @param       $infoInstance   An instance of a SplFileInfo class
         * @return      $fileInstance   An instance of this File class
         */
-       public final static function createCsvInputFile ($fileName) {
+       public final static function createCsvInputFile (SplFileInfo $infoInstance) {
                // Get a new instance
                $fileInstance = new CsvInputFile();
 
                // Init this abstract file
-               $fileInstance->initFile($fileName);
+               $fileInstance->initFile($infoInstance);
 
                // Return the prepared instance
                return $fileInstance;
@@ -64,23 +67,17 @@ class CsvInputFile extends BaseInputTextFile implements CsvInputStreamer {
         * @param       $columnSeparator        Character to use separting columns
         * @return      $lineArray                      An indexed array with the read line
         */
-       public function readCsvFileLine ($columnSeparator) {
-               // Debug message
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] columnSeparator=%s - CALLED!', __METHOD__, __LINE__, $columnSeparator));
-
+       public function readCsvFileLine (string $columnSeparator) {
                // Read raw line
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] columnSeparator=%s - CALLED!', __METHOD__, __LINE__, $columnSeparator));
                $data = $this->getPointerInstance()->readLine();
 
-               // Debug message
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] data()=%d', __METHOD__, __LINE__, strlen($data)));
-
                // Parse data
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] data()=%d', __METHOD__, __LINE__, strlen($data)));
                $lineArray = $this->parseDataToIndexedArray($data, $columnSeparator);
 
-               // Debug message
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] lineArray()=%d - EXIT!', __METHOD__, __LINE__, count($lineArray)));
-
                // Return it
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] lineArray()=%d - EXIT!', __METHOD__, __LINE__, count($lineArray)));
                return $lineArray;
        }
 
@@ -91,12 +88,10 @@ class CsvInputFile extends BaseInputTextFile implements CsvInputStreamer {
         * @param       $columnSeparator        Character to use separting columns
         * @return      $lineArray                      An indexed array with the read line
         */
-       private function parseDataToIndexedArray ($data, $columnSeparator) {
-               // Debug message
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] data()=%d,columnSeparator=%s - CALLED!', __METHOD__, __LINE__, strlen($data), $columnSeparator));
-
+       private function parseDataToIndexedArray (string $data, string $columnSeparator) {
                // Init return array
-               $lineArray = array();
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] data()=%d,columnSeparator=%s - CALLED!', __METHOD__, __LINE__, strlen($data), $columnSeparator));
+               $lineArray = [];
 
                // Whether the parser reads a quoted string (which may contain the column separator again)
                $isInQuotes = false;
@@ -109,65 +104,49 @@ class CsvInputFile extends BaseInputTextFile implements CsvInputStreamer {
                        // "Cache" char
                        $char = substr($data, $idx, 1);
 
-                       // Debug message
-                       //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] idx=%s,char=%s ...', __METHOD__, __LINE__, $idx, $char));
-
                        // Is the column separator found and not within quotes?
+                       //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] idx=%d,char=%s ...', __METHOD__, __LINE__, $idx, $char));
                        if (($isInQuotes === false) && ($char == $columnSeparator)) {
-                               // Debug message
-                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] Adding column=%s ...', __METHOD__, __LINE__, $column));
-
                                // Add this line to the array
+                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] Adding column=%s ...', __METHOD__, __LINE__, $column));
                                array_push($lineArray, $column);
 
-                               // Debug message
-                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] lineArray()=%d - After add!', __METHOD__, __LINE__, count($lineArray)));
-
                                // Clear variable ...
+                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] line[]=%d - After add!', __METHOD__, __LINE__, count($lineArray)));
                                $column = '';
 
                                // ... and skip it
                                continue;
                        } elseif ($char == chr(34)) {
-                               // Debug message
-                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] column=%s ...', __METHOD__, __LINE__, $column));
-
                                // $column must be empty at this point if we are at starting quote
+                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] column=%s ...', __METHOD__, __LINE__, $column));
                                assert(($isInQuotes === true) || (empty($column)));
 
                                // Double-quote found, so flip variable
                                $isInQuotes = (!$isInQuotes);
 
-                               // Debug message
-                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] isInQuotes=%d ...', __METHOD__, __LINE__, intval($isInQuotes)));
-
                                // Skip double-quote (escaping of them is not yet supported)
+                               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] isInQuotes=%d ...', __METHOD__, __LINE__, intval($isInQuotes)));
                                continue;
                        }
 
-                       // Debug message
-                       //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] Adding char=%s ...', __METHOD__, __LINE__, $idx, $char));
-
                        // Add char to column
+                       //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] Adding char=%s ...', __METHOD__, __LINE__, $idx, $char));
                        $column .= $char;
-               } // END - for
+               }
 
                // Is there something outstanding?
                if (!empty($column)) {
-                       // Debug message
-                       //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] Adding column=%s ...', __METHOD__, __LINE__, $column));
-
                        // Then don't forget this. :-)
+                       //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] Adding column=%s ...', __METHOD__, __LINE__, $column));
                        array_push($lineArray, $column);
 
                        // Debug message
-                       //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] lineArray()=%d - After add!', __METHOD__, __LINE__, count($lineArray)));
-               } // END - if
-
-               // Debug message
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] lineArray()=%d - EXIT!', __METHOD__, __LINE__, count($lineArray)));
+                       //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] line[]=%d - After add!', __METHOD__, __LINE__, count($lineArray)));
+               }
 
                // Return it
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('[%s:%d:] line[]=%d - EXIT!', __METHOD__, __LINE__, count($lineArray)));
                return $lineArray;
        }