Mercurial > python-compiler.rs
comparison 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 |
comparison
equal
deleted
inserted
replaced
47:38f59b0efc2c | 48:039f85b187f2 |
---|---|
188 stmt::AugAssign(target, op, value) => format!("{}{} {}= {}", current_indent, target.to_string(), op.to_string(), value.to_string()), | 188 stmt::AugAssign(target, op, value) => format!("{}{} {}= {}", current_indent, target.to_string(), op.to_string(), value.to_string()), |
189 stmt::Return(expr) => format!("{}return{}", current_indent, match expr { | 189 stmt::Return(expr) => format!("{}return{}", current_indent, match expr { |
190 Some(expr) => format!(" {}", expr.to_string()), | 190 Some(expr) => format!(" {}", expr.to_string()), |
191 None => "".to_string() | 191 None => "".to_string() |
192 }), | 192 }), |
193 stmt::ImportFrom(module, names, level) => format!("{}from {} import {}", current_indent, module.to_string(), { | 193 stmt::ImportFrom(module, names, level) => { |
194 let mut names_ = vec!(); | 194 format!("{}from {}{} import {}", |
195 for name in names { | 195 current_indent, |
196 match name.asname { | 196 { |
197 None => names_.push(name.name), | 197 match level { |
198 Some(asname) => names_.push(format!("{} as {}", name.name, asname)) | 198 None => String::new(), |
199 Some(level) => { let dots: String = iter::repeat(".").take(level as usize).collect(); dots } | |
200 } | |
201 }, | |
202 module.to_string(), | |
203 { | |
204 let mut names_ = vec!(); | |
205 for name in names { | |
206 match name.asname { | |
207 None => names_.push(name.name), | |
208 Some(asname) => names_.push(format!("{} as {}", name.name, asname)) | |
209 } | |
210 } | |
211 names_.join(", ") | |
199 } | 212 } |
200 } | 213 ) |
201 names_.join(", ") | 214 }, |
202 }), | |
203 stmt::Import(names) => format!("{}import {}", current_indent, { | 215 stmt::Import(names) => format!("{}import {}", current_indent, { |
204 let mut names_ = vec!(); | 216 let mut names_ = vec!(); |
205 for name in names { | 217 for name in names { |
206 match name.asname { | 218 match name.asname { |
207 None => names_.push(name.name), | 219 None => names_.push(name.name), |