1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using Jint.Native;
- using Jint.Runtime;
- using Jint.Runtime.Interop;
- namespace Jint.Tests.Runtime.Domain
- {
- internal sealed class UuidPrototype : UuidInstance
- {
- private UuidPrototype(Engine engine) : base(engine)
- {
- }
- private UuidInstance EnsureUuidInstance(JsValue thisObj)
- {
- return thisObj.TryCast<UuidInstance>(value =>
- {
- throw new JavaScriptException(Engine.Realm.Intrinsics.TypeError, "Invalid Uuid");
- });
- }
- private JsValue ToGuidString(JsValue thisObj, JsValue[] arguments) => EnsureUuidInstance(thisObj).PrimitiveValue.ToString();
- private JsValue ValueOf(JsValue thisObj, JsValue[] arguments) => EnsureUuidInstance(thisObj).PrimitiveValue;
- public static UuidPrototype CreatePrototypeObject(Engine engine, UuidConstructor ctor)
- {
- var obj = new UuidPrototype(engine)
- {
- PrimitiveValue = JsUuid.Empty,
- _prototype = engine.Realm.Intrinsics.Object.PrototypeObject,
- };
- obj.FastAddProperty("constructor", ctor, false, false, true);
- return obj;
- }
- public void Configure()
- {
- FastAddProperty("toString", new ClrFunctionInstance(Engine, "toString", ToGuidString), true, false, true);
- FastAddProperty("valueOf", new ClrFunctionInstance(Engine, "valueOf", ValueOf), true, false, true);
- }
- }
- }
|