libgraphql-macros 0.0.10

Macros provided by the `libgraphql` crate at `libgraphql::macros`.
Documentation
use crate::rust_macro_graphql_token_source::RustMacroGraphQLTokenSource;
use libgraphql_core::ast;
use libgraphql_parser::GraphQLParser;
use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
use std::str::FromStr;

/// Helper to parse schema using the new libgraphql_parser pipeline
/// (RustMacroGraphQLTokenSource → GraphQLParser), then convert to
/// the legacy graphql_parser AST via the compat layer.
pub fn parse_with_graphqlschemaparser(
    schema: &str,
) -> ast::schema::Document {
    let token_stream =
        proc_macro2::TokenStream::from_str(schema)
            .expect("Should parse as valid TokenStream");
    let span_map = Rc::new(RefCell::new(HashMap::new()));
    let token_source =
        RustMacroGraphQLTokenSource::new(token_stream, span_map);
    let parser =
        GraphQLParser::from_token_source(token_source);
    let result = parser.parse_schema_document();
    let (doc, _) = result
        .into_valid()
        .expect("Parse should succeed with no errors");
    let compat =
        libgraphql_parser::compat::graphql_parser_v0_4
            ::to_graphql_parser_schema_ast(
                &doc,
                &libgraphql_parser::SourceMap::empty(),
            );
    let (legacy_doc, _) = compat
        .into_valid()
        .expect("Compat conversion should succeed with no errors");
    legacy_doc
}

/// Helper to parse schema using graphql_parser
pub fn parse_with_graphql_parser(
    schema: &str,
) -> ast::schema::Document {
    ast::schema::parse(schema).expect("Parse should succeed")
}