🐛 (web): HttpRequest clona ahora las extensiones

Documenta el nuevo comportamiento y aprovecha para pulir varios
comentarios y restringir visibilidad de símbolos internos.
This commit is contained in:
Manuel Cillero 2026-07-16 19:54:09 +02:00
parent 370bc8ee47
commit 6f82da220b
11 changed files with 55 additions and 56 deletions

View file

@ -73,7 +73,7 @@ where
/// Despacha las funciones asociadas a una [`ActionKey`] con posible salida anticipada.
///
/// Funciona igual que [`dispatch_actions`], pero el *closure* puede devolver
/// Funciona igual que [`dispatch_actions`], pero el closure puede devolver
/// [`std::ops::ControlFlow::Continue`] para continuar ejecutando la siguiente acción; o
/// [`std::ops::ControlFlow::Break`] para detener la iteración inmediatamente.
///

View file

@ -310,7 +310,8 @@ impl Children {
}
}
// Añade un componente hijo al final de la lista.
// Añade un componente hijo al final de la lista. También lo usa `core::theme::regions` al
// fusionar regiones, fuera de este módulo.
#[inline]
pub(crate) fn add(&mut self, child: Child) -> &mut Self {
self.0.push(child);

View file

@ -110,15 +110,27 @@ pub trait Component: AnyInfo + ComponentClone + ComponentRender + Send + Sync {
/// Genera el marcado HTML del componente cuando ningún tema lo sobrescribe.
///
/// Cuarto paso del [ciclo de renderizado](ComponentRender): se invoca tras
/// [`setup()`](Self::setup) y la acción
/// [`BeforeRender`](crate::base::action::component::BeforeRender), pero solamente si ningún
/// tema en la cadena devuelve `Some` en
/// [`Theme::handle_component()`](crate::core::theme::Theme::handle_component).
/// Este es el cuarto paso del [ciclo de renderizado](ComponentRender) tras llamar al
/// [`setup()`](Self::setup) del componente y despachar la acción
/// [`BeforeRender`](crate::base::action::component::BeforeRender) que atiende los cambios de
/// otras extensiones antes de renderizar. Se invoca sólo si ningún tema en la cadena devuelve
/// `Some` en [`Theme::handle_component()`](crate::core::theme::Theme::handle_component) para
/// este componente.
///
/// Es `async`, a diferencia de [`setup()`](Self::setup), para permitir a los componentes
/// realizar aquí sus llamadas asíncronas, como consultas a base de datos, peticiones a
/// servicios externos, o cualquier operación de E/S, que necesiten para preparar su contenido.
///
/// Se recomienda obtener los datos del componente a través de sus propios métodos para que los
/// temas puedan implementar `handle_component()` sin depender de los detalles internos.
///
/// Los campos que representen contenido no deben almacenar [`Markup`] ya generado, sino que
/// guardarán el dato en bruto, por ejemplo [`L10n`](crate::locale::L10n) para textos
/// traducibles, o un componente anidado como [`Html`](crate::base::component::Html), o
/// cualquier otro `Component`, normalmente a través de [`Embed`](crate::core::component::Embed)
/// o [`Child`](crate::core::component::Child); y será este método quien lo convierta en HTML en
/// el momento del renderizado, no quien construye la instancia.
///
/// Por defecto, devuelve un [`Markup`] vacío (`Ok(html! {})`). En caso de error, devuelve un
/// [`ComponentError`] que puede incluir un marcado alternativo (*fallback*).
#[allow(unused_variables)]

View file

@ -51,10 +51,9 @@ impl ComponentError {
// **< ComponentError GETTERS >*****************************************************************
/// Consume el error y devuelve su marcado alternativo.
///
/// Se invoca internamente en [`ComponentRender`](crate::core::component::ComponentRender).
pub(crate) fn into_fallback(self) -> Markup {
// Consume el error y devuelve su marcado alternativo. Se invoca internamente desde
// `ComponentRender::render()`, en el mismo módulo `core::component`.
pub(super) fn into_fallback(self) -> Markup {
self.fallback
}
}