diff src/ast_dump.rs @ 48:039f85b187f2

Also handle relative imports.
author Bastien Orivel <eijebong@bananium.fr>
date Tue, 07 Jun 2016 13:34:12 +0200
parents 38f59b0efc2c
children 141f1769e1f0
line wrap: on
line diff
--- a/src/ast_dump.rs
+++ b/src/ast_dump.rs
@@ -190,16 +190,28 @@ impl stmt {
                 Some(expr) => format!(" {}", expr.to_string()),
                 None => "".to_string()
             }),
-            stmt::ImportFrom(module, names, level) => format!("{}from {} import {}", current_indent, module.to_string(), {
-                let mut names_ = vec!();
-                for name in names {
-                    match name.asname {
-                        None => names_.push(name.name),
-                        Some(asname) => names_.push(format!("{} as {}", name.name, asname))
+            stmt::ImportFrom(module, names, level) => {
+                format!("{}from {}{} import {}",
+                    current_indent,
+                    {
+                        match level {
+                            None => String::new(),
+                            Some(level) => { let dots: String = iter::repeat(".").take(level as usize).collect(); dots }
+                        }
+                    },
+                    module.to_string(),
+                    {
+                        let mut names_ = vec!();
+                        for name in names {
+                            match name.asname {
+                                None => names_.push(name.name),
+                                Some(asname) => names_.push(format!("{} as {}", name.name, asname))
+                            }
+                        }
+                        names_.join(", ")
                     }
-                }
-                names_.join(", ")
-            }),
+                )
+            },
             stmt::Import(names) => format!("{}import {}", current_indent, {
                 let mut names_ = vec!();
                 for name in names {