1
- use js_sys:: { Function , JsString , Reflect } ;
1
+ use js_sys:: { Function , JsString , Object , Reflect } ;
2
2
use wasm_bindgen:: JsValue ;
3
3
4
4
use rustpython_vm:: function:: { Args , OptionalArg } ;
@@ -8,68 +8,68 @@ use rustpython_vm::VirtualMachine;
8
8
9
9
use crate :: convert;
10
10
11
- fn get_prop ( value : JsValue , name : & str , vm : & VirtualMachine ) -> Option < PyObjectRef > {
11
+ fn get_prop ( object : Object , name : & str , vm : & VirtualMachine ) -> Option < PyObjectRef > {
12
12
let name: & JsString = & name. into ( ) ;
13
- if Reflect :: has ( & value , name) . expect ( "Reflect.has failed" ) {
13
+ if Reflect :: has ( & object , name) . expect ( "Reflect.has failed" ) {
14
14
Some ( convert:: js_to_py_with_this (
15
15
vm,
16
- Reflect :: get ( & value , name) . expect ( "Reflect.get failed" ) ,
17
- Some ( value ) ,
16
+ Reflect :: get ( & object , name) . expect ( "Reflect.get failed" ) ,
17
+ Some ( object . into ( ) ) ,
18
18
) )
19
19
} else {
20
20
None
21
21
}
22
22
}
23
23
24
- fn set_prop ( value : & JsValue , name : & str , val : PyObjectRef , vm : & VirtualMachine ) {
24
+ fn set_prop ( value : & Object , name : & str , val : PyObjectRef , vm : & VirtualMachine ) {
25
25
Reflect :: set ( value, & name. into ( ) , & convert:: py_to_js ( vm, val) ) . expect ( "Reflect failed" ) ;
26
26
}
27
27
28
- #[ pyclass( name = "JsValue " ) ]
28
+ #[ pyclass( name = "JSObject " ) ]
29
29
#[ derive( Debug ) ]
30
- pub struct PyJsValue {
31
- value : JsValue ,
30
+ pub struct PyJsObject {
31
+ object : Object ,
32
32
}
33
- pub type PyJsValueRef = PyRef < PyJsValue > ;
33
+ pub type PyJsObjectRef = PyRef < PyJsObject > ;
34
34
35
- impl PyValue for PyJsValue { }
35
+ impl PyValue for PyJsObject { }
36
36
37
37
#[ pyimpl]
38
- impl PyJsValue {
39
- pub fn new ( value : JsValue ) -> PyJsValue {
40
- PyJsValue { value }
38
+ impl PyJsObject {
39
+ pub fn new ( object : Object ) -> PyJsObject {
40
+ PyJsObject { object }
41
41
}
42
42
43
- pub fn value ( & self ) -> & JsValue {
44
- & self . value
43
+ pub fn object ( & self ) -> & Object {
44
+ & self . object
45
45
}
46
46
47
47
#[ pyproperty( name = "_props" ) ]
48
48
fn props ( & self , _vm : & VirtualMachine ) -> PyJsProps {
49
49
PyJsProps {
50
- value : self . value ( ) . clone ( ) ,
50
+ object : self . object ( ) . clone ( ) ,
51
51
}
52
52
}
53
53
54
54
#[ pymethod( name = "__getattr__" ) ]
55
55
fn getattr ( & self , attr_name : PyStringRef , vm : & VirtualMachine ) -> PyResult {
56
- get_prop ( self . value ( ) . clone ( ) , attr_name. as_str ( ) , vm) . ok_or_else ( || {
56
+ get_prop ( self . object ( ) . clone ( ) , attr_name. as_str ( ) , vm) . ok_or_else ( || {
57
57
vm. new_attribute_error ( format ! ( "JS value has no property {:?}" , attr_name. as_str( ) ) )
58
58
} )
59
59
}
60
60
61
61
#[ pymethod( name = "__setattr__" ) ]
62
62
fn setattr ( & self , attr_name : PyStringRef , val : PyObjectRef , vm : & VirtualMachine ) {
63
- set_prop ( self . value ( ) , attr_name. as_str ( ) , val, vm) ;
63
+ set_prop ( self . object ( ) , attr_name. as_str ( ) , val, vm) ;
64
64
}
65
65
66
66
#[ pymethod( name = "__repr__" ) ]
67
67
fn repr ( & self , _vm : & VirtualMachine ) -> String {
68
- format ! ( "{:?}" , self . value ( ) )
68
+ format ! ( "{:?}" , self . object ( ) )
69
69
}
70
70
}
71
71
72
- #[ pyclass( name = "JsFunction " ) ]
72
+ #[ pyclass( name = "JSFunction " ) ]
73
73
#[ derive( Debug ) ]
74
74
pub struct PyJsFunction {
75
75
func : Function ,
@@ -113,10 +113,10 @@ impl PyJsFunction {
113
113
}
114
114
}
115
115
116
- #[ pyclass( name = "JsProps " ) ]
116
+ #[ pyclass( name = "JSProps " ) ]
117
117
#[ derive( Debug ) ]
118
118
struct PyJsProps {
119
- value : JsValue ,
119
+ object : Object ,
120
120
}
121
121
122
122
impl PyValue for PyJsProps { }
@@ -130,25 +130,25 @@ impl PyJsProps {
130
130
default : OptionalArg ,
131
131
vm : & VirtualMachine ,
132
132
) -> PyObjectRef {
133
- get_prop ( self . value . clone ( ) , item_name. as_str ( ) , vm)
133
+ get_prop ( self . object . clone ( ) , item_name. as_str ( ) , vm)
134
134
. or ( default. into_option ( ) )
135
135
. unwrap_or_else ( || vm. get_none ( ) )
136
136
}
137
137
138
138
#[ pymethod( name = "__getitem__" ) ]
139
139
fn getitem ( & self , item_name : PyStringRef , vm : & VirtualMachine ) -> PyResult {
140
- get_prop ( self . value . clone ( ) , item_name. as_str ( ) , vm)
140
+ get_prop ( self . object . clone ( ) , item_name. as_str ( ) , vm)
141
141
. ok_or_else ( || vm. new_key_error ( format ! ( "{:?}" , item_name. as_str( ) ) ) )
142
142
}
143
143
144
144
#[ pymethod( name = "__setitem__" ) ]
145
145
fn setitem ( & self , item_name : PyStringRef , val : PyObjectRef , vm : & VirtualMachine ) {
146
- set_prop ( & self . value , item_name. as_str ( ) , val, vm) ;
146
+ set_prop ( & self . object , item_name. as_str ( ) , val, vm) ;
147
147
}
148
148
}
149
149
150
150
pub fn init ( ctx : & PyContext ) {
151
- ctx. add_class :: < PyJsValue > ( ) ;
151
+ ctx. add_class :: < PyJsObject > ( ) ;
152
152
ctx. add_class :: < PyJsFunction > ( ) ;
153
153
ctx. add_class :: < PyJsProps > ( ) ;
154
154
}
0 commit comments