summaryrefslogtreecommitdiffstats
path: root/src/Modifier/RowFilter.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Modifier/RowFilter.php')
-rw-r--r--src/Modifier/RowFilter.php151
1 files changed, 151 insertions, 0 deletions
diff --git a/src/Modifier/RowFilter.php b/src/Modifier/RowFilter.php
new file mode 100644
index 0000000..b0aec16
--- /dev/null
+++ b/src/Modifier/RowFilter.php
@@ -0,0 +1,151 @@
+<?php
+/**
+* This file is part of the League.csv library
+*
+* @license http://opensource.org/licenses/MIT
+* @link https://github.com/thephpleague/csv/
+* @version 7.0.0
+* @package League.csv
+*
+* For the full copyright and license information, please view the LICENSE
+* file that was distributed with this source code.
+*/
+namespace League\Csv\Modifier;
+
+/**
+ * Trait to format and validate the row before insertion
+ *
+ * @package League.csv
+ * @since 7.0.0
+ *
+ */
+trait RowFilter
+{
+ /**
+ * Callables to validate the row before insertion
+ *
+ * @var callable[]
+ */
+ protected $validators = [];
+
+ /**
+ * Callables to format the row before insertion
+ *
+ * @var callable[]
+ */
+ protected $formatters = [];
+
+ /**
+ * add a formatter to the collection
+ *
+ * @param callable $callable
+ *
+ * @return $this
+ */
+ public function addFormatter(callable $callable)
+ {
+ $this->formatters[] = $callable;
+
+ return $this;
+ }
+
+ /**
+ * Remove a formatter from the collection
+ *
+ * @param callable $callable
+ *
+ * @return $this
+ */
+ public function removeFormatter(callable $callable)
+ {
+ $res = array_search($callable, $this->formatters, true);
+ if (false !== $res) {
+ unset($this->formatters[$res]);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Detect if the formatter is already registered
+ *
+ * @param callable $callable
+ *
+ * @return bool
+ */
+ public function hasFormatter(callable $callable)
+ {
+ return false !== array_search($callable, $this->formatters, true);
+ }
+
+ /**
+ * Remove all registered formatter
+ *
+ * @return $this
+ */
+ public function clearFormatters()
+ {
+ $this->formatters = [];
+
+ return $this;
+ }
+
+ /**
+ * add a Validator to the collection
+ *
+ * @param callable $callable
+ * @param string $name the rule name
+ *
+ * @return $this
+ */
+ public function addValidator(callable $callable, $name)
+ {
+ $name = trim($name);
+ $this->validators[$name] = $callable;
+
+ return $this;
+ }
+
+ /**
+ * Remove a validator from the collection
+ *
+ * @param string $name the validator name
+ *
+ * @return $this
+ */
+ public function removeValidator($name)
+ {
+ $name = trim($name);
+ if (array_key_exists($name, $this->validators)) {
+ unset($this->validators[$name]);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Detect if a validator is already registered
+ *
+ * @param string $name the validator name
+ *
+ * @return bool
+ */
+ public function hasValidator($name)
+ {
+ $name = trim($name);
+
+ return array_key_exists($name, $this->validators);
+ }
+
+ /**
+ * Remove all registered validatior
+ *
+ * @return $this
+ */
+ public function clearValidators()
+ {
+ $this->validators = [];
+
+ return $this;
+ }
+}