import "Prelude" import "Vector" as Vec @private importJava "java.lang.String" where @JavaName format format' :: String -> Vector Dynamic -> String """ > format formatString arguments Returns the format string where specific tags are replaced by argument values. See the documentation of java.lang.String.format for details. Examples: > > format "%.3f" 1.2345678 > "1.235" > > format "%d %s %f" (3, "Hello world!", 5.6) > "3 Hello world! 5.600000" """ format :: FormatArgument a => String -> a -> String format formatString arguments = format' formatString (convertFormatArgumentToVector arguments) class FormatArgument a where convertFormatArgumentToVector :: a -> Vector Dynamic instance FormatArgument Double where convertFormatArgumentToVector = Vec.singletonVector . toDynamic instance FormatArgument Float where convertFormatArgumentToVector = Vec.singletonVector . toDynamic instance FormatArgument Integer where convertFormatArgumentToVector = Vec.singletonVector . toDynamic instance FormatArgument Long where convertFormatArgumentToVector = Vec.singletonVector . toDynamic instance FormatArgument String where convertFormatArgumentToVector = Vec.singletonVector . toDynamic instance FormatArgument (a,b) where convertFormatArgumentToVector (a,b) = Vec.vector [toDynamic a, toDynamic b] instance FormatArgument (a,b,c) where convertFormatArgumentToVector (a,b,c) = Vec.vector [toDynamic a, toDynamic b, toDynamic c] instance FormatArgument (a,b,c,d) where convertFormatArgumentToVector (a,b,c,d) = Vec.vector [toDynamic a, toDynamic b, toDynamic c, toDynamic d] instance FormatArgument (a,b,c,d,e) where convertFormatArgumentToVector (a,b,c,d,e) = Vec.vector [toDynamic a, toDynamic b, toDynamic c, toDynamic d, toDynamic e] instance FormatArgument (a,b,c,d,e,f) where convertFormatArgumentToVector (a,b,c,d,e,f) = Vec.vector [toDynamic a, toDynamic b, toDynamic c, toDynamic d, toDynamic e, toDynamic f]