forked from Taritsyn/JavaScriptEngineSwitcher
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIJsEngine.cs
More file actions
131 lines (114 loc) · 3.89 KB
/
IJsEngine.cs
File metadata and controls
131 lines (114 loc) · 3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
namespace JavaScriptEngineSwitcher.Core
{
using System;
using System.Text;
using System.Reflection;
/// <summary>
/// Interface of JavaScript engine
/// </summary>
public interface IJsEngine : IDisposable
{
/// <summary>
/// Gets a name of JavaScript engine
/// </summary>
string Name
{
get;
}
/// <summary>
/// Gets a version of original JavaScript engine
/// </summary>
string Version
{
get;
}
/// <summary>
/// Evaluates an expression
/// </summary>
/// <param name="expression">JS-expression</param>
/// <returns>Result of the expression</returns>
object Evaluate(string expression);
/// <summary>
/// Evaluates an expression
/// </summary>
/// <typeparam name="T">Type of result</typeparam>
/// <param name="expression">JS-expression</param>
/// <returns>Result of the expression</returns>
T Evaluate<T>(string expression);
/// <summary>
/// Executes a code
/// </summary>
/// <param name="code">Code</param>
void Execute(string code);
/// <summary>
/// Executes a code from JS-file
/// </summary>
/// <param name="path">Path to the JS-file</param>
/// <param name="encoding">Text encoding</param>
void ExecuteFile(string path, Encoding encoding = null);
/// <summary>
/// Executes a code from embedded JS-resource
/// </summary>
/// <param name="resourceName">JS-resource name</param>
/// <param name="type">Type from assembly that containing an embedded resource</param>
void ExecuteResource(string resourceName, Type type);
/// <summary>
/// Executes a code from embedded JS-resource
/// </summary>
/// <param name="resourceName">JS-resource name</param>
/// <param name="assembly">Assembly that containing an embedded resource</param>
void ExecuteResource(string resourceName, Assembly assembly);
/// <summary>
/// Calls a function
/// </summary>
/// <param name="functionName">Function name</param>
/// <param name="args">Function arguments</param>
/// <returns>Result of the function execution</returns>
object CallFunction(string functionName, params object[] args);
/// <summary>
/// Calls a function
/// </summary>
/// <typeparam name="T">Type of function result</typeparam>
/// <param name="functionName">Function name</param>
/// <param name="args">Function arguments</param>
/// <returns>Result of the function execution</returns>
T CallFunction<T>(string functionName, params object[] args);
/// <summary>
/// Сhecks for the existence of a variable
/// </summary>
/// <param name="variableName">Variable name</param>
/// <returns>Result of check (true - exists; false - not exists</returns>
bool HasVariable(string variableName);
/// <summary>
/// Gets a value of variable
/// </summary>
/// <param name="variableName">Variable name</param>
/// <returns>Value of variable</returns>
object GetVariableValue(string variableName);
/// <summary>
/// Gets a value of variable
/// </summary>
/// <typeparam name="T">Type of variable</typeparam>
/// <param name="variableName">Variable name</param>
/// <returns>Value of variable</returns>
T GetVariableValue<T>(string variableName);
/// <summary>
/// Sets a value of variable
/// </summary>
/// <param name="variableName">Variable name</param>
/// <param name="value">Value of variable</param>
void SetVariableValue(string variableName, object value);
/// <summary>
/// Removes a variable
/// </summary>
/// <param name="variableName">Variable name</param>
void RemoveVariable(string variableName);
/// <summary>
/// Embeds a host object to script code
/// </summary>
/// <param name="itemName">The name for the new global variable or function that will represent the object</param>
/// <param name="value">The object to expose</param>
/// <remarks>Allows to embed instances of simple classes (or structures) and delegates.</remarks>
void EmbedHostObject(string itemName, object value);
}
}