From c84fd5e06d5bf94114ea25b761cc7061b301c5db Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Tue, 30 Jul 2019 00:09:11 +0200 Subject: Change FormatN to use a map instead of two arrays to specify what to fill in --- DTFormatN.c | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) (limited to 'DTFormatN.c') diff --git a/DTFormatN.c b/DTFormatN.c index 1556265..6c01901 100644 --- a/DTFormatN.c +++ b/DTFormatN.c @@ -1,21 +1,13 @@ #strict 2 -global func FormatN(string format, array placeholders, array items) +// FormatN("%identifier%format specification%...", { identifier = "content", ... }); +// example: FormatN("%foo%s% %bar%s%", { foo = "Hello", bar = "World" }) = "Hello World" +global func FormatN(string format, map items) { - if(!items && GetType(placeholders[0]) == C4V_Array) - { - items = CreateArray(GetLength(placeholders)); - for(var i = 0; i < GetLength(placeholders); ++i) - { - items[i] = placeholders[i][1]; - placeholders[i] = placeholders[i][0]; - } - } - var ret = ""; var inPlaceholder = 0; - var placeholderType = ""; + var placeholderType = "%"; var placeholderPart = ""; for(var i = 0; i < GetLength(format); ++i) @@ -29,7 +21,7 @@ global func FormatN(string format, array placeholders, array items) } else if(inPlaceholder == 1) { - if(GetLength(placeholderType) == 0) + if(placeholderPart == "") { ret ..= "%"; inPlaceholder = 0; @@ -41,17 +33,10 @@ global func FormatN(string format, array placeholders, array items) } else if(inPlaceholder == 2) { - var index = GetIndexOf2(placeholderPart, placeholders); - if(index == -1) - { - FatalError(Format("FormatN: Unkown placeholder \"%s\"", placeholderPart)); - return 0; - } - - ret = Format(Format("%%s%%%s", placeholderType), ret, items[index]); + ret ..= Format(placeholderType, items[placeholderPart]); inPlaceholder = 0; - placeholderType = ""; + placeholderType = "%"; placeholderPart = ""; } } @@ -63,23 +48,23 @@ global func FormatN(string format, array placeholders, array items) } else if(inPlaceholder == 1) { - placeholderType ..= c; + placeholderPart ..= c; } else if(inPlaceholder == 2) { - placeholderPart ..= c; + placeholderType ..= c; } } } if(inPlaceholder == 1) { - FatalError(Format("FormatN: Placeholder not finished at end of format-string: \"%%%s\"", placeholderType)); + FatalError(Format("FormatN: Placeholder not finished at end of format-string: \"%%%s\"", placeholderPart)); return 0; } else if(inPlaceholder == 2) { - FatalError(Format("FormatN: Placeholder not finished at end of format-string: \"%%%s%%%s\"", placeholderType, placeholderPart)); + FatalError(Format("FormatN: Placeholder not finished at end of format-string: \"%%%s%s\"", placeholderPart, placeholderType)); return 0; } -- cgit v1.2.3-54-g00ecf