Lib.hx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. //return o;
  22. }
  23. public static function anonToDict (o:{}):Dynamic
  24. {
  25. return if (HxBuiltin.isinstance(o, AnonObject))
  26. {
  27. (Syntax.field(o, "__dict__"):Dict<String,Dynamic>).copy();
  28. }
  29. else null;
  30. }
  31. public static function toPythonIterable <T>(it:Iterable<T>):python.NativeIterable<T> {
  32. return {
  33. __iter__ : function () {
  34. var it1 = it.iterator();
  35. var self:NativeIterator<T> = null;
  36. self = new NativeIterator({
  37. __next__ : function ():T {
  38. if (it1.hasNext()) {
  39. return it1.next();
  40. } else {
  41. throw new python.lib.Exceptions.StopIteration();
  42. }
  43. },
  44. __iter__ : function () return self
  45. });
  46. return self;
  47. }
  48. }
  49. }
  50. public static inline function toHaxeIterable <T>(it:NativeIterable<T>):HaxeIterable<T> {
  51. return new HaxeIterable(it);
  52. }
  53. public static inline function toHaxeIterator <T>(it:NativeIterator<T>):HaxeIterator<T> {
  54. return new HaxeIterator(it);
  55. }
  56. }