summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;
}