use syn::{Field, Ident};
use crate::{
fields::option::{is_option, preprocess_option_getter},
helpers::generate_custom_getter,
modifier::Modifier,
};
mod field_param;
mod getter_data;
mod option;
mod should_replace;
pub use field_param::FieldParam;
pub use should_replace::ShouldReplaceGetter;
pub fn process_getter_field(
field: &Field,
process_option: bool,
name: &Ident,
modifier: &Modifier,
) -> ShouldReplaceGetter {
let _ = name;
if process_option {
return process_option_getter_field(field, name, modifier);
};
ShouldReplaceGetter::No
}
pub fn process_option_getter_field(
field: &Field,
name: &Ident,
modifier: &Modifier,
) -> ShouldReplaceGetter {
if !is_option(&field.ty) {
return ShouldReplaceGetter::No;
};
let replaced_data = preprocess_option_getter(field, modifier);
ShouldReplaceGetter::Yes(generate_custom_getter(
name,
modifier,
replaced_data.return_type,
replaced_data.return_body,
))
}