mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 23:28:48 +00:00
Improve fmt._user_formatters logic
This commit is contained in:
+5
-1
@@ -27,6 +27,7 @@ Info :: struct {
|
|||||||
|
|
||||||
reordered: bool,
|
reordered: bool,
|
||||||
good_arg_index: bool,
|
good_arg_index: bool,
|
||||||
|
ignore_user_formatters: bool,
|
||||||
|
|
||||||
writer: io.Writer,
|
writer: io.Writer,
|
||||||
arg: any, // Temporary
|
arg: any, // Temporary
|
||||||
@@ -1267,15 +1268,18 @@ fmt_value :: proc(fi: ^Info, v: any, verb: rune) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if _user_formatters != nil {
|
if _user_formatters != nil && !fi.ignore_user_formatters {
|
||||||
formatter := _user_formatters[v.id];
|
formatter := _user_formatters[v.id];
|
||||||
if formatter != nil {
|
if formatter != nil {
|
||||||
|
fi.ignore_user_formatters = false;
|
||||||
if ok := formatter(fi, v, verb); !ok {
|
if ok := formatter(fi, v, verb); !ok {
|
||||||
|
fi.ignore_user_formatters = true;
|
||||||
fmt_bad_verb(fi, verb);
|
fmt_bad_verb(fi, verb);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fi.ignore_user_formatters = false;
|
||||||
|
|
||||||
type_info := type_info_of(v.id);
|
type_info := type_info_of(v.id);
|
||||||
switch info in type_info.variant {
|
switch info in type_info.variant {
|
||||||
|
|||||||
Reference in New Issue
Block a user