From 8ce7882b3837eddc610a3008eb43fe3711727f1a Mon Sep 17 00:00:00 2001 From: Daan Boerlage Date: Wed, 22 Jan 2025 03:53:28 +0100 Subject: [PATCH] Directly write to stdout when rendering jiradoc --- crates/jirac/src/cmd/view.rs | 4 ++-- crates/jirac/src/renderer/doc.rs | 21 +++++++++++++-------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/crates/jirac/src/cmd/view.rs b/crates/jirac/src/cmd/view.rs index 0592c07..3b2f1a1 100644 --- a/crates/jirac/src/cmd/view.rs +++ b/crates/jirac/src/cmd/view.rs @@ -66,7 +66,7 @@ fn pretty_print(config: &JiraConfig, issue: &JiraIssue) -> Result<(), Box match x { - Description::Doc(doc) => println!("{}", render_doc(doc)?), + Description::Doc(doc) => render_doc(doc)?, }, None => println!("(Issue does not have a description)"), } @@ -78,7 +78,7 @@ fn pretty_print(config: &JiraConfig, issue: &JiraIssue) -> Result<(), Box Result<(), Box> { +fn render_doc_node(f: &mut StdoutLock, node: &DocNode) -> Result<(), Box> { match node { DocNode::Paragraph(x) => { for node in x { @@ -66,7 +67,10 @@ fn render_doc_node(f: &mut String, node: &DocNode) -> Result<(), Box Result<(), Box> { +fn render_text_node( + f: &mut StdoutLock, + node: &DocTextNode, +) -> Result<(), Box> { match node { DocTextNode::Text(x) => { write!(f, "{}", x.text)?; @@ -86,7 +90,7 @@ fn render_text_node(f: &mut String, node: &DocTextNode) -> Result<(), Box Result<(), Box> { match node { @@ -107,7 +111,7 @@ fn render_text_markets( Ok(()) } -fn render_media(f: &mut String, node: &DocMedia) -> Result<(), Box> { +fn render_media(f: &mut StdoutLock, node: &DocMedia) -> Result<(), Box> { match node { DocMedia::File(x) => { writeln!(f, "[file:{}:{}]", x.id, x.alt)?; @@ -117,12 +121,13 @@ fn render_media(f: &mut String, node: &DocMedia) -> Result<(), Box Result> { - let mut f = String::new(); +pub fn render_doc(doc: Doc) -> Result<(), Box> { + let out = stdout(); + let mut f = out.lock(); for node in doc.content { render_doc_node(&mut f, &node)?; } - Ok(f) + Ok(()) }