summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorA Farzat <a@farzat.xyz>2026-06-04 06:39:01 +0300
committerA Farzat <a@farzat.xyz>2026-06-04 06:39:01 +0300
commit6c0a5c33d18de9fb56f4f3804c790a86707add75 (patch)
treeb23d3b3052027e38fcb32f1ced3078dd9568cdb9 /src
parentf947b14863bba8cf2a06fc05c700a3623ada0c29 (diff)
downloadrepo2markdown-6c0a5c33d18de9fb56f4f3804c790a86707add75.tar.gz
repo2markdown-6c0a5c33d18de9fb56f4f3804c790a86707add75.zip
Add a renderer module to render markdown content
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs2
-rw-r--r--src/renderer.rs38
2 files changed, 40 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..db4162d
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,2 @@
+pub mod normalizer;
+pub mod renderer;
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"
+ );
+ }
+}