use crate::syntax::readers::yaml;
use crate::syntax::SyntaxReader;
#[must_use]
pub fn dispatcher(node_type: &str) -> Option<SyntaxReader> {
match node_type {
"block_mapping" | "flow_mapping" => Some(yaml::block_mapping::reader),
"block_mapping_pair" | "flow_pair" => Some(yaml::block_mapping_pair::reader),
"block_sequence" => Some(yaml::block_sequence::reader),
"comment" => Some(yaml::comment::reader),
"flow_node" => Some(yaml::flow_node::reader),
"flow_sequence" => Some(yaml::flow_sequence::reader),
"stream" => Some(yaml::stream::reader),
_ => None,
}
}
#[cfg(test)]
mod tests {
use super::dispatcher;
#[test]
fn maps_the_implemented_yaml_node_types() {
assert!(dispatcher("stream").is_some());
assert!(dispatcher("block_mapping").is_some());
assert!(dispatcher("flow_mapping").is_some());
assert!(dispatcher("block_sequence").is_some());
assert!(dispatcher("comment").is_some());
assert!(dispatcher("flow_sequence").is_some());
assert!(dispatcher("block_mapping_pair").is_some());
assert!(dispatcher("flow_pair").is_some());
assert!(dispatcher("flow_node").is_some());
}
#[test]
fn unmapped_node_types_have_no_reader() {
assert!(dispatcher("document").is_none());
assert!(dispatcher("").is_none());
}
}