From 096e728ddc65734bf837dd9b539728e0bf888790 Mon Sep 17 00:00:00 2001 From: Nick Stallman Date: Wed, 23 Feb 2011 14:01:09 +1100 Subject: [PATCH] Added support for merging multiple selectors --- CSSParser.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/CSSParser.php b/CSSParser.php index 77eb3faf..953b86c4 100644 --- a/CSSParser.php +++ b/CSSParser.php @@ -47,7 +47,7 @@ private function parseList(CSSList $oList, $bIsRoot = false) { return; } } else { - $oList->append($this->parseSelector()); + $this->parseSelector($oList); } $this->consumeWhiteSpace(); } @@ -180,13 +180,26 @@ private function parseCharacter($bIsForIdentifier) { return null; } - private function parseSelector() { + private function parseSelector($oList) { $oResult = new CSSSelector(); $oResult->setSelector($this->consumeUntil('{')); + + $results = $oList->getAllSelectors(); + foreach ($results as $selector) + { + if ($oResult->getSelector() == $selector->getSelector()) + { + $this->consume('{'); + $this->consumeWhiteSpace(); + $this->parseRuleSet($selector); + return; + } + } + $this->consume('{'); $this->consumeWhiteSpace(); $this->parseRuleSet($oResult); - return $oResult; + $oList->append($oResult); } private function parseRuleSet($oRuleSet) {