testing json module
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 19 Jun 2021 01:06:56 +0000 (20:06 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 19 Jun 2021 01:06:56 +0000 (20:06 -0500)
modules/json/encoder.onyx
modules/json/example.onyx

index eb08922b2b1a470ec47f97a67e5e790c421fdc01..df5dd013bdb4e5d11633c14a542e328f53370cca 100644 (file)
@@ -114,8 +114,8 @@ encode :: #match {
     },
 
 
-    // Inserted after any of the #add_match directives
-    #precedence 1000 (w: ^io.Writer, v: $T) -> Encoding_Error {
-        return .Unsupported_Type;
-    }
+    // // Inserted after any of the #add_match directives
+    // #precedence 1000 (w: ^io.Writer, v: $T) -> Encoding_Error {
+    //     return .Unsupported_Type;
+    // }
 }
\ No newline at end of file
index d45297c4222ae3f28c6e2adbce6ac329a057c897..37db471596aab405b5bdff3e9c206576996b4fbc 100644 (file)
@@ -31,7 +31,28 @@ main :: (args: [] cstr) {
         decoded_json.root["test"]->as_str() |> println();
     }
 
-    json.encode(^stdio.print_writer, decoded_json.root);
+    json.encode(^stdio.print_writer, decoded_json.root["sub"]);
+    print("\n");
+
+    v_arr := array.make(Vector2);
+    defer array.free(^v_arr);
+
+    array.push(^v_arr, .{ 10, 20 });
+    array.push(^v_arr, .{ 12.34, 45.67 });
+    array.push(^v_arr, .{ 0, -10 });
+
+    if err := json.encode(^stdio.print_writer, v_arr); err != .None {
+        printf("Error formatting json %i", cast(i32) err);
+    }
     print("\n");
 }
-    
\ No newline at end of file
+
+Vector2 :: struct {
+    x, y: f32;
+}
+
+#add_match json.encode, (w: ^io.Writer, v: Vector2) -> json.Encoding_Error {
+    io.write_format(w, "{\"x\":%f,\"y\":%f}", v.x, v.y);
+
+    return .None;
+}
\ No newline at end of file