Skip to content

Commit 3e9732d

Browse files
committed
Refactor size unit parsing logic
1 parent de5a660 commit 3e9732d

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

lib/Sabberworm/CSS/Value/Size.php

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,26 +38,21 @@ public static function parse(ParserState $oParserState, $bIsColorComponent = fal
3838
}
3939

4040
$sUnit = null;
41-
$sParsedUnit = null;
4241
$aSizeUnits = self::getSizeUnits();
43-
4442
$iMaxSizeUnitLength = max(array_keys($aSizeUnits));
43+
4544
if ( preg_match( '/^[a-zA-Z0-9%]+/', $oParserState->peek($iMaxSizeUnitLength), $matches ) ) {
46-
$sParsedUnit = $matches[0];
47-
}
45+
$sUnit = strtolower($matches[0]);
46+
$iUnitLength = strlen($sUnit);
4847

49-
foreach($aSizeUnits as $iLength => $aValues) {
50-
$sKey = strtolower($oParserState->peek($iLength));
51-
if(array_key_exists($sKey, $aValues)) {
52-
if (strtolower($sParsedUnit) !== $sKey) {
53-
throw new UnexpectedTokenException('Unit', $sParsedUnit, 'identifier', $oParserState->currentLine());
54-
}
55-
if (($sUnit = $aValues[$sKey]) !== null) {
56-
$oParserState->consume($iLength);
57-
break;
58-
}
48+
if (isset($aSizeUnits[$iUnitLength][$sUnit])) {
49+
$sUnit = $aSizeUnits[$iUnitLength][$sUnit];
50+
$oParserState->consume($iUnitLength);
51+
} else {
52+
throw new UnexpectedTokenException('Unit', $sUnit, 'identifier', $oParserState->currentLine());
5953
}
6054
}
55+
6156
return new Size(floatval($sSize), $sUnit, $bIsColorComponent, $oParserState->currentLine());
6257
}
6358

0 commit comments

Comments
 (0)