KwArgs.hx 795 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package python;
  2. import python.lib.Dict;
  3. /**
  4. This type represents python `**kwargs` feature, supporting
  5. passing named arguments to a function.
  6. Example:
  7. function f(kwargs:KwArgs<{a:Int}>) {}
  8. f({a: 10});
  9. **/
  10. abstract KwArgs<T:{}>(Dict<String,Dynamic>) {
  11. inline function new (d:Dict<String,Dynamic>) {
  12. this = d;
  13. }
  14. @:to public inline function toDict():Dict<String,Dynamic> {
  15. return this;
  16. }
  17. @:from static inline function fromDict(d:Dict<String,Dynamic>):KwArgs<Dynamic> {
  18. return new KwArgs(d);
  19. }
  20. @:from static inline function fromT<T:{}>(d:T):KwArgs<T> {
  21. return new KwArgs(Lib.anonAsDict(d));
  22. }
  23. public inline function typed():T {
  24. return Lib.dictAsAnon(toDict());
  25. }
  26. public inline function get<V>(key:String, def:V):V {
  27. return this.get(key, def);
  28. }
  29. }