use crate::config::{GuidanceConfig, GuidanceTemplate};
pub fn generate_guidance_from_config(
config: &GuidanceConfig,
tool: &str,
_query: Option<&str>,
result_count: usize,
) -> Option<String> {
if !config.enabled {
return None;
}
let template = config.templates.get(tool)?;
let template_str = select_template(template, result_count)?;
let mut result = template_str.clone();
result = result.replace("{result_count}", &result_count.to_string());
result = result.replace("{tool}", tool);
for (key, value) in &config.variables {
result = result.replace(&format!("{{{key}}}"), value);
}
Some(result)
}
fn select_template(template: &GuidanceTemplate, result_count: usize) -> Option<String> {
for range in &template.custom {
let in_range = result_count >= range.min && range.max.is_none_or(|max| result_count <= max);
if in_range {
return Some(range.template.clone());
}
}
match result_count {
0 => template.no_results.clone(),
1 => template.single_result.clone(),
_ => template.multiple_results.clone(),
}
}