summaryrefslogtreecommitdiff
path: root/www/wiki/vendor/param-processor/param-processor/src/PackagePrivate/DimensionParser.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/vendor/param-processor/param-processor/src/PackagePrivate/DimensionParser.php')
-rw-r--r--www/wiki/vendor/param-processor/param-processor/src/PackagePrivate/DimensionParser.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/www/wiki/vendor/param-processor/param-processor/src/PackagePrivate/DimensionParser.php b/www/wiki/vendor/param-processor/param-processor/src/PackagePrivate/DimensionParser.php
new file mode 100644
index 00000000..06aa2ad5
--- /dev/null
+++ b/www/wiki/vendor/param-processor/param-processor/src/PackagePrivate/DimensionParser.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace ParamProcessor\PackagePrivate;
+
+use ValueParsers\ParseException;
+use ValueParsers\ParserOptions;
+use ValueParsers\ValueParser;
+
+/**
+ * Package private
+ */
+class DimensionParser implements ValueParser {
+
+ public const DEFAULT_UNIT = 'defaultunit';
+
+ public const PIXELS = 'px';
+
+ private $defaultUnit;
+
+ public function __construct( ParserOptions $options = null ) {
+ $options = $options ?? new ParserOptions();
+
+ $this->defaultUnit = $options->hasOption( self::DEFAULT_UNIT ) ? $options->getOption( self::DEFAULT_UNIT ) : self::PIXELS;
+ }
+
+ public function parse( $value ) {
+ if ( !is_string( $value ) ) {
+ throw new ParseException( 'Not a string' );
+ }
+
+ $value = $this->removeWhitespace( $value );
+
+ if ( preg_match( '/^(\d|\.)+$/', $value ) ) {
+ $value .= $this->defaultUnit;
+ }
+
+ return $value;
+ }
+
+ private function removeWhitespace( string $string ): string {
+ return preg_replace( '/\s+/', '', $string );
+ }
+
+}