diff --git a/Cargo.lock b/Cargo.lock index cde64db..ab7b20a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1449,9 +1449,8 @@ dependencies = [ [[package]] name = "pagetop-macros" -version = "0.0.4" +version = "0.0.5" dependencies = [ - "proc-macro-crate", "proc-macro2", "proc-macro2-diagnostics", "quote", @@ -1618,15 +1617,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "proc-macro-crate" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" -dependencies = [ - "toml_edit", -] - [[package]] name = "proc-macro-hack" version = "0.5.20+deprecated" @@ -2185,17 +2175,11 @@ checksum = "f271e09bde39ab52250160a67e88577e0559ad77e9085de6e9051a2c4353f8f8" dependencies = [ "serde", "serde_spanned", - "toml_datetime 0.7.0", + "toml_datetime", "toml_parser", "winnow", ] -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" - [[package]] name = "toml_datetime" version = "0.7.0" @@ -2205,17 +2189,6 @@ dependencies = [ "serde", ] -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "toml_datetime 0.6.11", - "winnow", -] - [[package]] name = "toml_parser" version = "1.0.0" diff --git a/helpers/pagetop-macros/Cargo.toml b/helpers/pagetop-macros/Cargo.toml index 070e778..3a7fd95 100644 --- a/helpers/pagetop-macros/Cargo.toml +++ b/helpers/pagetop-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pagetop-macros" -version = "0.0.4" +version = "0.0.5" edition = "2021" description = """\ @@ -20,6 +20,5 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.95" proc-macro2-diagnostics = { version = "0.10.1", default-features = false } -proc-macro-crate = "3.3.0" quote = "1.0.40" syn = { version = "2.0.104", features = ["full"] } diff --git a/helpers/pagetop-macros/src/maud.rs b/helpers/pagetop-macros/src/maud.rs index 9077dbb..2c763cd 100644 --- a/helpers/pagetop-macros/src/maud.rs +++ b/helpers/pagetop-macros/src/maud.rs @@ -10,7 +10,6 @@ mod generate; use ast::DiagnosticParse; use proc_macro2::{Ident, Span, TokenStream}; use proc_macro2_diagnostics::Diagnostic; -use proc_macro_crate::{crate_name, FoundCrate}; use quote::quote; use syn::parse::{ParseStream, Parser}; @@ -41,20 +40,11 @@ pub fn expand(input: TokenStream) -> TokenStream { let output_ident = Ident::new("__maud_output", Span::mixed_site()); let stmts = generate::generate(markups, output_ident.clone()); - let found_crate = crate_name("pagetop").expect("pagetop must be in Cargo.toml"); - let crate_ident = match found_crate { - FoundCrate::Itself => Ident::new("pagetop", Span::call_site()), - FoundCrate::Name(ref name) => Ident::new(name, Span::call_site()), - }; - let pre_escaped = quote! { - #crate_ident::html::PreEscaped(#output_ident) - }; - quote! {{ extern crate alloc; let mut #output_ident = alloc::string::String::with_capacity(#size_hint); #stmts #(#diag_tokens)* - #pre_escaped + pagetop::html::PreEscaped(#output_ident) }} } diff --git a/helpers/pagetop-macros/src/maud/generate.rs b/helpers/pagetop-macros/src/maud/generate.rs index 1f82578..19ff3d7 100644 --- a/helpers/pagetop-macros/src/maud/generate.rs +++ b/helpers/pagetop-macros/src/maud/generate.rs @@ -4,8 +4,6 @@ use syn::{parse_quote, token::Brace, Expr, Local}; use crate::maud::{ast::*, escape}; -use proc_macro_crate::{crate_name, FoundCrate}; - pub fn generate(markups: Markups, output_ident: Ident) -> TokenStream { let mut build = Builder::new(output_ident.clone()); Generator::new(output_ident).markups(markups, &mut build); @@ -68,15 +66,9 @@ impl Generator { fn splice(&self, expr: Expr, build: &mut Builder) { let output_ident = &self.output_ident; - - let found_crate = crate_name("pagetop").expect("pagetop debe existir en Cargo.toml"); - let crate_ident = match found_crate { - FoundCrate::Itself => Ident::new("pagetop", Span::call_site()), - FoundCrate::Name(name) => Ident::new(&name, Span::call_site()), - }; - build.push_tokens(quote! { - #crate_ident::html::html_private::render_to!(&(#expr), &mut #output_ident); - }); + build.push_tokens( + quote!(pagetop::html::html_private::render_to!(&(#expr), &mut #output_ident);), + ); } fn element(&self, element: Element, build: &mut Builder) { diff --git a/src/html/maud.rs b/src/html/maud.rs index 1942986..39cb2c2 100644 --- a/src/html/maud.rs +++ b/src/html/maud.rs @@ -73,7 +73,7 @@ impl fmt::Write for Escaper<'_> { /// # Example /// /// ```rust -/// use pagetop::html::{html, Markup, Render}; +/// use pagetop::prelude::*; /// /// /// Provides a shorthand for linking to a CSS stylesheet. /// pub struct Stylesheet(&'static str); @@ -195,7 +195,7 @@ impl_render_with_itoa! { /// # Example /// /// ```rust -/// use pagetop::html::{display, html}; +/// use pagetop::prelude::*; /// use std::net::Ipv4Addr; /// /// let ip_address = Ipv4Addr::new(127, 0, 0, 1); @@ -266,7 +266,7 @@ impl Default for PreEscaped { /// A minimal web page: /// /// ```rust -/// use pagetop::html::{DOCTYPE, html}; +/// use pagetop::prelude::*; /// /// let markup = html! { /// (DOCTYPE) diff --git a/src/lib.rs b/src/lib.rs index 0fd3250..248ba6d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -34,6 +34,10 @@ html_favicon_url = "https://git.cillero.es/manuelcillero/pagetop/raw/branch/main/static/favicon.ico" )] +// Alias para que las rutas absolutas `::pagetop::…` generadas por las macros funcionen en el propio +// *crate*, en *crates* externos y en *doctests*. +extern crate self as pagetop; + use std::collections::HashMap; use std::ops::Deref;