use super::cmd_hlp::hlp_dispatch;
use crate::control::Reasoner;
use nar_dev_utils::macro_once;
pub fn inf_dispatch(reasoner: &mut Reasoner, query: impl AsRef<str>) -> Result<String, String> {
macro_once! {
macro ( $( $query:literal => $message:expr )* ) => {
const ALL_QUERIES_LIST: &str = concat!($( "\n- ", $query, )*);
match query.as_ref() {
"" => Ok(format!(
"Available info queries: {ALL_QUERIES_LIST}\n\nAnd more info:\n{}",
hlp_dispatch(reasoner, "inf")?
)),
$( $query => Ok($message.to_string()), )*
other => Err(format!("Unknown info query: {other:?}\nAvailable info queries: {ALL_QUERIES_LIST}")),
}
}
"parameters" => reasoner.report_parameters() "tasks" => reasoner.report_tasks() "beliefs" => reasoner.report_beliefs() "questions" => reasoner.report_questions() "concepts" => reasoner.report_concepts() "links" => reasoner.report_links() "summary" => reasoner.report_summary()
"#parameters" => reasoner.report_parameters_detailed() "#tasks" => reasoner.report_tasks_detailed() "#beliefs" => reasoner.report_beliefs_detailed() "#questions" => reasoner.report_questions_detailed() "#concepts" => reasoner.report_concepts_detailed() "#links" => reasoner.report_links_detailed() }
}