@@ -56,18 +56,28 @@ public class JSEngine {
56
56
}
57
57
58
58
if let jsSource = jsSource {
59
- evaluate ( script: jsSource)
59
+ evaluate ( script: jsSource, evaluator : " JSEngine.loadBundle " )
60
60
}
61
61
62
62
completion ? ( jsError)
63
63
}
64
-
64
+
65
65
@discardableResult
66
66
public func evaluate( script: String ) -> JSConvertible ? {
67
+ return evaluate ( script: script, evaluator: Constants . Evaluator)
68
+ }
69
+
70
+ /// Evaluates a script and returns a result.
71
+ ///
72
+ /// params:
73
+ /// - script: The script to evaluate
74
+ /// - evaluator: An optional identifying name of the evaluator, useful in debugging.
75
+ @discardableResult
76
+ public func evaluate( script: String , evaluator: String ) -> JSConvertible ? {
67
77
var outerResult : JSConvertible ? = nil
68
78
context. performThreadSafe { [ weak self] in
69
79
guard let self else { return }
70
- let result = JS_Eval ( context. ref, script, script. lengthOfBytes ( using: . utf8) , Constants . Evaluator , 0 )
80
+ let result = JS_Eval ( context. ref, script, script. lengthOfBytes ( using: . utf8) , evaluator , 0 )
71
81
outerResult = result. toJSConvertible ( context: context)
72
82
result. free ( context)
73
83
}
@@ -86,7 +96,7 @@ public class JSEngine {
86
96
87
97
public func value( for keyPath: String ) -> JSConvertible ? {
88
98
guard keyPath. count > 0 else { return nil }
89
- let result = evaluate ( script: keyPath)
99
+ let result = evaluate ( script: keyPath, evaluator : " JSEngine.value " )
90
100
return result
91
101
}
92
102
0 commit comments