ladybird/Libraries/LibWeb/CSS/PropertyName.h
Sam Atkins 05884f1d91 LibWeb/CSS: Implement is_a_valid_css_property()
Also mark these functions as inline instead of static, to fix a compiler
error about them being unused.
2025-08-13 09:47:50 +01:00

37 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2024-2025, Sam Atkins <sam@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/StringView.h>
#include <LibWeb/CSS/PropertyID.h>
namespace Web::CSS {
inline bool is_invalid_custom_property_name_string(StringView string)
{
// https://drafts.csswg.org/css-variables-2/#typedef-custom-property-name
// The <custom-property-name> production corresponds to this: its defined as any <dashed-ident>
// (a valid identifier that starts with two dashes), except -- itself, which is reserved for future use by CSS.
return string == "--"sv;
}
// https://drafts.css-houdini.org/css-typed-om-1/#custom-property-name-string
inline bool is_a_custom_property_name_string(StringView string)
{
// A string is a custom property name string if it starts with two dashes (U+002D HYPHEN-MINUS), like --foo.
return string.starts_with("--"sv) && !is_invalid_custom_property_name_string(string);
}
// https://drafts.css-houdini.org/css-typed-om-1/#valid-css-property
inline bool is_a_valid_css_property(StringView string)
{
// A string is a valid CSS property if it is a custom property name string, or is a CSS property name recognized by
// the user agent.
return is_a_custom_property_name_string(string) || property_id_from_string(string).has_value();
}
}