Skip to main content

eure_codegen_ir/
codegen.rs

1pub const DEFAULT_VARIANT_TYPES_SUFFIX: &str = "Type";
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 ext_types_field_prefix: String,
31    #[builder(default)]
32    pub ext_types_type_prefix: String,
33    #[builder(default)]
34    pub document_node_id_field: String,
35}
36
37#[derive(Debug, Clone, PartialEq, Eq, Default)]
38pub enum TypeCodegenIr {
39    #[default]
40    None,
41    Record(RecordCodegenIr),
42    Union(UnionCodegenIr),
43}
44
45#[derive(Debug, Clone, PartialEq, Eq, Default, bon::Builder)]
46pub struct RecordCodegenIr {
47    pub type_name_override: Option<String>,
48    #[builder(default)]
49    pub derive: InheritableCodegenValueIr<Vec<String>>,
50}
51
52#[derive(Debug, Clone, PartialEq, Eq, bon::Builder)]
53pub struct UnionCodegenIr {
54    pub type_name_override: Option<String>,
55    #[builder(default)]
56    pub derive: InheritableCodegenValueIr<Vec<String>>,
57    #[builder(default)]
58    pub variant_types: bool,
59    pub variant_types_suffix_override: Option<String>,
60}
61
62impl Default for UnionCodegenIr {
63    fn default() -> Self {
64        Self {
65            type_name_override: None,
66            derive: InheritableCodegenValueIr::InheritCodegenDefaults,
67            variant_types: false,
68            variant_types_suffix_override: None,
69        }
70    }
71}
72
73#[derive(Debug, Clone, PartialEq, Eq, Default, bon::Builder)]
74pub struct FieldCodegenIr {
75    pub name_override: Option<String>,
76}