Sabberworm\CSS\Parser::parseValue PHP Метод

parseValue() приватный Метод

private parseValue ( $aListDelimiters )
    private function parseValue($aListDelimiters)
    {
        $aStack = array();
        $this->consumeWhiteSpace();
        //Build a list of delimiters and parsed values
        while (!($this->comes('}') || $this->comes(';') || $this->comes('!') || $this->comes(')'))) {
            if (count($aStack) > 0) {
                $bFoundDelimiter = false;
                foreach ($aListDelimiters as $sDelimiter) {
                    if ($this->comes($sDelimiter)) {
                        array_push($aStack, $this->consume($sDelimiter));
                        $this->consumeWhiteSpace();
                        $bFoundDelimiter = true;
                        break;
                    }
                }
                if (!$bFoundDelimiter) {
                    //Whitespace was the list delimiter
                    array_push($aStack, ' ');
                }
            }
            array_push($aStack, $this->parsePrimitiveValue());
            $this->consumeWhiteSpace();
        }
        //Convert the list to list objects
        foreach ($aListDelimiters as $sDelimiter) {
            if (count($aStack) === 1) {
                return $aStack[0];
            }
            $iStartPosition = null;
            while (($iStartPosition = array_search($sDelimiter, $aStack, true)) !== false) {
                $iLength = 2;
                //Number of elements to be joined
                for ($i = $iStartPosition + 2; $i < count($aStack); $i += 2, ++$iLength) {
                    if ($sDelimiter !== $aStack[$i]) {
                        break;
                    }
                }
                $oList = new RuleValueList($sDelimiter);
                for ($i = $iStartPosition - 1; $i - $iStartPosition + 1 < $iLength * 2; $i += 2) {
                    $oList->addListComponent($aStack[$i]);
                }
                array_splice($aStack, $iStartPosition - 1, $iLength * 2 - 1, array($oList));
            }
        }
        return $aStack[0];
    }