use cairo_lang_macro::{quote, TextSpan, Token, TokenStream, TokenTree};
use cairo_lang_parser::utils::SimpleParserDatabase;
use cairo_lang_syntax::node::with_db::SyntaxNodeWithDb;
use cairo_lang_syntax::node::{ast, TypedSyntaxNode};
pub struct DojoTokenizer {}
impl DojoTokenizer {
pub fn tokenize(s: &str) -> TokenTree {
TokenTree::Ident(Token::new(s, TextSpan::call_site()))
}
pub fn rebuild_original_struct(
db: &SimpleParserDatabase,
struct_ast: &ast::ItemStruct,
) -> TokenStream {
let el = struct_ast.visibility(db).as_syntax_node();
let visibility = SyntaxNodeWithDb::new(&el, db);
let el = struct_ast.name(db).as_syntax_node();
let name = SyntaxNodeWithDb::new(&el, db);
let el = struct_ast.generic_params(db).as_syntax_node();
let generics = SyntaxNodeWithDb::new(&el, db);
let el = struct_ast.members(db).as_syntax_node();
let members = SyntaxNodeWithDb::new(&el, db);
quote! {
#visibility struct #name<#generics> {
#members
}
}
}
}