summaryrefslogtreecommitdiff
path: root/src/renderer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer.rs')
-rw-r--r--src/renderer.rs38
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"
+ );
+ }
+}