about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorJohn Clements <clements@racket-lang.org>2013-02-06 16:20:41 -0800
committerJohn Clements <clements@racket-lang.org>2013-02-09 13:37:04 -0800
commit765961438d0a3f8f37f1e38160f6dca04870ae10 (patch)
tree1cf41ba7a5fd2df4e63cca3b85c9c2277fc019d6 /src/libstd
parent19dfec2aaf746535de1521f68421f9980dbf25de (diff)
fix typos in sample code, add enum to json encoder, add test case
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/json.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libstd/json.rs b/src/libstd/json.rs
index 404f1bcda99..2ad18fbced2 100644
--- a/src/libstd/json.rs
+++ b/src/libstd/json.rs
@@ -122,9 +122,15 @@ pub impl Encoder: serialize::Encoder {
     fn emit_managed(&self, f: fn()) { f() }
 
     fn emit_enum(&self, name: &str, f: fn()) {
-        if name != "option" { die!(~"only supports option enum") }
-        f()
+        // emitting enums as arrays where the first
+        // element provides the enum variant name
+        self.wr.write_char('[');
+        self.wr.write_str(name);
+        self.wr.write_char(',');
+        f();
+        self.wr.write_char(']');
     }
+    
     fn emit_enum_variant(&self, _name: &str, id: uint, _cnt: uint, f: fn()) {
         if id == 0 {
             self.emit_nil();