]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.runtime/scl/Formatting.scl
Merge commit '53059ca'
[simantics/platform.git] / bundles / org.simantics.scl.runtime / scl / Formatting.scl
1 import "Prelude"\r
2 import "Vector" as Vec\r
3 \r
4 @private\r
5 importJava "java.lang.String" where\r
6     @JavaName format\r
7     format' :: String -> Vector Dynamic -> String\r
8 \r
9 """\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
13 Examples:\r
14 > > format "%.3f" 1.2345678\r
15 > "1.235"\r
16 > > format "%d %s %f" (3, "Hello world!", 5.6)\r
17 > "3 Hello world! 5.600000"\r
18 """\r
19 format :: FormatArgument a => String -> a -> String\r
20 format formatString arguments = format' formatString (convertFormatArgumentToVector arguments)\r
21 \r
22 class FormatArgument a where\r
23     convertFormatArgumentToVector :: a -> Vector Dynamic\r
24 \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]