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());
}
}