async-graphql/async-graphql-derive/src/utils.rs

34 lines
956 B
Rust
Raw Normal View History

2020-03-02 00:24:49 +00:00
use proc_macro2::{Span, TokenStream};
use quote::quote;
use syn::Ident;
pub fn get_crate_name(internal: bool) -> TokenStream {
match internal {
true => quote! { crate },
false => {
let id = Ident::new("async_graphql", Span::call_site());
quote! { #id }
}
}
}
2020-03-03 03:48:00 +00:00
pub fn parse_value(
s: &str,
) -> Result<graphql_parser::query::Value, graphql_parser::query::ParseError> {
let mut doc =
graphql_parser::query::parse_query(&format!("query ($a:Int!={}) {{ dummy }}", s))?;
let definition = doc.definitions.remove(0);
if let graphql_parser::query::Definition::Operation(
graphql_parser::query::OperationDefinition::Query(graphql_parser::query::Query {
mut variable_definitions,
..
}),
) = definition
{
let var = variable_definitions.remove(0);
Ok(var.default_value.unwrap())
} else {
unreachable!()
}
}