codama_nodes_derive/
lib.rs1use codama_errors::CodamaError;
2use proc_macro::TokenStream;
3use syn::{parse_macro_input, DeriveInput};
4
5mod nestable_type_node;
6mod node;
7mod node_union;
8mod registered_nodes;
9mod type_node;
10mod utils;
11use utils::*;
12
13#[proc_macro_attribute]
14pub fn node(_attr: TokenStream, input: TokenStream) -> TokenStream {
15 let input = parse_macro_input!(input as DeriveInput);
16 node::expand_attribute_node(&input)
17 .unwrap_or_else(CodamaError::into_compile_error)
18 .into()
19}
20
21#[proc_macro_derive(Node)]
22pub fn derive_node(input: TokenStream) -> TokenStream {
23 let input = parse_macro_input!(input as DeriveInput);
24 node::expand_derive_node(&input)
25 .unwrap_or_else(CodamaError::into_compile_error)
26 .into()
27}
28
29#[proc_macro_attribute]
30pub fn type_node(_attr: TokenStream, input: TokenStream) -> TokenStream {
31 let input = parse_macro_input!(input as DeriveInput);
32 type_node::expand_attribute_type_node(&input)
33 .unwrap_or_else(CodamaError::into_compile_error)
34 .into()
35}
36
37#[proc_macro_derive(TypeNode)]
38pub fn derive_type_node(input: TokenStream) -> TokenStream {
39 let input = parse_macro_input!(input as DeriveInput);
40 type_node::expand_derive_type_node(&input)
41 .unwrap_or_else(CodamaError::into_compile_error)
42 .into()
43}
44
45#[proc_macro_attribute]
46pub fn nestable_type_node(_attr: TokenStream, input: TokenStream) -> TokenStream {
47 let input = parse_macro_input!(input as DeriveInput);
48 nestable_type_node::expand_attribute_nestable_type_node(&input)
49 .unwrap_or_else(CodamaError::into_compile_error)
50 .into()
51}
52
53#[proc_macro_derive(NestableTypeNode)]
54pub fn derive_nestable_type_node(input: TokenStream) -> TokenStream {
55 let input = parse_macro_input!(input as DeriveInput);
56 nestable_type_node::expand_derive_nestable_type_node(&input)
57 .unwrap_or_else(CodamaError::into_compile_error)
58 .into()
59}
60
61#[proc_macro_attribute]
62pub fn node_union(_attr: TokenStream, input: TokenStream) -> TokenStream {
63 let input = parse_macro_input!(input as DeriveInput);
64 node_union::expand_attribute_node_union(&input)
65 .unwrap_or_else(CodamaError::into_compile_error)
66 .into()
67}
68
69#[proc_macro_derive(NodeUnion, attributes(fallback))]
70pub fn derive_node_union(input: TokenStream) -> TokenStream {
71 let input = parse_macro_input!(input as DeriveInput);
72 node_union::expand_derive_node_union(&input)
73 .unwrap_or_else(CodamaError::into_compile_error)
74 .into()
75}
76
77#[proc_macro_derive(RegisteredNodes, attributes(registered))]
78pub fn derive_registered_nodes(input: TokenStream) -> TokenStream {
79 let input = parse_macro_input!(input as DeriveInput);
80 registered_nodes::expand_derive_registered_nodes(&input)
81 .unwrap_or_else(CodamaError::into_compile_error)
82 .into()
83}