JsBoolean.cs 1.5 KB

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