This commit is contained in:
2025-08-28 18:27:32 +02:00
parent 8440b18e2f
commit fac9276479
5 changed files with 53 additions and 31 deletions

View File

@@ -54,24 +54,30 @@ fn decode_struct[T](_ T, data string) !T {
should_skip = true
break
}
if attr.contains('skipdecode') {
should_skip = true
break
}
}
if !should_skip {
$if field.is_struct {
$if field.typ !is time.Time {
if !field.name[0].is_capital() {
// skip embedded ones
mut data_fmt := data.replace(action_str, '')
data_fmt = data.replace('define.${obj_name}', 'define')
typ.$(field.name) = decode_struct(typ.$(field.name), data_fmt)!
}
}
// $if field.typ !is time.Time {
// if !field.name[0].is_capital() {
// // skip embedded ones
// mut data_fmt := data.replace(action_str, '')
// data_fmt = data.replace('define.${obj_name}', 'define')
// typ.$(field.name) = decode_struct(typ.$(field.name), data_fmt)!
// }
// }
} $else $if field.is_array {
if is_struct_array(typ.$(field.name))! {
mut data_fmt := data.replace(action_str, '')
data_fmt = data.replace('define.${obj_name}', 'define')
arr := decode_array(typ.$(field.name), data_fmt)!
typ.$(field.name) = arr
}
// arr := decode_array(typ.$(field.name), data_fmt)!
// typ.$(field.name) = arr
// if is_struct_array(typ.$(field.name))! {
// mut data_fmt := data.replace(action_str, '')
// data_fmt = data.replace('define.${obj_name}', 'define')
// arr := decode_array(typ.$(field.name), data_fmt)!
// typ.$(field.name) = arr
// }
}
}
}
@@ -93,7 +99,9 @@ pub fn decode_array[T](_ []T, data string) ![]T {
// for i in 0 .. val.len {
value := T{}
$if T is $struct {
arr << decode_struct(value, data)!
//arr << decode_struct(value, data)!
}$else{
arr << decode[T](data)!
}
// }
return arr