♻️ 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"))
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
fn dependencies(&self) -> Vec<ModuleStaticRef> {
|
||||
vec![
|
||||
&pagetop_minimal::Minimal,
|
||||
&pagetop_megamenu::MegaMenu
|
||||
&pagetop_megamenu::MegaMenu,
|
||||
]
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use super::l;
|
||||
use pagetop::prelude::*;
|
||||
use pagetop_minimal::component::*;
|
||||
use pagetop_megamenu::component::{MegaMenu, MegaMenuItem};
|
||||
use pagetop_minimal::component::*;
|
||||
|
||||
pub async fn summary(request: server::HttpRequest) -> ResultPage<Markup, FatalError> {
|
||||
let top_menu = MegaMenu::new()
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ impl ModuleTrait for Bulmix {
|
|||
Some(&Bulmix)
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
fn dependencies(&self) -> Vec<ModuleStaticRef> {
|
||||
vec![
|
||||
&pagetop_jquery::JQuery,
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
use crate::core::module::{ModuleTrait, ThemeStaticRef, ThemeTrait};
|
||||
use crate::html::Favicon;
|
||||
use crate::response::page::Page;
|
||||
use crate::server;
|
||||
use crate::util::Handle;
|
||||
use crate::{define_handle, serve_static_files};
|
||||
use crate::{define_handle, serve_static_files, server, Handle};
|
||||
|
||||
define_handle!(THEME_BASIC);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
use super::RenderContext;
|
||||
|
||||
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;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
use crate::core::component::{AnyComponent, ComponentTrait, RenderContext};
|
||||
use crate::html::{html, Markup};
|
||||
use crate::define_handle;
|
||||
use crate::util::Handle;
|
||||
use crate::{define_handle, Handle};
|
||||
|
||||
define_handle!(HTML_MARKUP);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
use super::{ActionsHolder, HookAction};
|
||||
use crate::util::Handle;
|
||||
use crate::LazyStatic;
|
||||
use crate::{Handle, LazyStatic};
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::sync::RwLock;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use crate::util::Handle;
|
||||
use crate::Handle;
|
||||
|
||||
pub use std::any::Any as AnyHookAction;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
use super::ThemeStaticRef;
|
||||
|
||||
use crate::core::hook::HookAction;
|
||||
use crate::server;
|
||||
use crate::util::{single_type_name, Handle};
|
||||
use crate::util::single_type_name;
|
||||
use crate::{server, Handle};
|
||||
|
||||
#[cfg(feature = "database")]
|
||||
use crate::db::MigrationItem;
|
||||
|
|
|
|||
|
|
@ -28,29 +28,40 @@
|
|||
//!
|
||||
//! * Tipos de respuestas a peticiones web ([`response`])
|
||||
//!
|
||||
//! * Utilidades de carácter global ([`util`]).
|
||||
//! * Funciones útiles ([`util`]).
|
||||
//!
|
||||
//! # 🚧 Advertencia
|
||||
//!
|
||||
//! **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**.
|
||||
|
||||
// *************************************************************************************************
|
||||
// GLOBAL.
|
||||
// *************************************************************************************************
|
||||
|
||||
pub use concat_string::concat_string;
|
||||
pub use doc_comment::doc_comment;
|
||||
pub use once_cell::sync::Lazy as LazyStatic;
|
||||
pub use paste::paste;
|
||||
pub use static_files::Resource as StaticResource;
|
||||
pub use tracing_unwrap::ResultExt;
|
||||
|
||||
pub use pagetop_macros::fn_builder;
|
||||
|
||||
pub type HashMapResources = std::collections::HashMap<&'static str, StaticResource>;
|
||||
|
||||
pub type Handle = u64;
|
||||
|
||||
// *************************************************************************************************
|
||||
// LOCAL.
|
||||
// *************************************************************************************************
|
||||
|
||||
#[allow(unused_imports)]
|
||||
pub(crate) use futures::executor::block_on as run_now;
|
||||
|
||||
// *************************************************************************************************
|
||||
// APIs PÚBLICAS.
|
||||
// *************************************************************************************************
|
||||
|
||||
// Gestión de la configuración.
|
||||
pub mod config;
|
||||
|
|
@ -74,12 +85,61 @@ pub mod server;
|
|||
// Tipos de respuestas a peticiones web.
|
||||
pub mod response;
|
||||
|
||||
// Macros y funciones útiles.
|
||||
// Funciones útiles.
|
||||
pub mod util;
|
||||
|
||||
// Prepara y ejecuta la aplicación.
|
||||
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.
|
||||
// *************************************************************************************************
|
||||
|
||||
pub mod prelude;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
// Re-exports.
|
||||
pub use crate::{concat_string, fn_builder, LazyStatic, ResultExt};
|
||||
pub use crate::{concat_string, fn_builder, Handle, HashMapResources, LazyStatic, ResultExt};
|
||||
|
||||
// Macros.
|
||||
pub use crate::{args, paste, define_config, define_handle, define_locale, serve_static_files};
|
||||
// Macros declarativas.
|
||||
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::{Handle, HashMapResources};
|
||||
|
||||
// *************************************************************************************************
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
use super::Page;
|
||||
use crate::core::hook::{AnyHookAction, HookActionTrait};
|
||||
use crate::define_handle;
|
||||
use crate::util::Handle;
|
||||
use crate::{define_handle, Handle};
|
||||
|
||||
define_handle!(HOOK_BEFORE_RENDER_PAGE);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,4 @@
|
|||
pub use static_files::Resource as StaticResource;
|
||||
|
||||
pub type HashMapResources = std::collections::HashMap<&'static str, StaticResource>;
|
||||
|
||||
pub type Handle = u64;
|
||||
use crate::Handle;
|
||||
|
||||
// https://stackoverflow.com/a/71464396
|
||||
pub const fn handle(
|
||||
|
|
@ -38,14 +34,6 @@ pub const fn handle(
|
|||
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 {
|
||||
if last == 0 {
|
||||
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 {
|
||||
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