code2prompt_core 4.2.0

A command-line (CLI) tool to generate an LLM prompt from codebases of any size, fast.
Documentation
use code2prompt_core::template::{extract_undefined_variables, handlebars_setup, render_template};

#[cfg(test)]
mod tests {
    use super::*;
    use serde_json::json;

    #[test]
    fn test_handlebars_setup() {
        let template_str = "Hello, {{name}}!";
        let template_name = "test_template";

        // Call the handlebars_setup function
        let handlebars =
            handlebars_setup(template_str, template_name).expect("Failed to set up Handlebars");

        // Prepare the data
        let data = json!({
            "name": "Bernard"
        });

        // Render the template
        let rendered = render_template(&handlebars, "test_template", &data);

        // Assert the result
        match rendered {
            Ok(output) => assert_eq!(output, "Hello, Bernard!"),
            Err(e) => panic!("Template rendering failed: {}", e),
        }
    }

    #[test]
    fn test_extract_undefined_variables() {
        let template_str = "{{name}} is learning {{language}} and {{framework}}!";
        let variables = extract_undefined_variables(template_str);
        assert_eq!(variables, vec!["name", "language", "framework"]);
    }

    #[test]
    fn test_render_template() {
        let template_str = "{{greeting}}, {{name}}!";
        let template_name = "test_template";
        let handlebars = handlebars_setup(template_str, template_name).unwrap();
        let data = json!({ "greeting": "Hello", "name": "Bernard" });
        let rendered = render_template(&handlebars, template_name, &data);

        match rendered {
            Ok(output) => assert_eq!(output, "Hello, Bernard!"),
            Err(e) => panic!("Template rendering failed: {}", e),
        }
    }
}