/* * Copyright (c) 2018-2022, Andreas Kling * Copyright (c) 2020-2023, the SerenityOS developers. * Copyright (c) 2021-2023, Sam Atkins * Copyright (c) 2021, Tobias Christiansen * Copyright (c) 2022, MacDue * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include namespace Web { CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingContext const& context, StringView css, Optional location) { if (css.is_empty()) { auto rule_list = CSS::CSSRuleList::create_empty(context.realm()).release_value_but_fixme_should_propagate_errors(); auto media_list = CSS::MediaList::create(context.realm(), {}).release_value_but_fixme_should_propagate_errors(); return CSS::CSSStyleSheet::create(context.realm(), rule_list, media_list, location).release_value_but_fixme_should_propagate_errors(); } auto parser = CSS::Parser::Parser::create(context, css).release_value_but_fixme_should_propagate_errors(); return parser.parse_as_css_stylesheet(location); } CSS::ElementInlineCSSStyleDeclaration* parse_css_style_attribute(CSS::Parser::ParsingContext const& context, StringView css, DOM::Element& element) { if (css.is_empty()) return CSS::ElementInlineCSSStyleDeclaration::create(element, {}, {}).release_value_but_fixme_should_propagate_errors(); auto parser = CSS::Parser::Parser::create(context, css).release_value_but_fixme_should_propagate_errors(); return parser.parse_as_style_attribute(element); } ErrorOr> parse_css_value(CSS::Parser::ParsingContext const& context, StringView string, CSS::PropertyID property_id) { if (string.is_empty()) return nullptr; auto parser = TRY(CSS::Parser::Parser::create(context, string)); return parser.parse_as_css_value(property_id); } CSS::CSSRule* parse_css_rule(CSS::Parser::ParsingContext const& context, StringView css_text) { auto parser = CSS::Parser::Parser::create(context, css_text).release_value_but_fixme_should_propagate_errors(); return parser.parse_as_css_rule(); } Optional parse_selector(CSS::Parser::ParsingContext const& context, StringView selector_text) { auto parser = CSS::Parser::Parser::create(context, selector_text).release_value_but_fixme_should_propagate_errors(); return parser.parse_as_selector(); } RefPtr parse_media_query(CSS::Parser::ParsingContext const& context, StringView string) { auto parser = CSS::Parser::Parser::create(context, string).release_value_but_fixme_should_propagate_errors(); return parser.parse_as_media_query(); } Vector> parse_media_query_list(CSS::Parser::ParsingContext const& context, StringView string) { auto parser = CSS::Parser::Parser::create(context, string).release_value_but_fixme_should_propagate_errors(); return parser.parse_as_media_query_list(); } RefPtr parse_css_supports(CSS::Parser::ParsingContext const& context, StringView string) { if (string.is_empty()) return {}; auto parser = CSS::Parser::Parser::create(context, string).release_value_but_fixme_should_propagate_errors(); return parser.parse_as_supports(); } Optional parse_css_supports_condition(CSS::Parser::ParsingContext const& context, StringView string) { if (string.is_empty()) return {}; auto parser = CSS::Parser::Parser::create(context, string).release_value_but_fixme_should_propagate_errors(); return parser.parse_as_supports_condition(); } }