diff --git a/src/as/com/threerings/util/MessageBundle.as b/src/as/com/threerings/util/MessageBundle.as index fa8a07d26..86504d328 100644 --- a/src/as/com/threerings/util/MessageBundle.as +++ b/src/as/com/threerings/util/MessageBundle.as @@ -157,6 +157,8 @@ public class MessageBundle return key.substring(1); } + args = Util.unfuckVarargs(args); + // if this is a qualified key, we need to pass the buck to the // appropriate message bundle if (key.indexOf(QUAL_PREFIX) == 0) { @@ -263,6 +265,8 @@ public class MessageBundle */ public static function compose (key :String, ... args) :String { + args = Util.unfuckVarargs(args); + var buf :StringBuilder = new StringBuilder(); buf.append(key, "|"); for (var ii :int = 0; ii < args.length; ii++) { @@ -291,6 +295,8 @@ public class MessageBundle */ public static function tcompose (key :String, ... args) :String { + args = Util.unfuckVarargs(args); + for (var ii :int = 0; ii < args.length; ii++) { args[ii] = taint(args[ii]); } diff --git a/src/as/com/threerings/util/StringUtil.as b/src/as/com/threerings/util/StringUtil.as index 39ccd0ee2..fa067e4d4 100644 --- a/src/as/com/threerings/util/StringUtil.as +++ b/src/as/com/threerings/util/StringUtil.as @@ -96,7 +96,10 @@ public class StringUtil */ public static function substitute (str :String, ... args) :String { - return mx.utils.StringUtil.substitute(str, args); + // holy christ the varargs insanity + args = Util.unfuckVarargs(args); + args.unshift(str); + return mx.utils.StringUtil.substitute.apply(null, args); } /** @@ -107,6 +110,23 @@ public class StringUtil return mx.utils.StringUtil.trim(str); } + public static function toString (obj :Object) :String + { + if (obj is Array) { + var arr :Array = (obj as Array); + var s :String = "Array("; + for (var ii :int = 0; ii < arr.length; ii++) { + if (ii > 0) { + s += ", "; + } + s += (ii + ": " + toString(arr[ii])); + } + return s + ")"; + } + + return String(obj); + } + /** * Truncate the specified String if it is longer than maxLength. * The string will be truncated at a position such that it is diff --git a/src/as/com/threerings/util/Util.as b/src/as/com/threerings/util/Util.as index 3c9bcc7cf..8019c7a6e 100644 --- a/src/as/com/threerings/util/Util.as +++ b/src/as/com/threerings/util/Util.as @@ -52,6 +52,16 @@ public class Util return false; } + /** + * If you call a varargs method by passing it an array, the array + * will end up being arg 1. + */ + public static function unfuckVarargs (args :Array) :Array + { + return (args.length == 1 && (args[0] is Array)) ? (args[0] as Array) + : args; + } + public static function cast (obj :Object, clazz :Class) :Object { if (obj == null || obj is clazz) {