adapter.km 696 B

123456789101112131415161718192021222324252627282930313233343536
  1. # { "data": {"name":"Vec", "version":"v2"} }
  2. type Vec2 {
  3. x: NormalFloat,
  4. y: NormalFloat
  5. };
  6. # { "data": {"name":"Vec", "version":"v3"} }
  7. type Vec3 {
  8. x: NormalFloat,
  9. y: NormalFloat,
  10. z: NormalFloat
  11. };
  12. function @adapt:
  13. &(Vec2) => Vec3
  14. & { x, y } => { |Vec3| { x, y, z: 0 } };
  15. const Data: String := 'KumaChan Data
  16. {} ..Vec v2
  17. x float
  18. 1
  19. y float
  20. 2';
  21. do
  22. switch { @deserialize { encode Data } }.[Result[Vec3,Error]]:
  23. case Success vec:
  24. let { x, y, z } := vec,
  25. let desc := { "(?, ?, ?)" (x.{String}, y.{String}, z.{String}) },
  26. { os::println desc }
  27. . { crash-on-error },
  28. case Failure err:
  29. { crash err },
  30. end;