Переглянути джерело

[Translation][Loader] CSV controls for CsvFileLoader

stealth35 14 роки тому
батько
коміт
bb1b48046d

+ 19 - 1
src/Symfony/Component/Translation/Loader/CsvFileLoader.php

@@ -22,6 +22,10 @@ use Symfony\Component\Config\Resource\FileResource;
  */
 class CsvFileLoader extends ArrayLoader implements LoaderInterface
 {
+    protected $delimiter = ';';
+    protected $enclosure = '"';
+    protected $escape    = '\\';
+
     /**
      * {@inheritdoc}
      *
@@ -38,7 +42,7 @@ class CsvFileLoader extends ArrayLoader implements LoaderInterface
         }
 
         $file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::SKIP_EMPTY);
-        $file->setCsvControl(';');
+        $file->setCsvControl($this->delimiter, $this->enclosure, $this->escape);
 
         foreach($file as $data) {
             if (substr($data[0], 0, 1) === '#') {
@@ -61,4 +65,18 @@ class CsvFileLoader extends ArrayLoader implements LoaderInterface
 
         return $catalogue;
     }
+
+    /**
+     * Set the delimiter, enclosure and escape character for CSV
+     *
+     * @param string $delimiter delimiter character
+     * @param string $enclosure enclosure character
+     * @param string $escape    escape character
+     */
+    public function control($delimiter = ';', $enclosure = '"', $escape = '\\')
+    {
+        $this->delimiter = $delimiter;
+        $this->enclosure = $enclosure;
+        $this->escape    = $escape;
+    }
 }