changeset 55:32c78b275d5a

Implement comprehension’s to_string.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sun, 12 Jun 2016 02:27:57 +0100
parents ad2453a55820
children c3cc16b933d2
files src/ast_dump.rs
diffstat 1 files changed, 8 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/ast_dump.rs
+++ b/src/ast_dump.rs
@@ -97,15 +97,15 @@ fn if_else_statements_to_string(indent: 
     }
 }
 
-fn generators_to_string(generators: Vec<comprehension>) -> String {
-    let mut result  = vec!();
-    for generator in generators {
-        result.push(format!("for {} in {}", generator.target.to_string(), generator.iter.to_string()));
-        for if_ in generator.ifs {
+impl to_string_able for comprehension {
+    fn to_string(&self) -> String {
+        let mut result = vec!();
+        result.push(format!("for {} in {}", self.target.to_string(), self.iter.to_string()));
+        for if_ in self.ifs.clone() {
             result.push(format!("if {}", if_.to_string()))
         }
+        result.join(" ")
     }
-    result.join(" ")
 }
 
 impl to_string_able for expr {
@@ -155,8 +155,8 @@ impl to_string_able for expr {
             expr::Attribute(value, attr, ctx) => format!("{}.{}", value.to_string(), attr),
             expr::Name(name, ctx) => format!("{}", name),
             expr::List(elts, ctx) => format!("[{}]", vec_to_strings_vec(elts).join(", ")),
-            expr::ListComp(elt, generators) => format!("[{} {}]", elt.to_string(), generators_to_string(generators)),
-            expr::DictComp(key, value, generators) => format!("{{{}: {} {}}}", key.to_string(), value.to_string(), generators_to_string(generators)),
+            expr::ListComp(elt, generators) => format!("[{} {}]", elt.to_string(), vec_to_strings_vec(generators).join(" ")),
+            expr::DictComp(key, value, generators) => format!("{{{}: {} {}}}", key.to_string(), value.to_string(), vec_to_strings_vec(generators).join(" ")),
             expr::Tuple(elts, ctx) => format!("({})", vec_to_strings_vec(elts).join(", ")),
             expr::Ellipsis => format!("..."),
         }