pythonic 0.3.0

pythonic is a Rust AST builder that generates Python
Documentation
extern crate pythonic;

use pythonic::{Argument, Block, Function, Statement};

fn main() {
    let mut program = Block::new();

    let mut function = Function::new("hello",
                                     vec![Argument::new("name",
                                                        Some("\"World\""),
                                                        Some("str"),
                                                        Some("The name to say Hello to"))],
                                     &program);
    let arguments = vec![Statement::unnamed_variable("Hello"),
                         Statement::variable("name")];
    let function_call = Statement::function_call("print", arguments);
    function.add_statement(function_call);
    function.add_docstring("hello is a function that prints \"Hello\" with the given \
                            name argument.");

    program.add_function(function);
    let function_call = Statement::function_call(
      "hello",
      vec![
        Statement::unnamed_variable("Chris")
      ]);
    program.add_statement(function_call);
    let expected = r#"def hello(name="World"):
    """
    hello is a function that prints "Hello" with the given name argument.

    :param name: str The name to say Hello to
    """
    print("Hello", name)

hello("Chris")
"#;
    let actual = format!("{}",program);
    assert_eq!(expected, actual);

    println!("{}", actual);

}