use crate::syntax::readers::json;
use crate::syntax::SyntaxReader;
#[must_use]
pub fn dispatcher(node_type: &str) -> Option<SyntaxReader> {
match node_type {
"array" => Some(json::array_node::reader),
"comment" => Some(json::comment::reader),
"document" => Some(json::document::reader),
"false" | "true" => Some(json::boolean::reader),
"number" => Some(json::number::reader),
"object" => Some(json::object::reader),
"pair" => Some(json::pair::reader),
"string" => Some(json::string_node::reader),
_ => None,
}
}
#[cfg(test)]
mod tests {
use super::dispatcher;
#[test]
fn maps_the_implemented_json_node_types() {
assert!(dispatcher("document").is_some());
assert!(dispatcher("object").is_some());
assert!(dispatcher("pair").is_some());
assert!(dispatcher("array").is_some());
assert!(dispatcher("true").is_some());
assert!(dispatcher("false").is_some());
assert!(dispatcher("number").is_some());
assert!(dispatcher("string").is_some());
assert!(dispatcher("comment").is_some());
}
#[test]
fn unmapped_node_types_have_no_reader() {
assert!(dispatcher("stream").is_none());
assert!(dispatcher("").is_none());
}
}