mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
LibIDL: Allow overwriting the generated attribute callback name
This will allow the CSSStyleDeclaration IDL attribute generator to implement it's own C++ acceptable identifier sanitization and deduplication.
This commit is contained in:
parent
300f212044
commit
d95ae629ee
Notes:
github-actions[bot]
2024-11-14 18:51:27 +00:00
Author: https://github.com/Lubrsi Commit: https://github.com/LadybirdBrowser/ladybird/commit/d95ae629ee0 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2346
2 changed files with 14 additions and 5 deletions
|
@ -326,8 +326,16 @@ void Parser::parse_attribute(HashMap<ByteString, ByteString>& extended_attribute
|
|||
|
||||
assert_specific(';');
|
||||
|
||||
auto getter_callback_name = ByteString::formatted("{}_getter", name.to_snakecase());
|
||||
auto setter_callback_name = ByteString::formatted("{}_setter", name.to_snakecase());
|
||||
ByteString attribute_callback_name;
|
||||
auto custom_callback_name = extended_attributes.find("AttributeCallbackName");
|
||||
if (custom_callback_name != extended_attributes.end()) {
|
||||
attribute_callback_name = custom_callback_name->value;
|
||||
} else {
|
||||
attribute_callback_name = name.to_snakecase().replace("-"sv, "_"sv, ReplaceMode::All);
|
||||
}
|
||||
|
||||
auto getter_callback_name = ByteString::formatted("{}_getter", attribute_callback_name);
|
||||
auto setter_callback_name = ByteString::formatted("{}_setter", attribute_callback_name);
|
||||
|
||||
Attribute attribute {
|
||||
inherit,
|
||||
|
|
|
@ -2810,14 +2810,15 @@ static void generate_prototype_or_global_mixin_declarations(IDL::Interface const
|
|||
if (attribute.extended_attributes.contains("FIXME"))
|
||||
continue;
|
||||
auto attribute_generator = generator.fork();
|
||||
attribute_generator.set("attribute.name:snakecase", attribute.name.to_snakecase());
|
||||
attribute_generator.set("attribute.getter_callback", attribute.getter_callback_name);
|
||||
attribute_generator.append(R"~~~(
|
||||
JS_DECLARE_NATIVE_FUNCTION(@attribute.name:snakecase@_getter);
|
||||
JS_DECLARE_NATIVE_FUNCTION(@attribute.getter_callback@);
|
||||
)~~~");
|
||||
|
||||
if (!attribute.readonly || attribute.extended_attributes.contains("Replaceable"sv) || attribute.extended_attributes.contains("PutForwards"sv)) {
|
||||
attribute_generator.set("attribute.setter_callback", attribute.setter_callback_name);
|
||||
attribute_generator.append(R"~~~(
|
||||
JS_DECLARE_NATIVE_FUNCTION(@attribute.name:snakecase@_setter);
|
||||
JS_DECLARE_NATIVE_FUNCTION(@attribute.setter_callback@);
|
||||
)~~~");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue