bool.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /**
  2. * @constructor
  3. * Sk.builtin.bool
  4. *
  5. * @description
  6. * Constructor for Python bool. Also used for builtin bool() function.
  7. *
  8. * Where possible, do not create a new instance but use the constants
  9. * Sk.builtin.bool.true$ or Sk.builtin.bool.false$. These are defined in src/constant.js
  10. *
  11. * @extends {Sk.builtin.object}
  12. *
  13. * @param {(Object|number|boolean)} x Value to evaluate as true or false
  14. * @return {Sk.builtin.bool} Sk.builtin.bool.true$ if x is true, Sk.builtin.bool.false$ otherwise
  15. */
  16. Sk.builtin.bool = function (x) {
  17. Sk.builtin.pyCheckArgs("bool", arguments, 1);
  18. if (Sk.misceval.isTrue(x)) {
  19. return Sk.builtin.bool.true$;
  20. } else {
  21. return Sk.builtin.bool.false$;
  22. }
  23. };
  24. Sk.abstr.setUpInheritance("bool", Sk.builtin.bool, Sk.builtin.int_);
  25. Sk.builtin.bool.prototype["$r"] = function () {
  26. if (this.v) {
  27. return new Sk.builtin.str("True");
  28. }
  29. return new Sk.builtin.str("False");
  30. };
  31. Sk.builtin.bool.prototype.tp$hash = function () {
  32. return new Sk.builtin.int_(this.v);
  33. };
  34. Sk.builtin.bool.prototype.__int__ = new Sk.builtin.func(function(self) {
  35. var v = Sk.builtin.asnum$(self);
  36. return new Sk.builtin.int_(v);
  37. });
  38. Sk.builtin.bool.prototype.__float__ = new Sk.builtin.func(function(self) {
  39. return new Sk.builtin.float_(Sk.ffi.remapToJs(self));
  40. });
  41. goog.exportSymbol("Sk.builtin.bool", Sk.builtin.bool);