diff --git a/Cargo.lock b/Cargo.lock index 7dd0c50b..eda0a31e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1580,7 +1580,6 @@ dependencies = [ "pagetop-minimal", "pagetop-statics", "parking_lot", - "pastey", "serde", "serde_json", "substring", @@ -1634,6 +1633,7 @@ version = "0.0.10" dependencies = [ "concat-string", "indoc", + "pastey", ] [[package]] @@ -1673,9 +1673,9 @@ dependencies = [ [[package]] name = "pastey" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" +checksum = "57d6c094ee800037dff99e02cab0eaf3142826586742a270ab3d7a62656bd27a" [[package]] name = "path-matchers" diff --git a/Cargo.toml b/Cargo.toml index db70e370..a96620d5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,6 @@ figlet-rs = "0.1" getter-methods = "2.0" itoa = "1.0" parking_lot = "0.12" -paste = { package = "pastey", version = "0.1" } substring = "1.4" terminal_size = "0.4" diff --git a/helpers/pagetop-minimal/Cargo.toml b/helpers/pagetop-minimal/Cargo.toml index a91f340b..4f9b67a0 100644 --- a/helpers/pagetop-minimal/Cargo.toml +++ b/helpers/pagetop-minimal/Cargo.toml @@ -18,3 +18,4 @@ authors.workspace = true [dependencies] concat-string = "1.0" indoc = "2.0" +pastey = "0.2" diff --git a/helpers/pagetop-minimal/README.md b/helpers/pagetop-minimal/README.md index 4ffbf60f..16f73963 100644 --- a/helpers/pagetop-minimal/README.md +++ b/helpers/pagetop-minimal/README.md @@ -1,4 +1,3 @@ -/*!

PageTop Minimal

@@ -30,10 +29,14 @@ Las macros para texto multilínea **`indoc!`**, **`formatdoc!`** y **`concatdoc! *crate* [indoc](https://crates.io/crates/indoc) de [David Tolnay](https://crates.io/users/dtolnay). Las macros para la concatenación de cadenas **`join!`** y **`join_pair!`** se apoyan internamente en -el **crate** [concat-string](https://crates.io/crates/concat_string), desarrollado por -[FaultyRAM](https://crates.io/users/FaultyRAM), para evitar el uso del formato de cadenas cuando la +el *crate* [concat-string](https://crates.io/crates/concat_string), desarrollado por +[FaultyRAM](https://crates.io/users/FaultyRAM), para evitar el formato de cadenas cuando la eficiencia pueda ser relevante. +La macro para generar identificadores dinámicos **`paste!`** se reexporta del *crate* +[pastey](https://crates.io/crates/pastey), una implementación avanzada y soportada del popular +`paste!` de [David Tolnay](https://crates.io/users/dtolnay). + # 🚧 Advertencia diff --git a/helpers/pagetop-minimal/src/lib.rs b/helpers/pagetop-minimal/src/lib.rs index dd55cfdc..3b8c9036 100644 --- a/helpers/pagetop-minimal/src/lib.rs +++ b/helpers/pagetop-minimal/src/lib.rs @@ -30,9 +30,13 @@ Las macros para texto multilínea **`indoc!`**, **`formatdoc!`** y **`concatdoc! *crate* [indoc](https://crates.io/crates/indoc) de [David Tolnay](https://crates.io/users/dtolnay). Las macros para la concatenación de cadenas **`join!`** y **`join_pair!`** se apoyan internamente en -el **crate** [concat-string](https://crates.io/crates/concat_string), desarrollado por -[FaultyRAM](https://crates.io/users/FaultyRAM), para evitar el uso del formato de cadenas cuando la +el *crate* [concat-string](https://crates.io/crates/concat_string), desarrollado por +[FaultyRAM](https://crates.io/users/FaultyRAM), para evitar el formato de cadenas cuando la eficiencia pueda ser relevante. + +La macro para generar identificadores dinámicos **`paste!`** se reexporta del *crate* +[pastey](https://crates.io/crates/pastey), una implementación avanzada y soportada del popular +`paste!` de [David Tolnay](https://crates.io/users/dtolnay). */ #![doc( @@ -44,6 +48,18 @@ pub use concat_string::concat_string; pub use indoc::{concatdoc, formatdoc, indoc}; +/// Permite *pegar* tokens y generar identificadores a partir de otros. +/// +/// Dentro de `paste!`, los identificadores escritos como `[< ... >]` se combinan en uno solo que +/// puede reutilizarse para referirse a items existentes o para definir nuevos (funciones, +/// estructuras, métodos, etc.). +/// +/// También admite modificadores de estilo (`lower`, `upper`, `snake`, `camel`, etc.) para +/// transformar fragmentos interpolados antes de construir el nuevo identificador. +pub use pastey::paste; +// La documentación anterior se copia en `pagetop::util::paste!` porque el *crate* original no la +// define y `pagetop` no la hereda automáticamente. + /// Concatena eficientemente varios fragmentos en un [`String`]. /// /// Esta macro exporta [`concat_string!`](https://docs.rs/concat-string). Acepta cualquier número de diff --git a/src/service.rs b/src/service.rs index 60131def..cb69d76a 100644 --- a/src/service.rs +++ b/src/service.rs @@ -15,9 +15,6 @@ pub use pagetop_statics::ResourceFiles; #[doc(hidden)] pub use actix_web::test; -#[doc(hidden)] -pub use paste::paste; - /// Configura un servicio web para publicar archivos estáticos. /// /// La macro ofrece tres modos para configurar el servicio: @@ -75,7 +72,7 @@ macro_rules! static_files_service { } } if serve_embedded { - $crate::service::paste! { + $crate::util::paste! { mod [] { include!(concat!(env!("OUT_DIR"), "/", stringify!($bundle), ".rs")); } @@ -95,7 +92,7 @@ macro_rules! static_files_service { route = $route, ); let _ = span.in_scope(|| { - $crate::service::paste! { + $crate::util::paste! { mod [] { include!(concat!(env!("OUT_DIR"), "/", stringify!($bundle), ".rs")); } diff --git a/src/util.rs b/src/util.rs index b3df8d43..ee48e28f 100644 --- a/src/util.rs +++ b/src/util.rs @@ -10,6 +10,18 @@ use std::path::{Path, PathBuf}; pub use pagetop_minimal::{concatdoc, formatdoc, indoc, join, join_pair, kv}; +/// Permite *pegar* tokens y generar identificadores a partir de otros. +/// +/// Dentro de `paste!`, los identificadores escritos como `[< ... >]` se combinan en uno solo que +/// puede reutilizarse para referirse a items existentes o para definir nuevos (funciones, +/// estructuras, métodos, etc.). +/// +/// También admite modificadores de estilo (`lower`, `upper`, `snake`, `camel`, etc.) para +/// transformar fragmentos interpolados antes de construir el nuevo identificador. +pub use pagetop_minimal::paste; +// La documentación anterior está copiada de `pagetop_minimal::paste!` porque el *crate* original +// no la define y la de `pagetop_minimal` no se hereda automáticamente. + // **< FUNCIONES ÚTILES >*************************************************************************** /// Resuelve y valida la ruta de un directorio existente, devolviendo una ruta absoluta.