♻️ Reorganización de macros declarativas
This commit is contained in:
parent
99b08fa201
commit
19af38cb06
13 changed files with 80 additions and 70 deletions
|
|
@ -21,10 +21,11 @@ impl ModuleTrait for Admin {
|
||||||
Some(l("module_description"))
|
Some(l("module_description"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[rustfmt::skip]
|
||||||
fn dependencies(&self) -> Vec<ModuleStaticRef> {
|
fn dependencies(&self) -> Vec<ModuleStaticRef> {
|
||||||
vec![
|
vec![
|
||||||
&pagetop_minimal::Minimal,
|
&pagetop_minimal::Minimal,
|
||||||
&pagetop_megamenu::MegaMenu
|
&pagetop_megamenu::MegaMenu,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
use super::l;
|
use super::l;
|
||||||
use pagetop::prelude::*;
|
use pagetop::prelude::*;
|
||||||
use pagetop_minimal::component::*;
|
|
||||||
use pagetop_megamenu::component::{MegaMenu, MegaMenuItem};
|
use pagetop_megamenu::component::{MegaMenu, MegaMenuItem};
|
||||||
|
use pagetop_minimal::component::*;
|
||||||
|
|
||||||
pub async fn summary(request: server::HttpRequest) -> ResultPage<Markup, FatalError> {
|
pub async fn summary(request: server::HttpRequest) -> ResultPage<Markup, FatalError> {
|
||||||
let top_menu = MegaMenu::new()
|
let top_menu = MegaMenu::new()
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ impl ModuleTrait for Bulmix {
|
||||||
Some(&Bulmix)
|
Some(&Bulmix)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[rustfmt::skip]
|
||||||
fn dependencies(&self) -> Vec<ModuleStaticRef> {
|
fn dependencies(&self) -> Vec<ModuleStaticRef> {
|
||||||
vec![
|
vec![
|
||||||
&pagetop_jquery::JQuery,
|
&pagetop_jquery::JQuery,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
use crate::core::module::{ModuleTrait, ThemeStaticRef, ThemeTrait};
|
use crate::core::module::{ModuleTrait, ThemeStaticRef, ThemeTrait};
|
||||||
use crate::html::Favicon;
|
use crate::html::Favicon;
|
||||||
use crate::response::page::Page;
|
use crate::response::page::Page;
|
||||||
use crate::server;
|
use crate::{define_handle, serve_static_files, server, Handle};
|
||||||
use crate::util::Handle;
|
|
||||||
use crate::{define_handle, serve_static_files};
|
|
||||||
|
|
||||||
define_handle!(THEME_BASIC);
|
define_handle!(THEME_BASIC);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
use super::RenderContext;
|
use super::RenderContext;
|
||||||
|
|
||||||
use crate::html::{html, Markup};
|
use crate::html::{html, Markup};
|
||||||
use crate::util::{single_type_name, Handle};
|
use crate::util::single_type_name;
|
||||||
|
use crate::Handle;
|
||||||
|
|
||||||
pub use std::any::Any as AnyComponent;
|
pub use std::any::Any as AnyComponent;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
use crate::core::component::{AnyComponent, ComponentTrait, RenderContext};
|
use crate::core::component::{AnyComponent, ComponentTrait, RenderContext};
|
||||||
use crate::html::{html, Markup};
|
use crate::html::{html, Markup};
|
||||||
use crate::define_handle;
|
use crate::{define_handle, Handle};
|
||||||
use crate::util::Handle;
|
|
||||||
|
|
||||||
define_handle!(HTML_MARKUP);
|
define_handle!(HTML_MARKUP);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
use super::{ActionsHolder, HookAction};
|
use super::{ActionsHolder, HookAction};
|
||||||
use crate::util::Handle;
|
use crate::{Handle, LazyStatic};
|
||||||
use crate::LazyStatic;
|
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::sync::RwLock;
|
use std::sync::RwLock;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::util::Handle;
|
use crate::Handle;
|
||||||
|
|
||||||
pub use std::any::Any as AnyHookAction;
|
pub use std::any::Any as AnyHookAction;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
use super::ThemeStaticRef;
|
use super::ThemeStaticRef;
|
||||||
|
|
||||||
use crate::core::hook::HookAction;
|
use crate::core::hook::HookAction;
|
||||||
use crate::server;
|
use crate::util::single_type_name;
|
||||||
use crate::util::{single_type_name, Handle};
|
use crate::{server, Handle};
|
||||||
|
|
||||||
#[cfg(feature = "database")]
|
#[cfg(feature = "database")]
|
||||||
use crate::db::MigrationItem;
|
use crate::db::MigrationItem;
|
||||||
|
|
|
||||||
|
|
@ -28,29 +28,40 @@
|
||||||
//!
|
//!
|
||||||
//! * Tipos de respuestas a peticiones web ([`response`])
|
//! * Tipos de respuestas a peticiones web ([`response`])
|
||||||
//!
|
//!
|
||||||
//! * Utilidades de carácter global ([`util`]).
|
//! * Funciones útiles ([`util`]).
|
||||||
//!
|
//!
|
||||||
//! # 🚧 Advertencia
|
//! # 🚧 Advertencia
|
||||||
//!
|
//!
|
||||||
//! **PageTop** sólo libera actualmente versiones de desarrollo. La API no es estable y los cambios
|
//! **PageTop** sólo libera actualmente versiones de desarrollo. La API no es estable y los cambios
|
||||||
//! son constantes. No puede considerarse preparado hasta que se libere la versión **0.1.0**.
|
//! son constantes. No puede considerarse preparado hasta que se libere la versión **0.1.0**.
|
||||||
|
|
||||||
|
// *************************************************************************************************
|
||||||
// GLOBAL.
|
// GLOBAL.
|
||||||
|
// *************************************************************************************************
|
||||||
|
|
||||||
pub use concat_string::concat_string;
|
pub use concat_string::concat_string;
|
||||||
pub use doc_comment::doc_comment;
|
pub use doc_comment::doc_comment;
|
||||||
pub use once_cell::sync::Lazy as LazyStatic;
|
pub use once_cell::sync::Lazy as LazyStatic;
|
||||||
pub use paste::paste;
|
pub use paste::paste;
|
||||||
|
pub use static_files::Resource as StaticResource;
|
||||||
pub use tracing_unwrap::ResultExt;
|
pub use tracing_unwrap::ResultExt;
|
||||||
|
|
||||||
pub use pagetop_macros::fn_builder;
|
pub use pagetop_macros::fn_builder;
|
||||||
|
|
||||||
|
pub type HashMapResources = std::collections::HashMap<&'static str, StaticResource>;
|
||||||
|
|
||||||
|
pub type Handle = u64;
|
||||||
|
|
||||||
|
// *************************************************************************************************
|
||||||
// LOCAL.
|
// LOCAL.
|
||||||
|
// *************************************************************************************************
|
||||||
|
|
||||||
#[allow(unused_imports)]
|
#[allow(unused_imports)]
|
||||||
pub(crate) use futures::executor::block_on as run_now;
|
pub(crate) use futures::executor::block_on as run_now;
|
||||||
|
|
||||||
|
// *************************************************************************************************
|
||||||
// APIs PÚBLICAS.
|
// APIs PÚBLICAS.
|
||||||
|
// *************************************************************************************************
|
||||||
|
|
||||||
// Gestión de la configuración.
|
// Gestión de la configuración.
|
||||||
pub mod config;
|
pub mod config;
|
||||||
|
|
@ -74,12 +85,61 @@ pub mod server;
|
||||||
// Tipos de respuestas a peticiones web.
|
// Tipos de respuestas a peticiones web.
|
||||||
pub mod response;
|
pub mod response;
|
||||||
|
|
||||||
// Macros y funciones útiles.
|
// Funciones útiles.
|
||||||
pub mod util;
|
pub mod util;
|
||||||
|
|
||||||
// Prepara y ejecuta la aplicación.
|
// Prepara y ejecuta la aplicación.
|
||||||
pub mod app;
|
pub mod app;
|
||||||
|
|
||||||
|
// *************************************************************************************************
|
||||||
|
// MACROS DECLARATIVAS.
|
||||||
|
// *************************************************************************************************
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
/// Macro para construir grupos de pares clave-valor.
|
||||||
|
///
|
||||||
|
/// ```rust#ignore
|
||||||
|
/// let args = args![
|
||||||
|
/// "userName" => "Roberto",
|
||||||
|
/// "photoCount" => 3,
|
||||||
|
/// "userGender" => "male"
|
||||||
|
/// ];
|
||||||
|
/// ```
|
||||||
|
macro_rules! args {
|
||||||
|
( $($key:expr => $value:expr),* ) => {{
|
||||||
|
let mut a = std::collections::HashMap::new();
|
||||||
|
$(
|
||||||
|
a.insert(String::from($key), $value.into());
|
||||||
|
)*
|
||||||
|
a
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! define_handle {
|
||||||
|
( $HANDLE:ident ) => {
|
||||||
|
pub const $HANDLE: $crate::Handle =
|
||||||
|
$crate::util::handle(module_path!(), file!(), line!(), column!());
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! serve_static_files {
|
||||||
|
( $cfg:ident, $dir:expr, $embed:ident ) => {{
|
||||||
|
let static_files = &$crate::config::SETTINGS.dev.static_files;
|
||||||
|
if static_files.is_empty() {
|
||||||
|
$cfg.service($crate::server::ResourceFiles::new($dir, $embed()));
|
||||||
|
} else {
|
||||||
|
$cfg.service(
|
||||||
|
$crate::server::ActixFiles::new($dir, $crate::concat_string!(static_files, $dir))
|
||||||
|
.show_files_listing(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
// *************************************************************************************************
|
||||||
// RE-EXPORTA API ÚNICA.
|
// RE-EXPORTA API ÚNICA.
|
||||||
|
// *************************************************************************************************
|
||||||
|
|
||||||
pub mod prelude;
|
pub mod prelude;
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
// Re-exports.
|
// Re-exports.
|
||||||
pub use crate::{concat_string, fn_builder, LazyStatic, ResultExt};
|
pub use crate::{concat_string, fn_builder, Handle, HashMapResources, LazyStatic, ResultExt};
|
||||||
|
|
||||||
// Macros.
|
// Macros declarativas.
|
||||||
pub use crate::{args, paste, define_config, define_handle, define_locale, serve_static_files};
|
pub use crate::{args, define_config, define_handle, define_locale, paste, serve_static_files};
|
||||||
|
|
||||||
// Helpers.
|
// Funciones útiles.
|
||||||
pub use crate::util;
|
pub use crate::util;
|
||||||
pub use crate::util::{Handle, HashMapResources};
|
|
||||||
|
|
||||||
// *************************************************************************************************
|
// *************************************************************************************************
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
use super::Page;
|
use super::Page;
|
||||||
use crate::core::hook::{AnyHookAction, HookActionTrait};
|
use crate::core::hook::{AnyHookAction, HookActionTrait};
|
||||||
use crate::define_handle;
|
use crate::{define_handle, Handle};
|
||||||
use crate::util::Handle;
|
|
||||||
|
|
||||||
define_handle!(HOOK_BEFORE_RENDER_PAGE);
|
define_handle!(HOOK_BEFORE_RENDER_PAGE);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
pub use static_files::Resource as StaticResource;
|
use crate::Handle;
|
||||||
|
|
||||||
pub type HashMapResources = std::collections::HashMap<&'static str, StaticResource>;
|
|
||||||
|
|
||||||
pub type Handle = u64;
|
|
||||||
|
|
||||||
// https://stackoverflow.com/a/71464396
|
// https://stackoverflow.com/a/71464396
|
||||||
pub const fn handle(
|
pub const fn handle(
|
||||||
|
|
@ -38,14 +34,6 @@ pub const fn handle(
|
||||||
hash
|
hash
|
||||||
}
|
}
|
||||||
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! define_handle {
|
|
||||||
( $HANDLE:ident ) => {
|
|
||||||
pub const $HANDLE: $crate::util::Handle =
|
|
||||||
$crate::util::handle(module_path!(), file!(), line!(), column!());
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn partial_type_name(type_name: &'static str, last: usize) -> &'static str {
|
pub fn partial_type_name(type_name: &'static str, last: usize) -> &'static str {
|
||||||
if last == 0 {
|
if last == 0 {
|
||||||
return type_name;
|
return type_name;
|
||||||
|
|
@ -60,38 +48,3 @@ pub fn partial_type_name(type_name: &'static str, last: usize) -> &'static str {
|
||||||
pub fn single_type_name<T: ?Sized>() -> &'static str {
|
pub fn single_type_name<T: ?Sized>() -> &'static str {
|
||||||
partial_type_name(std::any::type_name::<T>(), 1)
|
partial_type_name(std::any::type_name::<T>(), 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[macro_export]
|
|
||||||
/// Macro para construir grupos de pares clave-valor.
|
|
||||||
///
|
|
||||||
/// ```rust#ignore
|
|
||||||
/// let args = args![
|
|
||||||
/// "userName" => "Roberto",
|
|
||||||
/// "photoCount" => 3,
|
|
||||||
/// "userGender" => "male"
|
|
||||||
/// ];
|
|
||||||
/// ```
|
|
||||||
macro_rules! args {
|
|
||||||
( $($key:expr => $value:expr),* ) => {{
|
|
||||||
let mut a = std::collections::HashMap::new();
|
|
||||||
$(
|
|
||||||
a.insert(String::from($key), $value.into());
|
|
||||||
)*
|
|
||||||
a
|
|
||||||
}};
|
|
||||||
}
|
|
||||||
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! serve_static_files {
|
|
||||||
( $cfg:ident, $dir:expr, $embed:ident ) => {{
|
|
||||||
let static_files = &$crate::config::SETTINGS.dev.static_files;
|
|
||||||
if static_files.is_empty() {
|
|
||||||
$cfg.service($crate::server::ResourceFiles::new($dir, $embed()));
|
|
||||||
} else {
|
|
||||||
$cfg.service(
|
|
||||||
$crate::server::ActixFiles::new($dir, $crate::concat_string!(static_files, $dir))
|
|
||||||
.show_files_listing(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}};
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue