Skip to content

Commit 54ae4fe

Browse files
committed
Revert truncation of unit
1 parent 81b92ef commit 54ae4fe

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
@@ -767,21 +767,21 @@ function testLonelyImport() {
767767
$this->assertSame($sExpected, $oDoc->render());
768768
}
769769

770-
function testTurnUnitLenient() {
771-
$sText = ".foo {transform: rotate(1turn);}\n.bar {transform: rotate(1turns);}";
772-
$sExpected = ".foo {transform: rotate(1turn);}\n.bar {transform: rotate(1turn);}";
770+
function testTurnUnitLenient() {
771+
$sText = ".foo {transform: rotate(1turn);}\n.bar {transform: rotate(1turns);}";
772+
$sExpected = ".foo {transform: rotate(1turn);}\n.bar {}";
773773

774-
$oParser = new Parser($sText);
775-
$this->assertSame($sExpected, $oParser->parse()->render());
776-
}
774+
$oParser = new Parser($sText);
775+
$this->assertSame($sExpected, $oParser->parse()->render());
776+
}
777777

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

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

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

0 commit comments

Comments
 (0)