From d0add7c7ab8ab58293e854647dcf8f2ef71ad7c0 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Tue, 30 May 2023 19:21:53 +0200 Subject: [PATCH] =?UTF-8?q?=E2=8F=AA=20Revierte=20anterior=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pagetop/src/core/component/basic.rs | 39 +++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/pagetop/src/core/component/basic.rs b/pagetop/src/core/component/basic.rs index 9c57b49d..86fd7e78 100644 --- a/pagetop/src/core/component/basic.rs +++ b/pagetop/src/core/component/basic.rs @@ -1,7 +1,7 @@ use crate::core::component::{AnyComponent, ComponentTrait, RenderContext}; use crate::html::{html, Markup, PreEscaped}; use crate::locale::{translate, Locale, Locales}; -use crate::{define_handle, paste, Handle}; +use crate::{define_handle, fn_builder, paste, Handle}; use std::collections::HashMap; @@ -10,7 +10,7 @@ macro_rules! basic_components { define_handle!($COMPONENT_HANDLE); - enum [< $Component Op >] { + pub enum [< $Component Op >] { None, Value($TypeValue), Translated(&'static str, &'static Locales), @@ -41,7 +41,7 @@ macro_rules! basic_components { } fn default_render(&self, rcx: &mut RenderContext) -> Markup { - match &self.op { + match self.op() { [< $Component Op >]::None => html! {}, [< $Component Op >]::Value(value) => html! { (value) }, [< $Component Op >]::Translated(key, locales) => html! { @@ -50,7 +50,7 @@ macro_rules! basic_components { Locale::Using( rcx.langid(), locales, - &self.args.iter().fold(HashMap::new(), |mut args, (key, value)| { + &self.args().iter().fold(HashMap::new(), |mut args, (key, value)| { args.insert(key.to_string(), value.to_owned().into()); args }) @@ -63,7 +63,7 @@ macro_rules! basic_components { Locale::Using( rcx.langid(), locales, - &self.args.iter().fold(HashMap::new(), |mut args, (key, value)| { + &self.args().iter().fold(HashMap::new(), |mut args, (key, value)| { args.insert(key.to_string(), value.to_owned().into()); args }) @@ -103,6 +103,35 @@ macro_rules! basic_components { ..Default::default() } } + + // $Component BUILDER. + + #[fn_builder] + pub fn alter_op(&mut self, op: [< $Component Op >]) -> &mut Self { + self.op = op; + self + } + + #[fn_builder] + pub fn alter_arg(&mut self, arg: &'static str, value: String) -> &mut Self { + self.args.insert(arg, value); + self + } + + pub fn clear_args(&mut self) -> &mut Self { + self.args.drain(); + self + } + + // $Component GETTERS. + + pub fn op(&self) -> &[< $Component Op >] { + &self.op + } + + pub fn args(&self) -> &HashMap<&str, String> { + &self.args + } } } )* };