hurl-lsp 0.1.11

Language Server Protocol implementation for Hurl
pub fn format_document(text: &str) -> Option<String> {
    let hurl_file = hurl_core::parser::parse_hurl_file(text).ok()?;
    Some(hurlfmt::linter::lint_hurl_file(&hurl_file))
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn formats_with_official_formatter() {
        let formatted = format_document("GET https://example.com   \nHTTP 200   ")
            .expect("expected formatter to return output");
        assert!(!formatted.contains('\u{1b}'));
    }

    #[test]
    fn returns_none_when_parse_fails() {
        let formatted =
            format_document("GET https://example.com\nHTTP 200\n[Asserts]\njsonpath \"$.id == 1\n");
        assert_eq!(formatted, None);
    }

    #[test]
    fn normalizes_form_whitespace() {
        let source = "POST https://example.org/login\n[Form]\n user: toto\npassword:1234\ntoken: {{csrf_token}}\nHTTP 302\n";
        let formatted = format_document(source).expect("expected formatter to return output");
        assert!(formatted.contains("\nuser: toto\n"));
        assert!(formatted.contains("\npassword: 1234\n"));
        assert_ne!(formatted, source);
    }
}