function test() { $stream = new CSSStreamString(file_get_contents(dirname(__FILE__) . '/test.parser.error.1.css')); $lexer = new CSSLexer($stream); $parser = new CSSParser($lexer); $result = $parser->parse(); $this->assertTrue($result); $errors = $parser->get_errors(); $this->assertEquals(count($errors), 1); $this->assertEquals($errors[0]->get_line(), 1); $this->assertEquals($errors[0]->get_skipped_content(), ';'); }
function import_source($css, $url) { $this->push_base_url($url); $ruleset = new CSSRuleset(); $stream = new CSSStreamString($css); $lexer = new CSSLexer($stream); $parser = new CSSParser($lexer); $result = $parser->parse(); // Log CSS parse errors $errors = $parser->get_errors(); foreach ($errors as $error) { $error->log($url); } if (!$result) { error_log(sprintf('Unrecoverable syntax error while parsing stylesheet at "%s"', $url)); } $stylesheet = $parser->get_context(); // Process @import $imports = $stylesheet->get_imports(); foreach ($imports as $import) { $media_list = $import->get_media(); if (empty($media_list) || in_array('all', $media_list) || $this->is_allowed_media($import->get_media())) { $pipeline = $this->get_pipeline(); $full_url = $pipeline->guess_url(css_remove_value_quotes($import->get_url())); $ruleset->merge($this->import($full_url)); } } // Process @media $media = $stylesheet->get_media(); foreach ($media as $media_item) { if ($this->is_allowed_media($media_item->get_media())) { $ruleset->merge($this->import_rulesets($media_item->get_rulesets())); } } // Process usual rules $ruleset->merge($this->import_rulesets($stylesheet->get_rulesets())); $this->pop_base_url(); return $ruleset; }