1
1
import _CJavaScriptKit
2
2
3
3
public protocol JSValueConvertible {
4
- subscript ( jsValue _ : ( ) ) -> JSValue { get }
4
+ func jsValue ( ) -> JSValue
5
5
}
6
6
7
7
extension JSValue : JSValueConvertible {
8
- public init ( from convertible: JSValueConvertible ) {
9
- self = convertible [ jsValue: ( ) ]
10
- }
11
- public subscript( jsValue _: ( ) ) -> JSValue { self }
8
+ public func jsValue( ) -> JSValue { self }
12
9
}
13
10
14
11
extension Bool : JSValueConvertible {
15
- public subscript ( jsValue _ : ( ) ) -> JSValue { . boolean( self ) }
12
+ public func jsValue ( ) -> JSValue { . boolean( self ) }
16
13
}
17
14
18
15
extension Int : JSValueConvertible {
19
- public subscript ( jsValue _ : ( ) ) -> JSValue { . number( Double ( self ) ) }
16
+ public func jsValue ( ) -> JSValue { . number( Double ( self ) ) }
20
17
}
21
18
22
19
extension Int8 : JSValueConvertible {
23
- public subscript ( jsValue _ : ( ) ) -> JSValue { . number( Double ( self ) ) }
20
+ public func jsValue ( ) -> JSValue { . number( Double ( self ) ) }
24
21
}
25
22
26
23
extension Int16 : JSValueConvertible {
27
- public subscript ( jsValue _ : ( ) ) -> JSValue { . number( Double ( self ) ) }
24
+ public func jsValue ( ) -> JSValue { . number( Double ( self ) ) }
28
25
}
29
26
30
27
extension Int32 : JSValueConvertible {
31
- public subscript ( jsValue _ : ( ) ) -> JSValue { . number( Double ( self ) ) }
28
+ public func jsValue ( ) -> JSValue { . number( Double ( self ) ) }
32
29
}
33
30
34
31
extension UInt : JSValueConvertible {
35
- public subscript ( jsValue _ : ( ) ) -> JSValue { . number( Double ( self ) ) }
32
+ public func jsValue ( ) -> JSValue { . number( Double ( self ) ) }
36
33
}
37
34
38
35
extension UInt8 : JSValueConvertible {
39
- public subscript ( jsValue _ : ( ) ) -> JSValue { . number( Double ( self ) ) }
36
+ public func jsValue ( ) -> JSValue { . number( Double ( self ) ) }
40
37
}
41
38
42
39
extension UInt16 : JSValueConvertible {
43
- public subscript ( jsValue _ : ( ) ) -> JSValue { . number( Double ( self ) ) }
40
+ public func jsValue ( ) -> JSValue { . number( Double ( self ) ) }
44
41
}
45
42
46
43
extension Float : JSValueConvertible {
47
- public subscript ( jsValue _ : ( ) ) -> JSValue { . number( Double ( self ) ) }
44
+ public func jsValue ( ) -> JSValue { . number( Double ( self ) ) }
48
45
}
49
46
50
47
extension Double : JSValueConvertible {
51
- public subscript ( jsValue _ : ( ) ) -> JSValue { . number( self ) }
48
+ public func jsValue ( ) -> JSValue { . number( self ) }
52
49
}
53
50
54
51
extension String : JSValueConvertible {
55
- public subscript ( jsValue _ : ( ) ) -> JSValue { . string( self ) }
52
+ public func jsValue ( ) -> JSValue { . string( self ) }
56
53
}
57
54
58
55
extension JSObjectRef : JSValueConvertible {
@@ -63,16 +60,16 @@ extension JSObjectRef: JSValueConvertible {
63
60
private let Object = JSObjectRef . global. Object. function!
64
61
65
62
extension Dictionary where Value: JSValueConvertible , Key == String {
66
- public subscript ( jsValue _ : ( ) ) -> JSValue {
67
- JSValue ( from : self as Dictionary < Key , JSValueConvertible > )
63
+ public func jsValue ( ) -> JSValue {
64
+ Swift . Dictionary < Key , JSValueConvertible > . jsValue ( self ) ( )
68
65
}
69
66
}
70
67
71
68
extension Dictionary : JSValueConvertible where Value == JSValueConvertible , Key == String {
72
- public subscript ( jsValue _ : ( ) ) -> JSValue {
69
+ public func jsValue ( ) -> JSValue {
73
70
let object = Object . new ( )
74
71
for (key, value) in self {
75
- object [ key] = JSValue ( from : value)
72
+ object [ key] = value. jsValue ( )
76
73
}
77
74
return . object( object)
78
75
}
@@ -81,23 +78,23 @@ extension Dictionary: JSValueConvertible where Value == JSValueConvertible, Key
81
78
private let Array = JSObjectRef . global. Array. function!
82
79
83
80
extension Array where Element: JSValueConvertible {
84
- public subscript ( jsValue _ : ( ) ) -> JSValue {
85
- JSValue ( from : self as Swift . Array < JSValueConvertible > )
81
+ public func jsValue ( ) -> JSValue {
82
+ Swift . Array < JSValueConvertible > . jsValue ( self ) ( )
86
83
}
87
84
}
88
85
89
86
extension Array : JSValueConvertible where Element == JSValueConvertible {
90
- public subscript ( jsValue _ : ( ) ) -> JSValue {
87
+ public func jsValue ( ) -> JSValue {
91
88
let array = Array . new ( count)
92
89
for (index, element) in enumerated ( ) {
93
- array [ index] = JSValue ( from : element)
90
+ array [ index] = element. jsValue ( )
94
91
}
95
92
return . object( array)
96
93
}
97
94
}
98
95
99
96
extension RawJSValue : JSValueConvertible {
100
- public subscript ( jsValue _ : ( ) ) -> JSValue {
97
+ public func jsValue ( ) -> JSValue {
101
98
switch kind {
102
99
case . invalid:
103
100
fatalError ( )
@@ -179,7 +176,7 @@ extension Array where Element == JSValueConvertible {
179
176
_ results: inout [ RawJSValue ] , _ body: ( [ RawJSValue ] ) -> T
180
177
) -> T {
181
178
if index == values. count { return body ( results) }
182
- return JSValue ( from : values [ index] ) . withRawJSValue { ( rawValue) -> T in
179
+ return values [ index] . jsValue ( ) . withRawJSValue { ( rawValue) -> T in
183
180
results. append ( rawValue)
184
181
return _withRawJSValues ( values, index + 1 , & results, body)
185
182
}
0 commit comments