csvpp 0.8.0

Compile csv++ source code to a target spreadsheet format
Documentation
mod common;
use common::*;

#[test]
fn all_operators() {
    assert_str_compiles_eq(
        "all_operators",
        r#"
# infix operators
plus := 1 + 2
minus := 1 - 2
multiply := 1 * 2
divide := 1 / 2
power := 1 ^ 2
concat := 1 & 2
equal := 1 = 2
less_than := 1 < 2
less_than_equal := 1 <= 2
greater_than := 1 > 2
greater_than_equal := 1 >= 2

# postfix
percentage := 1%

# prefix
positive := +1
negative := -1

---
=plus,
=minus,
=multiply,
=divide,
=power,
=concat,
=equal,
=less_than,
=less_than_equal,
=greater_than,
=greater_than_equal,
=percentage,
=positive,
=negative,
"#,
        "=(1 + 2),
=(1 - 2),
=(1 * 2),
=(1 / 2),
=(1 ^ 2),
=(1 & 2),
=(1 = 2),
=(1 < 2),
=(1 <= 2),
=(1 > 2),
=(1 >= 2),
=1%,
=+1,
=-1,
",
    );
}

#[test]
fn infix_operators_precedence() {
    assert_str_compiles_eq(
        "infix_operators_precedence",
        r#"
foo := 1 - 2 + 3 / 4 * 5 ^ 6 & 7 = 8 < 9 <= 10 > 11 >= 12
---
=foo"#,
        "=(((1 - (2 + (3 / (4 * (5 ^ 6))))) & 7) = (8 < (9 <= (10 > (11 >= 12)))))\n",
    );
}

#[test]
fn escape_newlines() {
    assert_str_compiles_eq(
        "escape_newlines",
        r#"---
[[t=b/ \
    t=u/ \
    halign=left]]foo, bar, baz"#,
        "foo,bar,baz\n",
    );
}