Skip to main content

eure_codegen_ir/
codegen.rs

1pub const DEFAULT_VARIANT_TYPES_SUFFIX: &str = "Data";
2
3#[derive(Debug, Clone, PartialEq, Eq, Default)]
4pub enum InheritableCodegenValueIr<T> {
5    #[default]
6    InheritCodegenDefaults,
7    Value(T),
8}
9
10impl<T> InheritableCodegenValueIr<T> {
11    pub fn inherit() -> Self {
12        Self::InheritCodegenDefaults
13    }
14
15    pub fn explicit(value: T) -> Self {
16        Self::Value(value)
17    }
18}
19
20#[derive(Debug, Clone, PartialEq, Eq, Default, bon::Builder)]
21pub struct RootCodegenIr {
22    pub type_name_override: Option<String>,
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Default, bon::Builder)]
26pub struct CodegenDefaultsIr {
27    #[builder(default)]
28    pub derive: Vec<String>,
29    #[builder(default)]
30    pub inline_derive: Vec<String>,
31    #[builder(default)]
32    pub variant_type_derive: Vec<String>,
33    #[builder(default)]
34    pub ext_types_field_prefix: String,
35    #[builder(default)]
36    pub ext_types_type_prefix: String,
37    #[builder(default)]
38    pub document_node_id_field: String,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq, Default)]
42pub enum TypeCodegenIr {
43    #[default]
44    None,
45    Record(RecordCodegenIr),
46    Union(UnionCodegenIr),
47}
48
49#[derive(Debug, Clone, PartialEq, Eq, Default, bon::Builder)]
50pub struct RecordCodegenIr {
51    pub type_name_override: Option<String>,
52    #[builder(default)]
53    pub derive: InheritableCodegenValueIr<Vec<String>>,
54    #[builder(default)]
55    pub inline_derive: InheritableCodegenValueIr<Vec<String>>,
56}
57
58#[derive(Debug, Clone, PartialEq, Eq, bon::Builder)]
59pub struct UnionCodegenIr {
60    pub type_name_override: Option<String>,
61    #[builder(default)]
62    pub derive: InheritableCodegenValueIr<Vec<String>>,
63    #[builder(default)]
64    pub inline_derive: InheritableCodegenValueIr<Vec<String>>,
65    #[builder(default)]
66    pub variant_types: bool,
67    pub variant_types_suffix_override: Option<String>,
68    #[builder(default)]
69    pub variant_type_derive: InheritableCodegenValueIr<Vec<String>>,
70}
71
72impl Default for UnionCodegenIr {
73    fn default() -> Self {
74        Self {
75            type_name_override: None,
76            derive: InheritableCodegenValueIr::InheritCodegenDefaults,
77            inline_derive: InheritableCodegenValueIr::InheritCodegenDefaults,
78            variant_types: false,
79            variant_types_suffix_override: None,
80            variant_type_derive: InheritableCodegenValueIr::InheritCodegenDefaults,
81        }
82    }
83}
84
85#[derive(Debug, Clone, PartialEq, Eq, Default, bon::Builder)]
86pub struct FieldCodegenIr {
87    pub name_override: Option<String>,
88}