]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.runtime/scl/Formatting.scl
Adding FileSystem and FileSystems to Files SCL-API
[simantics/platform.git] / bundles / org.simantics.scl.runtime / scl / Formatting.scl
1 import "Prelude"
2 import "Vector" as Vec
3
4 @private
5 importJava "java.lang.String" where
6     @JavaName format
7     format' :: String -> Vector Dynamic -> String
8
9 """
10 > format formatString arguments
11 Returns the format string where specific tags are replaced by argument values.
12 See the documentation of java.lang.String.format for details.
13 Examples:
14 > > format "%.3f" 1.2345678
15 > "1.235"
16 > > format "%d %s %f" (3, "Hello world!", 5.6)
17 > "3 Hello world! 5.600000"
18 """
19 format :: FormatArgument a => String -> a -> String
20 format formatString arguments = format' formatString (convertFormatArgumentToVector arguments)
21
22 class FormatArgument a where
23     convertFormatArgumentToVector :: a -> Vector Dynamic
24
25 instance FormatArgument Double where
26     convertFormatArgumentToVector = Vec.singletonVector . toDynamic
27 instance FormatArgument Float where
28     convertFormatArgumentToVector = Vec.singletonVector . toDynamic
29 instance FormatArgument Integer where
30     convertFormatArgumentToVector = Vec.singletonVector . toDynamic
31 instance FormatArgument Long where
32     convertFormatArgumentToVector = Vec.singletonVector . toDynamic
33 instance FormatArgument String where
34     convertFormatArgumentToVector = Vec.singletonVector . toDynamic
35 instance FormatArgument (a,b) where
36     convertFormatArgumentToVector (a,b) = Vec.vector [toDynamic a, toDynamic b]
37 instance FormatArgument (a,b,c) where
38     convertFormatArgumentToVector (a,b,c) = Vec.vector [toDynamic a, toDynamic b, toDynamic c]
39 instance FormatArgument (a,b,c,d) where
40     convertFormatArgumentToVector (a,b,c,d) = Vec.vector [toDynamic a, toDynamic b, toDynamic c, toDynamic d]
41 instance FormatArgument (a,b,c,d,e) where
42     convertFormatArgumentToVector (a,b,c,d,e) = Vec.vector [toDynamic a, toDynamic b, toDynamic c, toDynamic d, toDynamic e]
43 instance FormatArgument (a,b,c,d,e,f) where
44     convertFormatArgumentToVector (a,b,c,d,e,f) = Vec.vector [toDynamic a, toDynamic b, toDynamic c, toDynamic d, toDynamic e, toDynamic f]