Directly write to stdout when rendering jiradoc
This commit is contained in:
parent
c2f1fd239b
commit
8ce7882b38
2 changed files with 15 additions and 10 deletions
|
@ -66,7 +66,7 @@ fn pretty_print(config: &JiraConfig, issue: &JiraIssue) -> Result<(), Box<dyn st
|
||||||
println!("\n== Description {:=<65}", "");
|
println!("\n== Description {:=<65}", "");
|
||||||
match issue.fields.description.clone() {
|
match issue.fields.description.clone() {
|
||||||
Some(x) => match x {
|
Some(x) => match x {
|
||||||
Description::Doc(doc) => println!("{}", render_doc(doc)?),
|
Description::Doc(doc) => render_doc(doc)?,
|
||||||
},
|
},
|
||||||
None => println!("(Issue does not have a description)"),
|
None => println!("(Issue does not have a description)"),
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ fn pretty_print(config: &JiraConfig, issue: &JiraIssue) -> Result<(), Box<dyn st
|
||||||
comment.author.display_name.red(),
|
comment.author.display_name.red(),
|
||||||
comment.created.with_timezone(&chrono::Local)
|
comment.created.with_timezone(&chrono::Local)
|
||||||
);
|
);
|
||||||
println!("{}", render_doc(comment.body)?);
|
render_doc(comment.body)?;
|
||||||
}
|
}
|
||||||
println!("\n== Actions {:=<69}", "");
|
println!("\n== Actions {:=<69}", "");
|
||||||
println!(
|
println!(
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
use crossterm::style::Stylize;
|
use crossterm::style::Stylize;
|
||||||
use libjirac::entities::doc::{Doc, DocMedia, DocNode, DocTextMarker, DocTextNode};
|
use libjirac::entities::doc::{Doc, DocMedia, DocNode, DocTextMarker, DocTextNode};
|
||||||
use std::fmt::Write;
|
use std::io::Write;
|
||||||
|
use std::io::{stdout, StdoutLock};
|
||||||
|
|
||||||
fn render_doc_node(f: &mut String, node: &DocNode) -> Result<(), Box<dyn std::error::Error>> {
|
fn render_doc_node(f: &mut StdoutLock, node: &DocNode) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
match node {
|
match node {
|
||||||
DocNode::Paragraph(x) => {
|
DocNode::Paragraph(x) => {
|
||||||
for node in x {
|
for node in x {
|
||||||
|
@ -66,7 +67,10 @@ fn render_doc_node(f: &mut String, node: &DocNode) -> Result<(), Box<dyn std::er
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_text_node(f: &mut String, node: &DocTextNode) -> Result<(), Box<dyn std::error::Error>> {
|
fn render_text_node(
|
||||||
|
f: &mut StdoutLock,
|
||||||
|
node: &DocTextNode,
|
||||||
|
) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
match node {
|
match node {
|
||||||
DocTextNode::Text(x) => {
|
DocTextNode::Text(x) => {
|
||||||
write!(f, "{}", x.text)?;
|
write!(f, "{}", x.text)?;
|
||||||
|
@ -86,7 +90,7 @@ fn render_text_node(f: &mut String, node: &DocTextNode) -> Result<(), Box<dyn st
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_text_markets(
|
fn render_text_markets(
|
||||||
f: &mut String,
|
f: &mut StdoutLock,
|
||||||
node: &DocTextMarker,
|
node: &DocTextMarker,
|
||||||
) -> Result<(), Box<dyn std::error::Error>> {
|
) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
match node {
|
match node {
|
||||||
|
@ -107,7 +111,7 @@ fn render_text_markets(
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_media(f: &mut String, node: &DocMedia) -> Result<(), Box<dyn std::error::Error>> {
|
fn render_media(f: &mut StdoutLock, node: &DocMedia) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
match node {
|
match node {
|
||||||
DocMedia::File(x) => {
|
DocMedia::File(x) => {
|
||||||
writeln!(f, "[file:{}:{}]", x.id, x.alt)?;
|
writeln!(f, "[file:{}:{}]", x.id, x.alt)?;
|
||||||
|
@ -117,12 +121,13 @@ fn render_media(f: &mut String, node: &DocMedia) -> Result<(), Box<dyn std::erro
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn render_doc(doc: Doc) -> Result<String, Box<dyn std::error::Error>> {
|
pub fn render_doc(doc: Doc) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let mut f = String::new();
|
let out = stdout();
|
||||||
|
let mut f = out.lock();
|
||||||
|
|
||||||
for node in doc.content {
|
for node in doc.content {
|
||||||
render_doc_node(&mut f, &node)?;
|
render_doc_node(&mut f, &node)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(f)
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue