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.