cgp-component-macro-lib 0.3.0

Context-generic programming core component macros implemented as a library.
Documentation
use syn::parse::{Parse, ParseStream};
use syn::token::Lt;
use syn::{Generics, Ident};

use crate::delegate_components::ast::DelegateEntriesAst;

pub struct DefinePresetAst {
    pub preset_ident: Ident,
    pub preset_generics: Generics,
    pub delegate_entries: DelegateEntriesAst,
}

impl Parse for DefinePresetAst {
    fn parse(input: ParseStream) -> syn::Result<Self> {
        let preset_ident: Ident = input.parse()?;

        let preset_generics = if input.peek(Lt) {
            input.parse()?
        } else {
            Default::default()
        };

        let delegate_entries: DelegateEntriesAst = input.parse()?;

        Ok(Self {
            preset_ident,
            preset_generics,
            delegate_entries,
        })
    }
}