sword-macros 0.3.0

Structured web framework built on top of tokio ecosystem, providing powerful features for building robust web applications.
Documentation
mod generation;
pub(crate) mod parsing;

use proc_macro::TokenStream;

use crate::controllers::shared::CMetaStack;
use generation::WebRouteGenerator;
pub use parsing::{ParsedRouteAttribute, RequestMode};

pub fn attribute(attribute_str: &str, attr: TokenStream, item: TokenStream) -> TokenStream {
    if CMetaStack::get("web", "controller_name").is_none() {
        return item;
    }

    let parsed = match ParsedRouteAttribute::parse(attribute_str, attr, item) {
        Ok(p) => p,
        Err(e) => return e.to_compile_error().into(),
    };

    WebRouteGenerator::new(parsed).expand()
}