about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Koropoff <bkoropoff@gmail.com>2014-09-28 20:24:35 -0700
committerBrian Koropoff <bkoropoff@gmail.com>2014-09-28 20:30:06 -0700
commitae3d42ef0dab39f4d2b36a361f667818e1ffc026 (patch)
treeb04ac07c960d57ded7fee3c80a2eeeb54fb01e6e
parentb7aa03a3caab2f15f32dcdb20b23510707ba47f8 (diff)
downloadrust-ae3d42ef0dab39f4d2b36a361f667818e1ffc026.tar.gz
rust-ae3d42ef0dab39f4d2b36a361f667818e1ffc026.zip
Use the same JSON schema for encoding enums in PrettyEncoder as in Encoder
Closes issue #17607
-rw-r--r--src/libserialize/json.rs24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs
index b936dde6fe4..ed95fa341b3 100644
--- a/src/libserialize/json.rs
+++ b/src/libserialize/json.rs
@@ -668,16 +668,23 @@ impl<'a> ::Encoder<io::IoError> for PrettyEncoder<'a> {
         if cnt == 0 {
             escape_str(self.writer, name)
         } else {
+            try!(write!(self.writer, "{{\n"));
             self.curr_indent += self.indent;
-            try!(write!(self.writer, "[\n"));
             try!(spaces(self.writer, self.curr_indent));
+            try!(write!(self.writer, "\"variant\": "));
             try!(escape_str(self.writer, name));
             try!(write!(self.writer, ",\n"));
+            try!(spaces(self.writer, self.curr_indent));
+            try!(write!(self.writer, "\"fields\": [\n"));
+            self.curr_indent += self.indent;
             try!(f(self));
             self.curr_indent -= self.indent;
             try!(write!(self.writer, "\n"));
             try!(spaces(self.writer, self.curr_indent));
-            write!(self.writer, "]")
+            self.curr_indent -= self.indent;
+            try!(write!(self.writer, "]\n"));
+            try!(spaces(self.writer, self.curr_indent));
+            write!(self.writer, "}}")
         }
     }
 
@@ -2651,12 +2658,13 @@ mod tests {
                 let mut encoder = PrettyEncoder::new(writer);
                 animal.encode(&mut encoder).unwrap();
             }),
-            "\
-            [\n  \
-                \"Frog\",\n  \
-                \"Henry\",\n  \
-                349\n\
-            ]".to_string()
+            "{\n  \
+               \"variant\": \"Frog\",\n  \
+               \"fields\": [\n    \
+                 \"Henry\",\n    \
+                 349\n  \
+               ]\n\
+             }".to_string()
         );
     }