summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2019-07-30 00:09:11 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2019-07-30 00:13:56 +0200
commitc84fd5e06d5bf94114ea25b761cc7061b301c5db (patch)
tree6c12eb02084bc5c854e487fe8bd97838d91fa98c
parente69c3ee25a0b2f02228511f7cd030784c2de346e (diff)
downloadSystem.c4g-c84fd5e06d5bf94114ea25b761cc7061b301c5db.tar.gz
System.c4g-c84fd5e06d5bf94114ea25b761cc7061b301c5db.zip
Change FormatN to use a map instead of two arrays to specify what to fill in
-rw-r--r--DTFormatN.c37
1 files changed, 11 insertions, 26 deletions
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;
}