accepts_codegen/acceptor/linear/
expand.rs

1use proc_macro2::TokenStream;
2use syn::parse::{ParseStream, Parser};
3
4use crate::common::{
5    context::CodegenContext, function::map_err_to_compile_error, macros::ok_or_return,
6};
7
8use super::{builder::build_linear_accepts_spec, config::default_config_list_parser};
9
10pub fn expand(ctx: &CodegenContext, input: TokenStream) -> TokenStream {
11    let configs = ok_or_return!(map_err_to_compile_error(
12        (|i: ParseStream| { default_config_list_parser(i) }).parse2(input)
13    ));
14
15    let mut tokens = TokenStream::new();
16
17    for config in configs {
18        let spec = ok_or_return!(map_err_to_compile_error(build_linear_accepts_spec(
19            ctx, &config
20        )));
21        spec.into_tokens(ctx, &mut tokens);
22    }
23
24    tokens
25}