castle_schema_parser 0.20.2

Castle Schema Parser
Documentation
use castle_tokenizer::{
    extensions::{ExpectIdentifier, ExpectPunctuator},
    Punctuator, Tokenizable,
};
use castle_types::{CastleError, DirectiveDefinition};

use super::parse_input_type_definition::parse_optional_input_definitions;

pub fn parse_directive_definition(
    tokenizer: &mut impl Tokenizable,
) -> Result<DirectiveDefinition, CastleError> {
    tokenizer.expect_punctuator(Punctuator::At, true)?;
    Ok(DirectiveDefinition {
        ident: tokenizer.expect_identifier(false)?,
        input_definitions: parse_optional_input_definitions(
            tokenizer,
            Punctuator::OpenParen,
            Punctuator::CloseParen,
        )?,
    })
}