JsBoolean.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Jint.Runtime;
  2. namespace Jint.Native;
  3. public sealed class JsBoolean : JsValue, IEquatable<JsBoolean>
  4. {
  5. public static readonly JsBoolean False = new JsBoolean(false);
  6. public static readonly JsBoolean True = new JsBoolean(true);
  7. internal static readonly object BoxedTrue = true;
  8. internal static readonly object BoxedFalse = false;
  9. internal readonly bool _value;
  10. public JsBoolean(bool value) : base(Types.Boolean)
  11. {
  12. _value = value;
  13. }
  14. public override object ToObject()
  15. {
  16. return _value ? BoxedTrue : BoxedFalse;
  17. }
  18. public override string ToString()
  19. {
  20. return _value ? "true" : "false";
  21. }
  22. public override bool IsLooselyEqual(JsValue value)
  23. {
  24. if (value is JsBoolean jsBoolean)
  25. {
  26. return Equals(jsBoolean);
  27. }
  28. return !value.IsNullOrUndefined() && base.IsLooselyEqual(value);
  29. }
  30. public override bool Equals(JsValue? obj)
  31. {
  32. return Equals(obj as JsBoolean);
  33. }
  34. public bool Equals(JsBoolean? other)
  35. {
  36. if (ReferenceEquals(this, other))
  37. {
  38. return true;
  39. }
  40. if (other is null)
  41. {
  42. return false;
  43. }
  44. return _value == other._value;
  45. }
  46. public override int GetHashCode()
  47. {
  48. return _value.GetHashCode();
  49. }
  50. }