| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- extern crate proc_macro;
- use proc_macro::TokenStream;
- use quote::ToTokens;
- use syn::parse_macro_input;
- mod case_convert;
- mod error;
- mod generation;
- mod model;
- mod parsing;
- mod validation;
- use crate::{model::ProtocolModel, parsing::Protocol};
- macro_rules! unwrap_or_compile_err {
- ($result:expr) => {
- match $result {
- Ok(value) => value,
- Err(err) => return err.into_compile_error().into(),
- }
- };
- }
- #[proc_macro]
- pub fn protocol(input: TokenStream) -> TokenStream {
- let input = parse_macro_input!(input as Protocol);
- let model = unwrap_or_compile_err!(ProtocolModel::new(input));
- unwrap_or_compile_err!(model.validate());
- model.to_token_stream().into()
- }
|