public static JsValue ToJsValue(this Object obj, EngineInstance engine) { if (obj != null) { if (obj is String) { return(new JsValue((String)obj)); } else if (obj is Int32) { return(new JsValue((Int32)obj)); } else if (obj is UInt32) { return(new JsValue((UInt32)obj)); } else if (obj is Double) { return(new JsValue((Double)obj)); } else if (obj is Single) { return(new JsValue((Single)obj)); } else if (obj is Boolean) { return(new JsValue((Boolean)obj)); } else if (obj is Enum) { return(new JsValue(Convert.ToInt32(obj))); } return(engine.GetDomNode(obj)); } return(JsValue.Null); }
public static Object As(this JsValue value, Type targetType, EngineInstance engine) { if (value != JsValue.Null) { if (targetType == typeof(Int32)) { return(TypeConverter.ToInt32(value)); } else if (targetType == typeof(Double)) { return(TypeConverter.ToNumber(value)); } else if (targetType == typeof(String)) { return(value.IsPrimitive() ? TypeConverter.ToString(value) : value.ToString()); } else if (targetType == typeof(Boolean)) { return(TypeConverter.ToBoolean(value)); } else if (targetType == typeof(UInt32)) { return(TypeConverter.ToUint32(value)); } else if (targetType == typeof(UInt16)) { return(TypeConverter.ToUint16(value)); } else { return(value.AsComplex(targetType, engine)); } } return(null); }
public static JsValue RunScript(this EngineInstance engine, String source, INode context) => engine.RunScript(source, context.ToJsValue(engine));
public static JsValue RunScript(this EngineInstance engine, String source) => engine.RunScript(source, engine.Window);
partial void Setup(EngineInstance engine);
public DomConstructors(EngineInstance engine) { Object = engine.Jint.Object; _engine = engine; }
public DomConstructorInstance(EngineInstance engine, ConstructorInfo constructor) : this(engine, constructor.DeclaringType) { _constructor = constructor; }
public static Object[] BuildArgs(this EngineInstance context, MethodBase method, JsValue[] arguments) { var parameters = method.GetParameters(); var initDict = method.GetCustomAttribute <DomInitDictAttribute>(); var max = parameters.Length; var args = new Object[max]; var offset = 0; if (parameters.Length > 0 && parameters[0].ParameterType == typeof(IWindow)) { if (arguments.Length == 0 || arguments[0].FromJsValue() is IWindow == false) { args[offset++] = context.Window.Value; } } if (max > 0 && parameters[max - 1].GetCustomAttribute <ParamArrayAttribute>() != null) { max--; } if (initDict != null && arguments.Length + offset > initDict.Offset) { arguments = ExpandInitDict(arguments, parameters, initDict, max, offset); } var n = Math.Min(arguments.Length, max - offset); for (var i = 0; i < n; i++) { if (parameters[i].IsOptional && arguments[i].IsUndefined()) { args[i + offset] = parameters[i].DefaultValue; } else { args[i + offset] = arguments[i].As(parameters[i].ParameterType, context); } } for (var i = n + offset; i < max; i++) { if (parameters[i].IsOptional) { args[i] = parameters[i].DefaultValue; } else { args[i] = parameters[i].ParameterType.GetDefaultValue(); } } if (max != parameters.Length) { var array = Array.CreateInstance(parameters[max].ParameterType.GetElementType(), Math.Max(0, arguments.Length - max)); for (var i = max; i < arguments.Length; i++) { array.SetValue(arguments[i].FromJsValue(), i - max); } args[max] = array; } return(args); }
public static void AddInstance(this EngineInstance engine, ObjectInstance obj, Type type) { var apply = type.GetInstanceAction(); apply.Invoke(engine, obj); }