JsBoolean.cs 1.5 KB

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