From 8dfd173285df515fe9b41d970321da9d049460f8 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Wed, 9 Oct 2024 23:08:48 +0200 Subject: More work on format --- asl/format.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) (limited to 'asl/format.cpp') diff --git a/asl/format.cpp b/asl/format.cpp index 890e532..4866562 100644 --- a/asl/format.cpp +++ b/asl/format.cpp @@ -7,6 +7,63 @@ void asl::format_internals::format( int64_t arg_count) { formatter f(writer); - - f.write("Hello", 5); + + + int64_t arg = 0; + + const char* begin = fmt; + while (*fmt != '\0') + { + if (fmt[0] == '{') + { + if (fmt[1] == '}') + { + if (arg < arg_count) + { + f.write(begin, fmt - begin); + fmt += 2; + begin = fmt; + + args[arg].fn(f, args[arg].data); + arg += 1; + } + else + { + f.write(begin, fmt - begin); + fmt += 2; + begin = fmt; + + f.write("", 7); + } + } + else if (fmt[1] == '{') + { + fmt += 1; + f.write(begin, fmt - begin); + fmt += 1; + begin = fmt; + } + else + { + f.write(begin, fmt - begin); + fmt += 1; + begin = fmt; + + f.write("", 7); + } + } + else if (fmt[0] == '}' && fmt[1] == '}') + { + fmt += 1; + f.write(begin, fmt - begin); + fmt += 1; + begin = fmt; + } + else + { + fmt += 1; + } + } + + f.write(begin, fmt - begin); } -- cgit