fluidattacks-blends-domain 0.27.0

Blends functional core: pure AST graph to syntax graph (no_std)
Documentation
use crate::syntax::readers::swift;
use crate::syntax::SyntaxReader;

pub fn dispatcher(node_type: &str) -> Option<SyntaxReader> {
    match node_type {
        "source_file" => Some(swift::source_file::reader),
        "boolean_literal" => Some(swift::boolean_literal::reader),
        "integer_literal" => Some(swift::integer_literal::reader),
        "nil" => Some(swift::nil::reader),
        "constructor_expression"
        | "identifier"
        | "open_start_range_expression"
        | "self_expression"
        | "simple_identifier"
        | "switch_pattern" => Some(swift::identifier::reader),
        "comment" | "directive" | "multiline_comment" => Some(swift::comment::reader),
        "array_literal" => Some(swift::array_node::reader),
        "dictionary_literal" => Some(swift::dictionary_literal::reader),
        "super_expression" => Some(swift::reserved_word::reader),
        "enum_type_parameters"
        | "line_string_literal"
        | "multi_line_string_literal"
        | "tuple_expression"
        | "user_type" => Some(swift::string_literal::reader),
        _ => None,
    }
}

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

    #[test]
    fn maps_the_implemented_swift_node_types() {
        assert!(dispatcher("source_file").is_some());
        assert!(dispatcher("boolean_literal").is_some());
        assert!(dispatcher("integer_literal").is_some());
        assert!(dispatcher("nil").is_some());
        assert!(dispatcher("constructor_expression").is_some());
        assert!(dispatcher("identifier").is_some());
        assert!(dispatcher("open_start_range_expression").is_some());
        assert!(dispatcher("self_expression").is_some());
        assert!(dispatcher("simple_identifier").is_some());
        assert!(dispatcher("switch_pattern").is_some());
        assert!(dispatcher("comment").is_some());
        assert!(dispatcher("directive").is_some());
        assert!(dispatcher("multiline_comment").is_some());
        assert!(dispatcher("array_literal").is_some());
        assert!(dispatcher("dictionary_literal").is_some());
        assert!(dispatcher("super_expression").is_some());
        assert!(dispatcher("enum_type_parameters").is_some());
        assert!(dispatcher("line_string_literal").is_some());
        assert!(dispatcher("multi_line_string_literal").is_some());
        assert!(dispatcher("tuple_expression").is_some());
        assert!(dispatcher("user_type").is_some());
    }
}