@@ -6,101 +6,30 @@ public protocol Value: CustomStringConvertible, Polymorphic {
6
6
var structuredData : StructuredData { get }
7
7
}
8
8
9
- public protocol Polymorphic {
10
- var int : Int ? { get }
11
- var string : String ? { get }
12
- var double : Double ? { get }
13
- }
14
-
15
- public enum StructuredData {
16
- case null
17
- case bool( Bool )
18
- case integer( Int )
19
- case double( Double )
20
- case string( String )
21
- case array( [ StructuredData ] )
22
- case dictionary( [ String : StructuredData ] )
23
- }
24
-
25
- extension Value {
26
- public var string : String ? {
27
- switch structuredData {
28
- case . bool( let bool) :
29
- return " \( bool) "
30
- case . integer( let int) :
31
- return " \( int) "
32
- case . double( let double) :
33
- return " \( double) "
34
- case . string( let string) :
35
- return " \( string) "
36
- default :
37
- return nil
38
- }
39
- }
40
-
41
- public var int : Int ? {
42
- switch structuredData {
43
- case . integer( let int) :
44
- return int
45
- case . string( let string) :
46
- return Int ( string)
47
- case . double( let double) :
48
- return Int ( double)
49
- case . bool( let bool) :
50
- return bool ? 1 : 0
51
- default :
52
- return nil
53
- }
54
- }
55
-
56
- public var double : Double ? {
57
- switch structuredData {
58
- case . double( let double) :
59
- return double
60
- case . string( let string) :
61
- return Double ( string)
62
- case . integer( let int) :
63
- return Double ( int)
64
- case . bool( let bool) :
65
- return bool ? 1.0 : 0.0
66
- default :
67
- return nil
68
- }
69
- }
70
- }
71
-
72
- extension Value {
73
- public var description : String {
74
- return self . string ?? " "
75
- }
76
- }
77
-
78
9
extension Int : Value {
79
10
public var structuredData : StructuredData {
80
- return . integer( self )
81
- }
82
- }
83
-
84
- extension Double : Value {
85
- public var structuredData : StructuredData {
86
- return . double( self )
11
+ return . int( self )
87
12
}
88
13
}
89
14
90
15
extension String : Value {
91
16
public var structuredData : StructuredData {
92
17
return . string( self )
93
18
}
19
+
20
+ public var description : String {
21
+ return self
22
+ }
94
23
}
95
24
96
- extension Bool : Value {
25
+ extension Double : Value {
97
26
public var structuredData : StructuredData {
98
- return . bool ( self )
27
+ return . double ( self )
99
28
}
100
29
}
101
30
102
- extension StructuredData : Value {
31
+ extension Float : Value {
103
32
public var structuredData : StructuredData {
104
- return self
33
+ return . double ( Double ( self ) )
105
34
}
106
35
}
0 commit comments