Skip to content

Commit 44e0e30

Browse files
committed
Revert truncation of unit
1 parent 0d97ce8 commit 44e0e30

File tree

2 files changed

+36
-40
lines changed

2 files changed

+36
-40
lines changed

lib/Sabberworm/CSS/Value/Size.php

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -37,39 +37,35 @@ public static function parse(ParserState $oParserState, $bIsColorComponent = fal
3737
}
3838
}
3939

40-
$sParsedUnit = '';
41-
$iOffset = 0;
40+
$sParsedUnit = '';
41+
$iOffset = 0;
4242
while (true) {
43-
$sChar = $oParserState->peek(1, $iOffset);
44-
$iPeek = ord($sChar);
45-
46-
// Ranges: a-z A-Z 0-9 %
47-
if (($iPeek >= 97 && $iPeek <= 122) ||
48-
($iPeek >= 65 && $iPeek <= 90) ||
49-
($iPeek >= 48 && $iPeek <= 57) ||
50-
($iPeek === 37)) {
51-
$sParsedUnit .= $sChar;
52-
$iOffset++;
53-
} else {
54-
break;
55-
}
56-
}
57-
58-
$sUnit = null;
59-
$aSizeUnits = self::getSizeUnits();
43+
$sChar = $oParserState->peek(1, $iOffset);
44+
$iPeek = ord($sChar);
45+
46+
// Ranges: a-z A-Z 0-9 %
47+
if (($iPeek >= 97 && $iPeek <= 122) ||
48+
($iPeek >= 65 && $iPeek <= 90) ||
49+
($iPeek >= 48 && $iPeek <= 57) ||
50+
($iPeek === 37)) {
51+
$sParsedUnit .= $sChar;
52+
$iOffset++;
53+
} else {
54+
break;
55+
}
56+
}
57+
58+
$sUnit = null;
59+
$aSizeUnits = self::getSizeUnits();
6060

6161
foreach($aSizeUnits as $iLength => $aValues) {
62-
$iConsumeLength = $iLength;
6362
$sKey = strtolower($oParserState->peek($iLength));
6463
if(array_key_exists($sKey, $aValues)) {
65-
if (strtolower($sParsedUnit) !== $sKey) {
66-
if (!$oParserState->getSettings()->bLenientParsing) {
67-
throw new UnexpectedTokenException('Unit', $sParsedUnit, 'identifier', $oParserState->currentLine());
68-
}
69-
$iConsumeLength = strlen($sParsedUnit);
70-
}
64+
if (strtolower($sParsedUnit) !== $sKey) {
65+
throw new UnexpectedTokenException('Unit', $sParsedUnit, 'identifier', $oParserState->currentLine());
66+
}
7167
if (($sUnit = $aValues[$sKey]) !== null) {
72-
$oParserState->consume($iConsumeLength);
68+
$oParserState->consume($iLength);
7369
break;
7470
}
7571
}

tests/Sabberworm/CSS/ParserTest.php

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -788,21 +788,21 @@ function testLonelyImport() {
788788
$this->assertSame($sExpected, $oDoc->render());
789789
}
790790

791-
function testTurnUnitLenient() {
792-
$sText = ".foo {transform: rotate(1turn);}\n.bar {transform: rotate(1turns);}";
793-
$sExpected = ".foo {transform: rotate(1turn);}\n.bar {transform: rotate(1turn);}";
791+
function testTurnUnitLenient() {
792+
$sText = ".foo {transform: rotate(1turn);}\n.bar {transform: rotate(1turns);}";
793+
$sExpected = ".foo {transform: rotate(1turn);}\n.bar {}";
794794

795-
$oParser = new Parser($sText);
796-
$this->assertSame($sExpected, $oParser->parse()->render());
797-
}
795+
$oParser = new Parser($sText);
796+
$this->assertSame($sExpected, $oParser->parse()->render());
797+
}
798798

799-
function testTurnUnitStrict() {
800-
$sText = ".foo {transform: rotate(1turn);}\n.bar {transform: rotate(1turns);}";
799+
function testTurnUnitStrict() {
800+
$sText = ".foo {transform: rotate(1turn);}\n.bar {transform: rotate(1turns);}";
801801

802-
$oParser = new Parser($sText, Settings::create()->beStrict());
802+
$oParser = new Parser($sText, Settings::create()->beStrict());
803803

804-
// Line 2 contains the invalid unit and so should be reported.
805-
$this->setExpectedException( 'Sabberworm\CSS\Parsing\UnexpectedTokenException', 'Identifier expected. Got “turns” [line no: 2]' );
806-
$oParser->parse();
807-
}
804+
// Line 2 contains the invalid unit and so should be reported.
805+
$this->setExpectedException( 'Sabberworm\CSS\Parsing\UnexpectedTokenException', 'Identifier expected. Got “turns” [line no: 2]' );
806+
$oParser->parse();
807+
}
808808
}

0 commit comments

Comments
 (0)