diff options
| author | A Farzat <a@farzat.xyz> | 2026-06-04 06:39:01 +0300 |
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2026-06-04 06:39:01 +0300 |
| commit | 6c0a5c33d18de9fb56f4f3804c790a86707add75 (patch) | |
| tree | b23d3b3052027e38fcb32f1ced3078dd9568cdb9 /src/renderer.rs | |
| parent | f947b14863bba8cf2a06fc05c700a3623ada0c29 (diff) | |
| download | repo2markdown-6c0a5c33d18de9fb56f4f3804c790a86707add75.tar.gz repo2markdown-6c0a5c33d18de9fb56f4f3804c790a86707add75.zip | |
Add a renderer module to render markdown content
Diffstat (limited to 'src/renderer.rs')
| -rw-r--r-- | src/renderer.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/renderer.rs b/src/renderer.rs new file mode 100644 index 0000000..518abd8 --- /dev/null +++ b/src/renderer.rs @@ -0,0 +1,38 @@ +pub fn render(project_name: &str, files: &[(&str, &str)]) -> String { + let mut output = format!("# {}\n", project_name); + if !files.is_empty() { + output.push_str("\n## Files\n"); + } + for (filename, content) in files { + output.push_str(&format!("\n### {}\n```\n{}\n```\n", filename, content)); + } + output +} + +#[cfg(test)] +mod tests { + use super::render; + + #[test] + fn empty_project_renders_only_title() { + let output = render("Project name", &[]); + assert_eq!(output, "# Project name\n"); + } + + #[test] + fn single_file_is_rendered() { + let files = vec![("main.rs", "fn main() {}")]; + + let output = render("Project name", &files); + + assert_eq!( + output, + "# Project name\n\n\ + ## Files\n\n\ + ### main.rs\n\ + ```\n\ + fn main() {}\n\ + ```\n" + ); + } +} |
