Ejemplo n.º 1
0
 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(), ';');
 }
Ejemplo n.º 2
0
 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;
 }