1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use dprint_core::{print, PrintOptions};
use dprint_core::configuration::resolve_new_line_kind;
use super::configuration::Configuration;
use super::parser::parse_items;

pub fn format_text(text: &str, config: &Configuration) -> Result<String, String> {
    let print_items = parse_items(text, config)?;

    Ok(print(print_items, PrintOptions {
        indent_width: config.indent_width,
        max_width: config.line_width,
        use_tabs: config.use_tabs,
        new_line_text: resolve_new_line_kind(text, config.new_line_kind),
    }))
}

#[cfg(test)]
mod tests {
    use dprint_core::configuration::*;
    use std::collections::HashMap;
    use super::super::configuration::resolve_config;
    use super::*;

    #[test]
    fn should_error_on_syntax_diagnostic() {
        let global_config = resolve_global_config(HashMap::new()).config;
        let config = resolve_config(HashMap::new(), &global_config).config;
        let message = format_text("{ &*&* }", &config).err().unwrap();
        assert_eq!(
            message,
            concat!(
                "Line 1, column 3: Unexpected token\n",
                "\n",
                "  { &*&* }\n",
                "    ~"
            )
        );
    }
}