2 import "Vector" as Vec
\r
5 importJava "java.lang.String" where
\r
7 format' :: String -> Vector Dynamic -> String
\r
10 > format formatString arguments
\r
11 Returns the format string where specific tags are replaced by argument values.
\r
12 See the documentation of java.lang.String.format for details.
\r
14 > > format "%.3f" 1.2345678
\r
16 > > format "%d %s %f" (3, "Hello world!", 5.6)
\r
17 > "3 Hello world! 5.600000"
\r
19 format :: FormatArgument a => String -> a -> String
\r
20 format formatString arguments = format' formatString (convertFormatArgumentToVector arguments)
\r
22 class FormatArgument a where
\r
23 convertFormatArgumentToVector :: a -> Vector Dynamic
\r
25 instance FormatArgument Double where
\r
26 convertFormatArgumentToVector = Vec.singletonVector . toDynamic
\r
27 instance FormatArgument Float where
\r
28 convertFormatArgumentToVector = Vec.singletonVector . toDynamic
\r
29 instance FormatArgument Integer where
\r
30 convertFormatArgumentToVector = Vec.singletonVector . toDynamic
\r
31 instance FormatArgument Long where
\r
32 convertFormatArgumentToVector = Vec.singletonVector . toDynamic
\r
33 instance FormatArgument String where
\r
34 convertFormatArgumentToVector = Vec.singletonVector . toDynamic
\r
35 instance FormatArgument (a,b) where
\r
36 convertFormatArgumentToVector (a,b) = Vec.vector [toDynamic a, toDynamic b]
\r
37 instance FormatArgument (a,b,c) where
\r
38 convertFormatArgumentToVector (a,b,c) = Vec.vector [toDynamic a, toDynamic b, toDynamic c]
\r
39 instance FormatArgument (a,b,c,d) where
\r
40 convertFormatArgumentToVector (a,b,c,d) = Vec.vector [toDynamic a, toDynamic b, toDynamic c, toDynamic d]
\r
41 instance FormatArgument (a,b,c,d,e) where
\r
42 convertFormatArgumentToVector (a,b,c,d,e) = Vec.vector [toDynamic a, toDynamic b, toDynamic c, toDynamic d, toDynamic e]
\r
43 instance FormatArgument (a,b,c,d,e,f) where
\r
44 convertFormatArgumentToVector (a,b,c,d,e,f) = Vec.vector [toDynamic a, toDynamic b, toDynamic c, toDynamic d, toDynamic e, toDynamic f]