Lib.hx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package python;
  2. import python.internal.AnonObject;
  3. import python.internal.HxBuiltin;
  4. import python.lib.Dict;
  5. import python.NativeStringTools;
  6. typedef PySys = python.lib.Sys;
  7. class Lib {
  8. public static function print(v:Dynamic):Void {
  9. var str = Std.string(v);
  10. PySys.stdout.buffer.write( NativeStringTools.encode(str, "utf-8"));
  11. PySys.stdout.flush();
  12. }
  13. public static function println(v:Dynamic):Void {
  14. var str = Std.string(v);
  15. PySys.stdout.buffer.write( NativeStringTools.encode('$str\n', "utf-8"));
  16. PySys.stdout.flush();
  17. }
  18. public static function dictToAnon (v:Dict<String, Dynamic>):Dynamic
  19. {
  20. return new AnonObject(v.copy());
  21. }
  22. public static function anonToDict (o:{}):Dict<String, Dynamic>
  23. {
  24. return if (HxBuiltin.isinstance(o, AnonObject))
  25. {
  26. (Syntax.field(o, "__dict__"):Dict<String,Dynamic>).copy();
  27. }
  28. else null;
  29. }
  30. public static function toPythonIterable <T>(it:Iterable<T>):python.NativeIterable<T> {
  31. return {
  32. __iter__ : function () {
  33. var it1 = it.iterator();
  34. var self:NativeIterator<T> = null;
  35. self = new NativeIterator({
  36. __next__ : function ():T {
  37. if (it1.hasNext()) {
  38. return it1.next();
  39. } else {
  40. throw new python.lib.Exceptions.StopIteration();
  41. }
  42. },
  43. __iter__ : function () return self
  44. });
  45. return self;
  46. }
  47. }
  48. }
  49. public static inline function toHaxeIterable <T>(it:NativeIterable<T>):HaxeIterable<T> {
  50. return new HaxeIterable(it);
  51. }
  52. public static inline function toHaxeIterator <T>(it:NativeIterator<T>):HaxeIterator<T> {
  53. return new HaxeIterator(it);
  54. }
  55. }