From 169e562488976ff2906004e8366b8f0eb4af28e1 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Fri, 16 Feb 2024 17:00:34 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A5=20Refactor=20TypeId/Any=20use,=20d?= =?UTF-8?q?rop=20own=20Handle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- drust/src/main.rs | 1 - examples/hello-name.rs | 1 - examples/hello-world.rs | 1 - helpers/pagetop-macros/src/lib.rs | 45 +------------------ packages/pagetop-admin/src/lib.rs | 1 - packages/pagetop-bootsier/src/lib.rs | 15 +++---- packages/pagetop-bulmix/src/lib.rs | 15 +++---- packages/pagetop-homedemo/src/lib.rs | 1 - packages/pagetop-node/src/lib.rs | 1 - packages/pagetop-user/src/lib.rs | 1 - .../component/after_prepare_component.rs | 12 +++-- .../component/before_prepare_component.rs | 12 +++-- src/base/action/page/after_prepare_body.rs | 4 +- src/base/action/page/before_prepare_body.rs | 4 +- src/base/component/block.rs | 3 +- src/base/component/branding.rs | 3 +- src/base/component/button.rs | 3 +- src/base/component/error403.rs | 2 - src/base/component/error404.rs | 2 - src/base/component/flex/container.rs | 3 +- src/base/component/flex/item.rs | 3 +- src/base/component/form/action_button.rs | 3 +- src/base/component/form/date.rs | 3 +- src/base/component/form/form_main.rs | 3 +- src/base/component/form/hidden.rs | 3 +- src/base/component/form/input.rs | 3 +- src/base/component/heading.rs | 3 +- src/base/component/html.rs | 3 +- src/base/component/icon.rs | 3 +- src/base/component/image.rs | 3 +- src/base/component/menu/element.rs | 3 +- src/base/component/menu/group.rs | 3 +- src/base/component/menu/item.rs | 3 +- src/base/component/menu/megamenu.rs | 3 +- src/base/component/menu/menu_main.rs | 3 +- src/base/component/menu/submenu.rs | 3 +- src/base/component/paragraph.rs | 3 +- src/base/component/powered_by.rs | 3 +- src/base/component/translate.rs | 3 +- src/base/component/wrapper.rs | 3 +- src/base/theme/basic.rs | 2 - src/base/theme/chassis.rs | 2 - src/base/theme/inception.rs | 2 - src/core.rs | 27 +++++++++++ src/core/action.rs | 2 +- src/core/action/all.rs | 8 ++-- src/core/action/definition.rs | 21 +++------ src/core/component/arc_any.rs | 10 ++--- src/core/component/arc_typed.rs | 10 ++--- src/core/component/definition.rs | 25 +++-------- src/core/package.rs | 2 +- src/core/package/all.rs | 8 ++-- src/core/package/definition.rs | 16 ++----- src/core/theme/definition.rs | 28 ++++++------ src/core/theme/regions.rs | 10 ++--- src/lib.rs | 19 +------- src/prelude.rs | 6 ++- src/util.rs | 37 +-------------- tests/server/health_check.rs | 1 - 59 files changed, 137 insertions(+), 289 deletions(-) diff --git a/drust/src/main.rs b/drust/src/main.rs index 98f3b4c7..d1381154 100644 --- a/drust/src/main.rs +++ b/drust/src/main.rs @@ -1,6 +1,5 @@ use pagetop::prelude::*; -#[derive(AssignHandle)] struct Drust; impl PackageTrait for Drust { diff --git a/examples/hello-name.rs b/examples/hello-name.rs index 4798c08b..dab31818 100644 --- a/examples/hello-name.rs +++ b/examples/hello-name.rs @@ -1,6 +1,5 @@ use pagetop::prelude::*; -#[derive(AssignHandle)] struct HelloName; impl PackageTrait for HelloName { diff --git a/examples/hello-world.rs b/examples/hello-world.rs index 0dff3883..eb7ef636 100644 --- a/examples/hello-world.rs +++ b/examples/hello-world.rs @@ -1,6 +1,5 @@ use pagetop::prelude::*; -#[derive(AssignHandle)] struct HelloWorld; impl PackageTrait for HelloWorld { diff --git a/helpers/pagetop-macros/src/lib.rs b/helpers/pagetop-macros/src/lib.rs index dbea55d1..32c25968 100644 --- a/helpers/pagetop-macros/src/lib.rs +++ b/helpers/pagetop-macros/src/lib.rs @@ -2,9 +2,8 @@ mod maud; use concat_string::concat_string; use proc_macro::TokenStream; -use proc_macro2::TokenStream as TokenStream2; use proc_macro_error::proc_macro_error; -use quote::{format_ident, quote, quote_spanned, ToTokens}; +use quote::{quote, quote_spanned, ToTokens}; use syn::{parse_macro_input, parse_str, DeriveInput, ItemFn}; #[proc_macro] @@ -103,48 +102,6 @@ pub fn test(_: TokenStream, item: TokenStream) -> TokenStream { output } -#[proc_macro_derive(AssignHandle, attributes(handle))] -pub fn assign_handle_derive(input: TokenStream) -> TokenStream { - impl_handle(input, quote! { pagetop }) -} - -#[proc_macro_derive(BaseHandle, attributes(handle))] -pub fn base_handle_derive(input: TokenStream) -> TokenStream { - impl_handle(input, quote! { crate }) -} - -fn impl_handle(input: TokenStream, crate_name: TokenStream2) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl(); - - let name = &input.ident; - let handle_name = format_ident!("HANDLE_{}", name.to_string().to_uppercase()); - - let expanded = quote! { - const #handle_name: #crate_name::Handle = - #crate_name::util::handle(module_path!(), file!(), line!(), column!()); - - impl #impl_generics #crate_name::ImplementHandle for #name #ty_generics #where_clause { - #[inline] - fn static_handle() -> #crate_name::Handle { - #handle_name - } - - #[inline] - fn matches_handle(is: #crate_name::Handle) -> bool { - is == #handle_name - } - - #[inline] - fn handle(&self) -> #crate_name::Handle { - #handle_name - } - } - }; - - TokenStream::from(expanded) -} - #[proc_macro_derive(ComponentClasses)] pub fn component_classes_derive(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as DeriveInput); diff --git a/packages/pagetop-admin/src/lib.rs b/packages/pagetop-admin/src/lib.rs index 5bb2391a..44bcd938 100644 --- a/packages/pagetop-admin/src/lib.rs +++ b/packages/pagetop-admin/src/lib.rs @@ -4,7 +4,6 @@ static_locales!(LOCALES_ADMIN); mod summary; -#[derive(AssignHandle)] pub struct Admin; impl PackageTrait for Admin { diff --git a/packages/pagetop-bootsier/src/lib.rs b/packages/pagetop-bootsier/src/lib.rs index 7e72add9..eb4f06b8 100644 --- a/packages/pagetop-bootsier/src/lib.rs +++ b/packages/pagetop-bootsier/src/lib.rs @@ -4,7 +4,6 @@ static_locales!(LOCALES_BOOTSIER); static_files!(bootsier); -#[derive(AssignHandle)] pub struct Bootsier; impl PackageTrait for Bootsier { @@ -81,8 +80,8 @@ impl ThemeTrait for Bootsier { } fn before_prepare_component(&self, component: &mut dyn ComponentTrait, _cx: &mut Context) { - match component.handle() { - h if Icon::matches_handle(h) => { + match component.type_id() { + t if t == TypeId::of::() => { if let Some(i) = component_as_mut::(component) { match i.font_size() { FontSize::ExtraLarge => { @@ -104,7 +103,7 @@ impl ThemeTrait for Bootsier { }; } } - h if Button::matches_handle(h) => { + t if t == TypeId::of::